XMLGrundernaXML filer
[ Hem ] Allmänt ASP XML SQL ADO HTML CSS VB Java Design Karta
Grunderna XSL Dynamiska sidor XML i praktiken

XML filer

XML filens uppbyggnad -tags (noder)

En xml fil som används för att uttrycka samma produktinformation som ASCII filen i föregående kapitel kan tänkas se ut på följande sätt

xml2.xml

<?xml version="1.0"?>
<products>
   <product>
     <code>ABC</code>
     <price>122</price>
     <amount>4</amount>
   </product>
   <product>
     <code>XYZ</code>
     <price>133</price>
     <amount>1</amount>
   </product>
   <product>
     <code>QDW</code>
     <price>500</price>
     <amount>40</amount>
   </product>
   <product>
     <code>MM</code>
     <price>21</price>
     <amount>1</amount>
   </product>
</products>
Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken

En van HTML kodare känner delvis igen sig, såtillvida att XML är ett tag-baserat system. Dokumentet har alltid en rot nod, i detta fall products som alla andra element måste finnas under. Jämför gärna med HTML systemet som har en rotnod som heter html. Till skillnad från HTML så har dock XML inga speciella regler för vad tagsen skall heta. Detta kan vid första anbllicken verka som en mardröm för den som haft svårt att lära sig de vanligaste HTML tagsen - XML är alltså ett system där man kan hitta på siina egna tags vartefter. Fullt så illa är det dock inte som vi skall se senare...

XML filens uppbyggnad -attribut

Ovanstående fil innehåller inte mer information än motsvarande ASCII fil. En orsak till detta är att den inte innehåller några attribut (metadata - data om datat). Nedan kommer en variant där vi förutom tagsen har gett dessa attribut. För priset finns det ett valuta-attribut, för antal vinns det ett attribut som beskriver måttenheten.

xml2_2.xml

<?xml version="1.0"?> 
<products>
   <product>
     <code>ABC</code>
     <price currency="eur">122</price>
     <amount unit="kg">4</amount>
   </product>
   <product>
     <code>XYZ</code>
     <price currency="fim">133</price>
     <amount unit="units">1</amount>
   </product>
   <product>
     <code>QDW</code>
     <price currency="eur">500</price>
     <amount unit="ton">40</amount>
   </product>
   <product>
     <code>MM</code>
     <price>21</price>
     <amount unit="kg">1</amount>
   </product>
</products>

Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken

Troligtvis sitter nu någon och suckar: "Inte nog med att man kan hitta på egna tags - man får hitta på sina egna attribut dessutom - vilken mardröm!" Fullt så illa är det inte.

En till många relationer i en XML fil

En XML fil kan även uttrycka en till många relationer utan problem. Se nedanstående kodfragment ur en XML fil:

xml2_3.xml

<?xml version="1.0"?> 
<records>
   <record>
     <artist>Santana</artist>
     <title>Supernatural</title>
     <songs>
       <song length="5.51">(Da Le) Taleo</song>
       <song length="5.48">Love Of My Life</song>
       <song length="4.47">Put Your Lights On</song>
       <song length="4.40">Africa Bamba</song>
     </songs>
   </record>
</records>



Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken

Vi ser tydligt en till många relationen - en skiva har många låtar

Datat består av en rot: records
En records fil består av ett antal record noder
En record nod betår av en artist nod, en title nod och en songs nod
En songs nod består av ett antal song noder
En song nod har ett attribut (length) som säger hur lång låten är

Noder eller attribut?

Det är inte alltid givet vad som är noder och vad som är atribut. Nedan kommer en annan variant på samma tema som ovanstående:

xml2_4.xml

<?xml version="1.0"?> 
<records>
   <record>
     <artist>Santana</artist>
     <title>Supernatural</title>
     <songs>
       <song>
         <length>5.51</length>
         <title>(Da Le) Taleo</title>
       </song>
       <song>
         <length>5.48</length>
         <title>Love Of My Life</title>
         <featuring>Dave Metthews</featuring>
       </song>
       <song>
         <length>4.47</length>
         <title>PutYour Lights on</title>
         <featuring>Everlast</featuring>
       </song>
     </songs>
   </record>
</records>


Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken

En tumregel man kan använda är att om det bara finns några få alternativ, t.ex. FIM eler EUR, så kan man sätta dessa som attribut eftersom detta förenklar valideringen av XML filen.

Om Det finns många olika alternativ kan man görna tänka sig:
"Är detta ett datavvärde eller en förklaring till ett datavärde?".
Om svaret är en förklaring sätter man detta som attribut i annat fall som en nod i XML filen.

 

  GrundernaMer om XML filer
Grunderna
XML filer
Mer om XML filer
Datat i XML
Validering
DTD
Studera själv på nätet
Mer om ELEMENT
Mer om ENTITY
Mer om ATTLIST
Rekursivt data
Övningar
Som nästa...


Top
< Grunderna Mer om XML filer>
© Anders Enges, Vörå 2002  | 29.09.01 18:54 Visa asp koden