Källkoden för /anders.enges/xml/xml11.asp
<!--#include file="../inc/navstuff.asp" -->
<h4>Med betoning på ID, IDREF och IDREFS</h4>
<p>Tag en titt på nedanstående lilla XML fil:</p>
<%  show "xml11_1.xml" %>
<p>Inga problem att tolka, eller hur. Problemet är att det fattas en hel
   del information...</p>
<p>Vi kan enkelt härleda följande information om personerna</p>
<ol>
   <li>Kain och Abel är bröder</li>
   <li>Eva och Adam är föräldrar till Kain och Abel</li>
   <li>Kain och Abel är söner till Adam och Eva.</li>
   <li>Eva är fru till Adam</li>
   <li>Adam är man till Eva</li>
</ol>
<p>Problemet är att få in den informationen i XML filen. En möjlighet
   skulle kunna vara:</p>
<p>
   <%  show "xml11_2.xml" %>
</p>
<p>Detta metod fungerar och är visserligen valid XML, men verkar det vettigt?
   En hel del data kommer flera gånger i olika sammanhang. Vi har fått
   det som databasplanerare hatar: redundans.</p>
<p>Tag istället en titt på följande variant, där datat lagras
   utan redundans och där relationerna mellan personerna istället anges
   som attribut.</p>
<p>
   <%  show "xml11_3.xml" %>
</p>
<p>Detta skall inte förväxlas med "vanliga" attribut. Följande
   fil är helt valid XML men attributen har ingen inbyggd, "större",
   betydelse i XML, utan är bara vanliga attribut som vi får göra
   vad vi vill med. </p>
<p>
   <%  show "xml11_4.xml" %>
</p>
<h4>Skillnaden mellan attribut och ID</h4>
<p>Ett attribut är "bara" extra information som vi vill ha i noden.
   Ett ID betyder en relation mellan noderna.</p>
<p>Detta märks tydligt om vi jämför följande varianter:</p>
<p>Denna är valid XML - med attribut</p>
<p>
   <%  show "xml11_5.xml" %>
</p>
<p>Medan denna inte är valid - med ID</p>
<p>
   <%  show "xml11_6.xml" %>
</p>
<p>Den senare är inte valid eftersom vi hänvisar till en IDREF (referens)
   som inte finns i filen.</p>
<p>Varför... Jo</p>
<p>ID, IDREF och IDREFS används för att beteckna relationer mellan noder.</p>
<h4>ID</h4>
<p>Ingenting hindrar oss från att döpa ett "vanligt" attribut
   till id, och använda det i vår XML fil. Vi kan då använda
   detta attribut till vad vi vill.</p>
<p>Om vi däremot definierar ett id på följande sätt så
   är den uttryckligen ett ID, det räcker inte med att den heter id:</p>
<div class="code"><!ATTLIST nodens_namn id <b>ID</b> #REQUIRED></div>
<p>Den måste inte ens ha namnet id, den måste <b>vara</b> ett ID.
   Följande är helt möjligt:</p>
<div class="code"><!ATTLIST nodens_namn personid <b>ID</b> #REQUIRED></div>
<p>Id måste, självklart, vara unika. Gämför gärna med
   nyckelfält (<b>primary keys</b>) i databaser.</p>
<h4>IDREF</h4>
<p>IDREF betyder en hänvisning till ett ID. Jämför gärna med
   databasbegreppet <b>foreign key</b> (sorry vet inte vad det heter på svenska)
   i en EN-TILL-EN relation. En person har EN mor och EN far, åtminstone
   var det så när jag var liten. Personen har då en IDREF till
   moderns ID och en IDREF till faderns ID. </p>
<h4>IDREFS</h4>
<p>En IDREF betyder en till många relation. Den fungerar som en vanlig IDREF
   mend kan innehålla flera ID. En person kanske bara har en mor och en far,
   men kan ha många syskon. Syskonen (siblings) ger då en en till många
   relation inom filen.</p>
<h4>Ett till exempel på ID, IDREF och IDREFS</h4>
<p><a name="EXEMPEL"></a>Länder och städer:</p>
<p>
   <%  show "xml11_7.xml" %>
</p>
<p>Se även <a href="xml_ex2.asp">xml_ex2.asp</a> där jag visar hur
   man kan formatera data med XSL</p>
<p> </p>
<p>
   <!--#include file="../inc/footer.asp" -->
</p>