<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="uppgiftx.xsl"?>
<uppgift>
<occation>TLS - Grundläggande XML och CSS - 17-18/03/03</occation>
<rubrik1>XML - uppgift 1</rubrik1>
<rubrik2>Ett välbyggt XML-dokument</rubrik2>

<instruktion>
Den här uppgiften går ut på att du skall skapa en fil som är 
ett välbyggt XML-dokument. Innehållet i dokumentet skall vara någon 
typ av förteckning, vad det är du vill förteckna väljer du själv. 
Det kan vara t ex en bibliografi, en lista över dina 
CD-skivor, de filmer som din favoritregissör ligger bakom, eller en 
adresslista över dina vänner. Finessen med XML är ju just att du själv kan 
bestämma vilka element du skall använda dig av och vad de skall heta. Huvudsaken är 
att du har med uppgifter på olika hierarkiska nivåer, dvs att elementen skapar ett slags 
trädstruktur.
</instruktion>
<instruktion>
I övningarna <länk mål="uppgift2.xml">2</länk> och <länk mål="uppgift3.xml">3</länk> 
kommer du sedan att skapa en DTD som styr hur ditt 
XML-dokument tolkas, samt under morgondagen att förse dokumentet med en formatmall i 
<länk mål="http://www.adm.hb.se/personal/mg/tls/preface.htm">CSS</länk> så att 
du kan styra hur det presenteras på skärmen. Det du åstadkommer i den här första 
övningen har nämligen endast med innehållets struktur och semantiska betydelse 
att göra och kommer bara att visas som en trädstruktur i webbläsaren. Kom ihåg 
att du måste arbeta i IE 5.0 eller senare - annars kan du för övrigt inte heller se den här 
webbsidan som är skriven i ett xml-språk.
</instruktion>
<instruktion>
Precis som med HTML så kan man skapa ett XML-dokument (en <term>dokumentinstans</term> i XML) i vilken enkel textredigerare 
som helst. Börja därför med att öppna ett nytt fönster i Notepad och spara det i 
en ny mapp som t ex xmltest.xml. Du kan naturligtvis döpa filen till vad du vill, 
men den skall ha extensionen .xml. (Undvik dock mellanslag, svenska specialtecken och 
alltför långa namn). Det första du nu skall göra är att ange för 
webbläsaren att den läser ett xml-dokument. Det gör du genom att överst på sidan skriva:
</instruktion>
<kommentar>
deklarera xml
</kommentar>
<exempel>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;
</exempel>

<emfas>Tänk på att XML gör skillnad mellan gemener och versaler, så använd alltid 
samma i märkena och var noggrann när du skriver av instruktioner.</emfas> 
<kommentar>
felmeddelanden<nyrad/>
i IE 5.x
</kommentar>
<instruktion>Ett XML-dokument 
måste per definition vara välbyggt, vilket i praktiken innebär att IE 5.x/6.x inte accepterar 
några felaktigheter i koden (vilket ju ofta är fallet när det gäller HTML-filer). 
IE 5.x/6.x kontrollerar alltså automatiskt syntaxen i ditt XML-dokument och om dokumentet inte är välbyggt 
ger webbläsaren dig dessutom tips om vad som är fel. Titta därför lite extra noga på de 
eventuella felmeddelanden du får.<nyrad/>
Du har nu angett att dokumentet följer W3Cs regler för XML 1.0 och att det följer 
den ISO-standard som kallas Latin-1 och som bl a inkluderar stöd för å, ä och ö. 
Så länge du anger denna standard efter <term>encoding</term> behöver du alltså inte bry dig 
om att konvertera dessa tecken till teckenkoder. För att (den amerikanska) XML-validatorn 
i uppgift 2 skall kunna tolka dokumentet korrekt kan det emellertid vara bra att undvika 
användningen av å, ä och ö i XML-märkena. 
</instruktion>
<rubrik2>Innehåll</rubrik2>
<instruktion>
Nu skall du fylla på med innehållet i dokumentet. Som övningsexempel väljer vi att 
skapa en bibliografi, men som nämndes ovan kan du naturligtvis kalla elementen för 
vad du vill, så länge det inte innehåller några mellanslag. Undvik även punkt (.), 
understreck (_) och siffror först i element-namnet.<nyrad/>
Det första vi gör är att skapa ett sk <term>rotelement</term>. Det är motsvarigheten till 
det &lt;html&gt;-element som omger ett HTML-dokument, och även här skall startmärket ligga 
först i dokumentet (men efter xml-deklarationen) och slutmärket ligga sist. 
</instruktion>
<kommentar>
skapa ett rotelement
</kommentar>
<exempel>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;<nyrad/>
&lt;bibliography&gt;<nyrad/>
&lt;/bibliography&gt;
</exempel>
<instruktion>
Sedan skall du bestämma dig för vilka uppgifter som skall finnas med. Till bibliografiexemplet 
väljer vi författare, titel, utgivningsort, förlag, utgivningsår, sidantal, upplaga och 
ISBN-nummer. Varje post kallar vi för &lt;book&gt;. Den första uppgiften vi lägger in kommer 
då att se ut på följande sätt:
</instruktion>
<exempel>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;<nyrad/>
&lt;bibliography&gt;<nyrad/>
&lt;book&gt;<nyrad/>
&lt;author&gt;Petter Åström&lt;/author&gt;<nyrad/>
&lt;/book&gt;<nyrad/>
&lt;/bibliography&gt;
</exempel>
<instruktion>
Om vi nu fortsätter att fylla på med uppgifter kommer posten till slut att se ut så här:
</instruktion>
<kommentar>
skapa ett antal poster <nyrad/>
innuti dokumentet<nyrad/>
&lt;bibliography&gt;
</kommentar>
<exempel>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;<nyrad/>
&lt;bibliography&gt;<nyrad/>
&lt;book&gt;<nyrad/>
&lt;author&gt;Petter Åström&lt;/author&gt;<nyrad/>
&lt;title&gt;XML : Extensive Markup Language&lt;/title&gt;<nyrad/>
&lt;place&gt;Stockholm&lt;/place&gt;<nyrad/>
&lt;publisher&gt;Docendo&lt;/publisher&gt;<nyrad/>
&lt;year&gt;1999&lt;/year&gt;<nyrad/>
&lt;pages&gt;269 s.&lt;/pages&gt;<nyrad/>
&lt;edition&gt;1:a uppl.&lt;/edition&gt;<nyrad/>
&lt;ISBN&gt;91-7882-497-4&lt;/ISBN&gt;<nyrad/>
&lt;/book&gt;<nyrad/>
&lt;/bibliography&gt;
</exempel>
<instruktion>Som du märker så omges de flesta element i XML med en start- 
och en sluttagg, vilket vi känner igen från HTML. </instruktion>
<instruktion>
Fortsätt sedan att skapa några poster till. Du har nu åstadkommit ett dokument med en 
hierarkisk trädstruktur, som förmodligen något liknar den som illustreras nedan.
<banner fil="trad1.gif"/>
</instruktion>
<emfas>
Var noga med att "nästa" (nest) start- och slutmärken på ett korrekt sätt när du skriver 
dina XML-dokument, eftersom de annars inte kommer att accepteras av webbläsaren.
</emfas>
<instruktion>
Välj nu ut ett eller ett par element som kan delas upp och specificeras ytterligare, t ex 
författarnamnet. Fundera också lite kring vad man kan vinna på att så detaljerat som möjligt 
beskriva varje uppgift i posten (dokumentet).
</instruktion>
<instruktion>
Vi tänker oss nu att vi vill kunna ange vilket språk som titeln är skriven på. Det är ju en 
uppgift som lämpligen kan ligga tillsammans med själva titeln, ett slags bestämning till denna. 
(Det finns ju heller ingen garanti för att hela boken är skriven på detta språk.)
Vi introducerar därför ett attribut som heter &quot;language&quot; och låter det ingå i 
&lt;title&gt; på samma sätt som ett attribut i HTML.
</instruktion>
<kommentar>
infoga ett attribut
</kommentar>
<exempel>
&lt;title language="engelska"&gt;XML - Extensive Markup Language&lt;/title&gt;
</exempel>
<kommentar>
tomma element
</kommentar>
<instruktion>
Som du vet konstrueras <term>tomma element</term> utan slutmärke. Exempel på tomma 
element i HTML är &lt;IMG&gt;, &lt;HR&gt; och &lt;BR&gt;. I XML måste man markera att 
ett element är tomt, annars kommer det program som skall tolka filen att fortsätta leta 
efter ett slutmärke som inte finns, vilket resulterar i att filen inte bedöms som välbyggd. 
Att elementet är tomt markerar man i XML genom att sätta ett snedstreck (/) sist i märket, 
t ex &lt;nyrad/&gt;. (Observera att detta exempel kanske inte är det bästa tänkbara, med tanke 
på att det är presentationsinriktat och därigenom egentligen bryter mot grundtanken med XML 
så som vi försöker förmedla den. Problemet med flera tänkbara exempel på tomma element, t ex 
att infoga bildfiler, är emellertid att de kräver mycket avancerade instruktioner i DTDn, vilket vi gärna 
vill undvika i det här sammanhanget. 

<nyrad/>
Fundera på om du kan komma på ett lämpligt tomt element att infoga i ditt dokument!
</instruktion>
<rubrik2>
Kontrollera dokumentets syntax
</rubrik2>
<instruktion>
Till slut skall du kontrollera att ditt xml-dokument är välbyggt. Egentligen är detta 
ju redan gjort i och 
med att IE 5.x kontrollerar syntaxen i dokumentet. Men du kan även, om du har ditt dokument 
sparat på en webbserver och alltså har en URL till den, använda XML.coms  
<länk mål="http://www.xml.com/pub/a/tools/ruwf/check.html">syntax checker</länk>. Möjligheten att kopiera in sin 
XML-uppmärkta text finns också. 
(Du kan testa detta idag, om du vill.)
</instruktion><kommentar>
fler uppgifter
</kommentar>
<instruktion>Bygg nu på din förteckning med fler poster, skapa en ny förteckning, eller välj en texttyp 
(t ex sånger, dikter, e-brev, protokoll eller liknande) och skapa lämpliga element för att märka upp texter av denna typ. 
</instruktion>

<länk mål="uppgift2.xml">Uppgift 2</länk>


<linje/>


<metadata>Uppdaterad: 2003-03-11<nyrad/>
<länk mål="mailto:helena.francke@hb.se">Helena Francke</länk></metadata>

</uppgift>
