www.Deserveit.se >
Berörda ämnen
GrundkurserAndra artiklar inom samma ämne
Webbstandard, introduktion, Grafisk profil, Kundservice på nätet, Effektiv kommunikation, Html, elementformat grundkurs, Webbordlista, Introduktion till webben, Hur man installerar Windows XPXML grundkurs
Tillbaka till artiklarInnehållsförteckning
Vad är XML?En form av lagringXML är ett format, inte ett språkNästan som HTMLXML är faktiskt inget kompliceratSyfte: Vad har man XML till?DokumentformatVissa likheter med Word- och Excel-dokumentHierarkisktIndenteringXML ersätter inget och har ingen omedelbar funktionErsätter inte HTMLXML gör ingenting, ingen prestationSmå och användarvänliga databaserINTE stora datamängderElementRegler för elementInledningRotelementDags att öka på med nya element!Nya husdjur under respektive kategoriTomma element kan förkortas!Dina element kan ha helt skilda namnLagra data i dina elementAttributHur, var och när attributs skrivsRegler för attributExempelXML - dokumentdeklarationTack för din tid
Vad är XML?
En form av lagring
XML är en förkortning och står för eXtensible Markup Language och är ett format anpassat för att lagra / beskriva data. I en XML-fil kan du mycket väl presentera ert kundregister, ert produktsortiment inklusive specifikationer eller din privata DVD-samling.XML är ett format, inte ett språk
XML bör inte jämföras med ett programmeringsspråk, utan snarare med t.ex. ett Excel-dokument. XML är ett format, ett sätt att skriva dokument på och inte ett programmeringsspråk eller en vetenskap.Det finns dock lite man bör känna till om XML, men själva användandet är tydligt och logiskt, även enligt totala nybörjare.
Nästan som HTML
Den som behärskar HTML kommer inte ha mycket att lära sig i denna artikel, men den som är lite ringrostig eller som aldrig riktigt har förstått detaljerna kommer att få en del matnyttigt! HTML bygger på element och attribut, vilket XML också gör. Den stora skillnaden är att HTML har förbestämda element och attribut och att man i XML definierar sina egna.XML bygger på precis samma principer som HTML i sin grundform dock med lite hårdare regler.
XML är faktiskt inget komplicerat
Det är vanligt att folk tror att XML är något komplicerat. Detta är troligen för att XML förr har varit ett ganska okänt begrepp samt att det ofta förväxlas med programmeringsspråk.Det är inte bara en eller två gånger jag har stött på reaktionen "nej, vad drygt, då måste jag ju lära mig XML".
Därför ska jag nu ta på mig arbetshandskarna och ta min del av ansvaret att lära upp mina medmänniskor!
Syfte: Vad har man XML till?
Dokumentformat
Vissa likheter med Word- och Excel-dokument
XML är ett dokumentformat. Ett XML-dokument är ungefär som vilket annat dokument som helst - men det är tänkt att användas för att lagra / beskriva data, lite som t.ex. kalkylblad i Microsoft Excel. Till skillnad från Excels kalkyler är XML inte i tabellform (kolumner och rader), utan påminner snarare mer om Word-dokument eftersom allt skrivs i ett enda dokument, inga celler eller andra konstigheter.Hierarkiskt
XML är ett system som i ovanligt stor grad är hierakiskt. Med detta menar man att ett element har ett annat inuti sig, eller "äger" ett annat om man föredrar att uttrycka sig så. Din kropp äger huvud, armar, ben och dina armar äger dina händer, och dina händer äger fem fingrar och dina fingrar äger en varsin nagel och några leder. Jorden har Europa, Europa har Sverige, Sverige har Stockholm, Stockholm har massor av människor och hus.Du kan också föreställa dig en katalogstruktur. Katalogen "Bilder" har "Familjen", "Djuren" och "Blommor" - detta är grundprincipen bakom XML.
Ungefär såhär skulle exemplet med kroppen kunna återskapas i ett XML-dokument:
Även om du inte förstår själva koden så kan du nog i stor grad läsa dig till själva innehållet.
Indentering
Lägg märke till mellanrummet till vänster om alla element (kropp, arm hand etc). Ju större mellanrum desto djupare i hierarkin finns elementet. Detta mellanrum har ingen praktisk funktion, utan de är bara till för att öka läsbarheten.Det finns olika typer av indentering för olika smak, men detta är den mest populära och enligt oss den bästa.
Se här hur samma XML-kod med precis samma innehåll blir i princip helt oläslig utan indentering och med idiotisk radbrytning.
Du ser - hierarkin är helt oläslig om man inte indenterar och radbryter rätt.
Detta är en av styrkorna med XML - det är mycket lättläst förutsatt att man indenterar rätt och döper saker och ting på ett smart sätt!
XML ersätter inget och har ingen omedelbar funktion
Ersätter inte HTML
XML är ingen ersättare till HTML vilket många har fått för sig. XML och HTML tjänar inte samma syften, och XML förekommer på många andra ställen än just webben.XML finns för att lagra data, HTML finns för att presentera data. Däremot kan XML och HTML gärna kombineras med varandra. XML kan kombineras med i princip alla tekniker och programmeringsspråk på grund av sitt extremt flexibla format. XML förekommer väldigt mycket på dagens webbplatser, i spel till både PC och blandade konsoller, MP3-spelare och mobiltelefoner etc.
XML gör ingenting, ingen prestation
XML gör ingenting. Du kan inte få XML att skriva ut en text, du kan inte programmera i XML - du kan bara fylla ditt XML-dokument med information.XML har aldrig varit tänkt att göra något - utan är bara tänkt att vara en form av struktur, en lagringsmetod.
Små och användarvänliga databaser
XML är perfekt för att lagra inställningar för en applikation, eller ett kund/produkt -register eller som annan mindre databas. Som vi tidigare nämnde är en av XMLs huvudsakliga styrkor överskådligheten och läsbarheten - den ska man alltid försöka behålla, för om dessa egenskaper inte är intressanta så finns det i regel bättre format med andra styrkor.INTE stora datamängder
Något som väldigt många, även proffs har missat är att XML inte är tänkt att användas för stora datamängder.XML och hela dokumentstrukturen har aldrig varit tänkt att användas för flera miljarder element, filerna blir jättestora och sökningen i filerna tar lång tid. och applikationen blir väldigt minneskrävande.
Användbarheten går i botten. XML är till för små datamängder och kommer att vara snabbt och effektivt så länge man inte gör filerna för stora. 10.000 element fungerar vanligtvis utmärkt, men även detta är en mycket stor XML-fil och är i mångas ögon redan där för stor.
Om man ska lagra stora mängder så finns det bättre alternativ såsom traditionella databasmodeller i stil med MySQL, Access, MsSQL, Oracle m.fl. Mer om detta kanske vi berättar i en annan artikel, tills vidare hänvisar vi till google och w3schools.
Element
Regler för element
Ett element består av en starttagg och en sluttagg *. Varje element som öppnas måste stängas. Varje element har ett namn, och både start- och sluttaggen använder detta namnet för identifikation.Ett namn bör inte innehålla andra tecken än bokstäver och siffror. Inledande siffror bör alltid undvikas.
Mellanslag (whitespace i allmänhet) får inte förekomma i elementnamnet, för då blir texten efter mellanslaget att se ut som ett attribut.
*: Tomma element kan bestå av en enda tagg istället för två, demonstration kommer längre ner.
Inledning
XML består av element, precis som HTML.Ett element kan se ut såhär
Det ni ser här är ett element, som heter mina_husdjur. Det krävs två taggar för ett element, en starttagg och en sluttagg.
Sluttaggen har ett slash (/) precis innan namnet börjar.
Alla element som öppnas måste också stängas, annars blir det fel. Om man har flera element som öppnas så måste de också stängas i rätt ordning, detta blir dock jättetydligt snart.
Låt säga att vi har massor av husdjur och vill kategorisera dem efter art, då kan vi ge mina_husdjur några barn, eller "childs" som det vanligtvis kallas.
Här ser vi alltså att mina_husdjur har fått två element inuti sig (mellan start- och sluttagg). Dessa element är katter (startagg och sluttagg), och hundar (startagg och sluttagg).
Båda dessa är alltså barn (childs) till mina_husdjur och katter och hundar är syskon (sibblings) med varandra samt att de båda har mina_husdjur som förälder (parent).
Det är jätteviktigt att man håller koll på begreppen här för att förstå hierarkin.
Låt oss konstatera några saker:
- mina_husdjur ligger på "nivå ett" - alltså i "roten" som det heter, alltså inte inuti något annat element.
- mina_husdjur har två element mellan sin start- och sluttagg, dessa heter katter och hundar, som har en varsin start och sluttagg.
- katter och hundar ligger båda direkt under mina_husdjur och därmed på samma nivå, därför är de syskon (sibblings).
- På grund av ovan nämnda orsak är de också båda barn till mina_husdjur (childs).
- Elementet som ligger direkt ovanför ett annat i hierkin kallas förälder (parent). Om B är barn till A så är A Bs parent.
Rotelement
I XML måste man ha endast ett element på den djupaste nivån (mina_husdjur). Detta element är nu ensamt på första nivån, och så måste det förbli. Vi får alltså inte ge mina_husdjur ett syskon - i så fall måste vi lägga dem inuti en ny parent först - som innehåller dessa två. Det är alltså viktigt att man bara har ETT (1) rotelement.Alltså, detta är godkänt:
Detta är INTE godkänt:
Däremot skulle detta vara godkänt om man nu ska lista både husdjur och bilar
Vad har första och tredje exemplet gemensamt? Jo - de har bara ett element på rotnivån, och andra exemplet har två, vilket inte är godkänt enligt standarden.
Vi förutsätter nu att det som visas ovan är den fullständiga xml-filen.
Dags att öka på med nya element!
Nya husdjur under respektive kategori
Nu tror jag det är dags att vi lägger in några husdjur, gud så vackert!Vad ser vi här? Jo, vi har tre katter och två hundar som är placerade under respektive parent. De behöver inte ha en varsin parent, de kan mycket väl ligga huller om buller direkt under mina_husdjur, men ofta kan man vinna mycket på att kategorisera. Men det hade absolut inte varit "fel" att göra såhär:
Men vi vill inte lära er att ha dålig ordning i era databaser! Därför föregår vi med gott exempel och har det fint och prydligt i våra databaser!
Tomma element kan förkortas!
Nu har du lärt dig att ett XML-element har en start- och en sluttagg. Det är helt sant - men inte hela sanningen.Ett element som inte har några childs (andra element inuti sig) kan förkortas så att du bara behöver skriva en tagg, men med en lite speciell avslutning, såhär fungerar det:
Den modellen du redan har lärt dig:
katt innehåller ju inga element och kan därför förkortas till en tagg istället för två:
Det vi gör är att vi tar bort sluttaggen och lägger ett mellanslag följt av ett slash precis innan starttaggen avslutas. Mellanslaget kan ofta anses vara valfritt, men det tillhör god programmeringssed att använda det, även om många slarvar med det. Vi satsar på att du ska bli en expert, ett levande facit - därför ska du göra som vi säger och använda mellanslag!
Nu har vi alltså "optimerat bort" lite onödig kod, perfekt, se här hur vi kan optimera vårt tidigare exempel:
Före:
Efter:
Som du ser är bara de tomma elementen förkortade, andra element kan av logiska skäl inte förkortas, för det måste ju definieras vilka element som tillhör vad, och börjar man ta bort avslut av andra element så ser vi snart att strukturen faller i bitar och dokumentet blir så att säga trasigt.
Dina element kan ha helt skilda namn
Det bör också nämnas att det inte finns någonting som säger att alla dina element måste heta samma sak bara för att de fungerar på samma sätt. Detta leder till att man ibland kan ersätta det gemensamma elementnamnet med något som annars vore ett attribut. Du döper ju naturligtvis dina element till det du anser passar bäst, och du kommer säkerligen utveckla en egen stil med tiden.Lagra data i dina element
Det kanske börjar bli dags att lägga lite innehåll i elementen också? Ja det tycker vi.Du har nu kanske fått grepp om att element kan innehålla andra element, det är ett första steg. Men element kan även innehålla värden, t.ex. siffror eller ren text, såhär:
Texten inuti historia-elementet kallas "värde". Värdet anses rent tekniskt vara ett child till dess ägare, även om man normalt inte uttrycker det så.
Du kan ha några ord, några rader eller ett fullständigt dokument inuti ett element. Det finns inga nämnvärda begräsningar (inga du lär stöta på i alla fall).
Du kan naturligtvis också kombinera värden och child-element parallellt på detta sätt:
Här ser vi att inuti song-elementet finns ett element title som innehåller låtens namn, samt att vi har låtens text som ligger parallellt med title.
Men nu är det dags att presentera ett alternativt sätt att lagra data, som ofta både är mer praktiskt och överskådligt!
Låt oss gå vidare till attribut!
Attribut
Attribut känner vi också igen från HTML. Attribut används för att koppla ytterligare information till ett element och skrivs inuti elementets starttagg.Vad vill vi lagra om våra husdjur? Vad sägs om namn och ålder? Perfekt! Vi väljer att skriva på engelska också, vilket enligt min borde vara regel för all typ av kod. Det blir så mycket enklare då, och man slipper problemen med ÅÄÖ som man bör undvika i alla former av programmering då de ofta ställer till det lite.
Vi skapar härmed två attribut, och vi kallar dem name och age.
Hur, var och när attributs skrivs
Ett attribut tillhör alltid ett element. Se det som tillhörande information som rör elementet.Antalet attribut är valfritt, man kan ha noll, ett, fem eller 100. Att ha fler än 100 kan nog börja bli riskfyllt för eventuella system som ska hantera dessa attribut kan ha begränsningar.
Attributen skrivs efter elementets namn, med ett mellanslag (eller annan whitespace) som distans. Ett attribut måste alltid ha ett värde, och värdet skrivs emellan två citattecken och efter ett likhetstecken.
Om man sedan sätter mellanslag eller liknande mellan attributnamn och värde etc är helt valfritt - vi använder både med och utan mellanslag i exemplet ovan.
Regler för attribut
Varje attribut- måste ha ett värde. Om det ska vara tomt så skriver man ""
- får bara bestå av ett fysiskt ord, inga mellanslag tillåts
- får bara ha vanliga a-z, A-Z och 0-1 som tecken i namnet och bör ej inledas med siffror. Attributets värde får dock ha vilka tecken som helst!
- får bara förekomma EN GÅNG PER ELEMENT, du får alltså inte ha två color i samma element, men det vill man ju normalt inte heller
Exempel
Låt oss ge våra husdjur namn och ålder!Det finns ingenting som säger att alla dessa element behöver ha samma attribut. Katterna kan ha helt andra attribut än hundarna, samt att man för den delen kan ha helt olika attribut för varje enskilt element.
Låt säga att en av katterna har tävlat, då kan det se ut såhär:
Det går också att ta konceptet längre om det ska matas in mer information kring tävlingarna. Låt säga att vi vill ha separerade attribut för olika parametrar för tävlingen; då kan man göra ett child-element till katt som innehåller enskilda tävlingselement, med flera enskilda attribut, t.ex. såhär:
Du bestämmer själv vilka element som ska ha attribut och vilka attribut de ska ha. Det finns alltså inget som säger att alla dina element måste ha lika attribut, bara för att elementen t.ex. har samma namn. Men ofta ser det lika ut t.ex. pga att informationen är genererad av en dator. Då blir det ofta väldigt många likheter mellan objekten.
XML - dokumentdeklaration
Något som också är viktigt om XML-filerna ska skrivas och läsas via automatik är att man lämnar en liten notis i dokumentet som berättar vad det är för något och hur det ska tolkas. T.ex. finns det ju en mängd olika teckentabeller, vissa tillåter Svenska tecken, vissa gör inte, vissa tillåter Kinesiska tecken, andra gör inte.Man berättar också vilken version av XML man använder, då XML precis som det mesta annat utvecklas med tiden och får nya möjligheter och versionsnummer.
Därför måste man förklara i dokumentet vad det är för format som vi använder, så att inte mottagaren tolkar texten fel. Detta är normalt inget märkvärdigt och man kan ofta kopiera denna lilla "notis" från någon XML-fil man har skrivit förut, eller från nätet.
Själva notisen är strikt och måste anges på rätt sätt så att maskinerna vet hur den ska tolkas, den ser ut ungefär som ett vanligt XML-element, men med vissa skillnader.
Det är en kort inledningstagg som man skriver först i XML-dokumentet och är bara till för maskinen som ska ta emot texten, mänsliga läsare bryr sig normalt inte.
Ett exempel på hur en sådan kan se ut (och ofta ser ut):
Inled bara dokumentet med denna rad så klarar du dig i regel bra.
Om du vill förstå mer om xml så finns mer information på nätets bästa kunskapskälla för webb, http://www.w3schools.com/xml/default.asp.
Tack för din tid
Det var allt för den här gången. I framtiden planeras artiklar som behandlar användande av XML i olika programmeringsspråk. Då ska vi visa hur man kan få ett program att läsa innehåll från XML-filer samt hur man skriver nytt innehåll, både lägger till i befintliga filer samt genererar nya från grunden.Vi planerar också att berätta lite om smarta användningsområden. Själv använder vi XML till mycket, både på och utanför webbplatsen.
Gå till toppen
Skrivet och publicerat av: Tobias Wetterskog
Datum: 070515
Senast ändrad: 071003