Källkoden för /anders.enges/xml/xml1.asp
<!--#include file="../inc/navstuff.asp" -->
<h4>Varför XML?</h4>
<p> Tänk er följande situation:<br>
   <br>
   Vi sänder ett e-mail till ett företag. Mailet innehåller följande:</p>
   <p>
<table width="400" border="1" cellspacing="0" cellpadding="20">
   <tr>
     <td>Med anlednig av er offert den 2.2.2001 vill vi köpa 30 stycken av
       produkten XXX. Vi föväntar oss leverans inom tre veckor.<br>
       <br>
       mvh<br>
       Ben Boss<br>
       Firma AB</td>
   </tr>
</table>
<p>Detta mail är inget problem att tolka, men hur gör vi ett program
   som kan tolka detta åt oss? Kommunikation sker nuförtiden ofta mellan
   datorer, och datorer är som bekant korkade...</p>
<p>För att kunna sända information som skall kunna tolkas maskinellt,
   så måste informationen vara strukturerad efter ett visst bestämt
   schema. En möjlighet att få en bestämd struktur på datat
   är XML.</p>
<h4>Men finns det inte redan system för detta?</h4>
<p>Jo, datorer har länge kommunicerat och EDI system har väl funnints
   i åtskilliga år men de flesta system har problem. En möjlighet
   som finns är ASCII filer, uppställda efter ett visst system. En annan
   möjlighet är databaser. Bägge dessa har dock vissa bakomliggande
   brister. </p>
<h4>ASCII</h4>
<p>Man kan sända relativt avancerat data med en komma eller tab separerad
   ASCII fil. Nedan visas ett exempel på detta:</p>
<p>
<table border="1" cellspacing="0" cellpadding="10" width="300">
   <tr>
     <td><b>Produkt</b></td>
     <td><b>Pris</b></td>
     <td><b>Antal</b></td>
   </tr>
   <tr>
     <td>ABC</td>
     <td>122</td>
     <td>4</td>
   </tr>
   <tr>
     <td height="22">ZYX</td>
     <td height="22">133</td>
     <td height="22">1</td>
   </tr>
   <tr>
     <td>QWE</td>
     <td>500</td>
     <td>40</td>
   </tr>
   <tr>
     <td>MM</td>
     <td>21</td>
     <td>1</td>
   </tr>
</table>
<p>Problemet är att denna fil inte innehåller någon som helst
   information om vad kolumnerna innehåller, t.ex. vilken valuta är
   priserna i. Man brukar ibland kalla detta för metadata - d.v.s. data om
   datat. Visserligen kan man tänka sig att man lägger in en kolumn till
   som innehåller information om valuta men denna har inte en naturlig koppling
   till priskolumnen. Det skulle vara bättre att få in metadatat - attributen
   - direkt i kolumnen, men det går inte.</p>
<p>Ett annat problem som en ASCII fil har är att den är "fyrkantig".
   Alla som någon gång arbetat med databaser har stött på
   begreppet "en till många" (one to many), vilket betyder att
   en post kan vara relaterad till många andra. Vi kan t.ex. tänka oss
   information om en musik-CD. Den har en titel, en artist och ett antal låtar.
   Det finns således ett en till många relation mellan skiva och låtar.
   Hur skriver vi en ASCII fil som innefattar denna relation? En möjlighet
   är förvisso att sätta in 30 stycken extra kolumner för eventuella
   låttitlar, men hur intelligent är detta egentligen?</p>
<p>Vi måste således skippa ASCII filer om datat inte är "fyrkantigt"
   utan innehåller relationer. Ett annat problem är informationsinnehållet
   i kolumnrubrikerna som kan vara relativt bristfälligt.</p>
<h4>Databaser</h4>
<p>Databaser har oftarst inga problem med att hantera en till många relationer,
   men...</p>
<p>... hur sänder vi datat från en databas? Visserligen kan vi sända
   en Access mdb fil till en annan person, men detta förutsätter ju att
   mottagaren har tillgång till Access. Vi kan även sända en SQL
   script som skapar eller modifierar en befintlig databas i en SQL server, men
   hur villig skulle du vara att låta datorn automatiskt köra SQL script
   på din databas? Enda sättet är då att exportera datat
   till en ASCII fil och sända denna, men som vi redan konstaterat så
   har ASCII filerna sina begränsningar.</p>
<p>Problemet är således en-till-många relationer som inte är
   så lätta att uttrycka med traditionella metoder.</p>
<h4>Lösningen heter XML</h4>
<p>Lösningen heter XML - E<u>x</u>tensible <u>M</u>arkup <u>L</u>anguage
   - och denna sektion av dessa sidor kommer att göra ett försök
   att klargöra begreppen. En viss baskunskap i HTML kan vara användbar
   även om XML inte nödvändigtvis har någonting med Internet
   att göra.</p>

<!--#include file="../inc/footer.asp" -->