 Källkoden för /anders.enges/xml/xml11.asp
 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>