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