Introduktion til XML
Introduktion til XML Copyright © Lund & Bendsen
1
Introduktion til XML • • • • • • • • • • • • •
Hvad er XML og hvad kan XML bruges til? XML-syntaks: Elementer og tags XML-syntaks: Attributter XML-syntaks: Kommentarer XML-syntaks: Escapes (entities og CDATA) XML-syntaks: Declarations Wellformed XML XML-syntaks: XML namespaces Detaljer om begreberne relateret til namespaces XML vocabularies (XML applications) Overblik over schema languages og schemas Opsamling på sammenhængen mellem centrale XML-begreber Introduktion til XML Styrker og svagheder ved XML Copyright © Lund & Bendsen
2
Hvad er XML? • XML står for Extensible Markup Language – Med markup language menes et sprog, som er baseret på tags og attributter som det fx kendes fra HTML Fx: <tag attribute = ”…”> … </tag> – Ordet extensible skal signalere, at XML er et sprog, som man kan bygge videre på, og dermed bruge til at definere helt nye sprog.
• XML er altså et udvideligt markup-sprog, som man kan bruge til at definere nye markup-sprog med • Et markup-sprog, som er baseret på XML, kalder man for et XML Vocabulary. • XHTML er et eksempel på et XML Vocabulary (XTML er en XML-udgave af HTML) Introduktion til XML Copyright © Lund & Bendsen
3
Eksempel på eget XML-baserede sprog • Her et eksempel på et markup-sprog i XML, som vi selv har fundet på (dvs. et XML Vocabulary): <contact> <contact> <name>Hans <name>HansJensen</name> Jensen</name> <phoneNo <phoneNotype=”mobile” type=”mobile”>12345678</phone> >12345678</phone> </contact> </contact>
• Vi har selv bestemt, at der i vores XML-sprog er noget der hedder contact, name, phoneNo og type. • Omvendt er det fx XML, der bestemmer, at vi skal lave vores tags vha. tegnene <…> og </…>. • Vi har også data i dokumentet. Det svarer til, hvis vi Introduktion til XML 4 fx sætter en String i Java til at være lig ”Hans Jensen” Copyright © Lund & Bendsen
Hvorfor er XML smart? Nye markup-sprog som ikke er baseret på XML
Nye markup-sprog som er baseret på XML
Vi kan lave en syntaks, der passer 100% til vores nye markupsprog
Vores sprog må nøjes med at bruge XML-komponenter som tags og attributter
Det er ikke helt ligetil at finde på en ny syntaks helt fra bunden
Byggeblokkene i XML er nemme at forstå og det er nemt at lave nye sprog med dem
Man bliver nødt til selv at lave kode, der kan læse filer skrevet i det nye sprog
Der findes masser af værktøjer, der kan læse og skrive XML
Andre folk skal lære et sprog, hvis syntaks måske ikke ligner noget de har set før
Da ens sprog er baseret på XML, er det ofte nemt at lære for andre folk
Introduktion til XML
5
Copyright © Lund & Bendsen
Hvad kan XML bruges til i praksis? XML kan bruges til markup af dokumenter: – Tags bruges fx til at angive formatering (fx fed skrift) og struktur (fx header og body) – Fx XHTML og DocBook
XML kan bruges til markup af data: – Fx data der skal lagres i filer – Fx data der udveksles med andre via netværk
<text> <text> <bold>Hej <bold>Hej<italics>med</italics> <italics>med</italics> dig min</bold> dig min</bold>ven! ven! </text> </text> Hej Hejmed meddig digmin minven! ven!
<name> <name> <first-name>Hans</first-name> <first-name>Hans</first-name> <last-name>Jensen</last-name> <last-name>Jensen</last-name> </name> </name> Introduktion til XML Copyright © Lund & Bendsen
6
Introduktion til XML • • • • • • • • • • • • •
Hvad er XML og hvad kan XML bruges til? XML-syntaks: Elementer og tags XML-syntaks: Attributter XML-syntaks: Kommentarer XML-syntaks: Escapes (entities og CDATA) XML-syntaks: Declarations Wellformed XML XML-syntaks: XML namespaces Detaljer om begreberne relateret til namespaces XML vocabularies (XML applications) Overblik over schema languages og schemas Opsamling på sammenhængen mellem centrale XML-begreber Introduktion til XML Styrker og svagheder ved XML Copyright © Lund & Bendsen
7
Hvad er elementer og tags?
city start-tag
city end-tag
<city>Copenhagen</city> city element
Introduktion til XML Copyright © Lund & Bendsen
NB: Tag-navnet bestemmer vi selv. Navnet kan fx bruges til at beskrive hvad det er for nogle data elementet indeholder – her en by.
8
Tomme elementer kan skrives på 2 måder
tomt element
tomt element
=
<is-alive></is-alive>
<is-alive />
Det er placeringen af skråstregen, der gør forskellen
Introduktion til XML Copyright © Lund & Bendsen
9
Regler for navne i XML Krav til navne i XML: – Skal begynde med et bogstav eller underscore – Må ikke starte med ”xml” – Må i øvrigt indeholde næsten alle Unicodetegn bortset fra fx /, <, >, ?, ”, ’, @, & m.fl. – Må således gerne bruge tal, underscore, bindestreg og punktum. – Det er principielt tilladt at bruge kolon (:) i navne – men det er en dårlig idé, da det konflikter med XML namespaces Introduktion til XML Copyright © Lund & Bendsen
10
Elementer må indlejres i andre elementer I XML kan man have elementer i andre elementer: <name> <name> <first-name>Hans</first-name> <first-name>Hans</first-name> <last-name>Jensen</last-name> <last-name>Jensen</last-name> </name> </name>
first-name og last-name er indlejret i name
Introduktion til XML
11
Copyright © Lund & Bendsen
Vha. indlejring kan man lave en træstruktur <name> <name> <first-name>Hans</first-name> <first-name>Hans</first-name> <last-name>Jensen</last-name> <last-name>Jensen</last-name> </name> </name>
<name> <first-name>
<last-name>
Hans
Jensen <text>
<text> <text> <bold>Hej <bold>Hej<italics>med</italics> <italics>med</italics> dig digmin</bold> min</bold>ven! ven! </text> </text> Hej Hejmed meddig digmin minven! ven!
Hej
<bold>
ven!
<italics>
dig min
Introduktion til XML Copyright © Lund & Bendsen
med
12
Introduktion til XML • • • • • • • • • • • • •
Hvad er XML og hvad kan XML bruges til? XML-syntaks: Elementer og tags XML-syntaks: Attributter XML-syntaks: Kommentarer XML-syntaks: Escapes (entities og CDATA) XML-syntaks: Declarations Wellformed XML XML-syntaks: XML namespaces Detaljer om begreberne relateret til namespaces XML vocabularies (XML applications) Overblik over schema languages og schemas Opsamling på sammenhængen mellem centrale XML-begreber Introduktion til XML Styrker og svagheder ved XML Copyright © Lund & Bendsen
13
Hvad er en attribut? • Ud over elementer kan man også bruge attributter i XML • Attributter står altid i start-tag’et på et element <contact> <contact> <name>Hans <name>HansJensen</name> Jensen</name> <phoneNo <phoneNo type type==”mobile” ”mobile”>12345678</phone> >12345678</phone> </contact> </contact> En attribut i start-tag’et på elementet phoneNo Introduktion til XML Copyright © Lund & Bendsen
14
Syntaksen for attributter 1/2 • Syntaksen for attributter er: <elementName <elementNameattributeName attributeName==”AttributeValue” ”AttributeValue”>> ElementContent ElementContent </elementName> </elementName>
• En attribut må gerne stå i et tomt element: <elementName <elementNameattributeName attributeName==”AttributeValue” ”AttributeValue”/>/> bemærk
• Man må gerne bruge ’…’ frem for ”…” – fx: <elementName <elementNameattributeName attributeName==’AttributeValue’ ’AttributeValue’/>/> Introduktion til XML Copyright © Lund & Bendsen
15
Syntaksen for attributter 2/2 • Man må gerne have flere attributter i samme tag: <elementName <elementName attA=”val1” attA=”val1” attB=”val2” attB=”val2” attC=”val3” attC=”val3”/>/>
• Hver attribut må kun forekomme én gang per tag: <elementName <elementName attA=”val1” attA=”val1” attA=”val2” attA=”val2”/>/> samme navn
• Attributter må indeholde space-adskilte lister: <elementName <elementName myList myList==”val01 ”val01 val02 val02 val03 val03 val04” val04”/>/> Introduktion til XML Copyright © Lund & Bendsen
16
Introduktion til XML • • • • • • • • • • • • •
Hvad er XML og hvad kan XML bruges til? XML-syntaks: Elementer og tags XML-syntaks: Attributter XML-syntaks: Kommentarer XML-syntaks: Escapes (entities og CDATA) XML-syntaks: Declarations Wellformed XML XML-syntaks: XML namespaces Detaljer om begreberne relateret til namespaces XML vocabularies (XML applications) Overblik over schema languages og schemas Opsamling på sammenhængen mellem centrale XML-begreber Introduktion til XML Styrker og svagheder ved XML Copyright © Lund & Bendsen
17
Syntaks for kommentarer i XML Man kan skrive kommentarer i XML. – En kommentar startes med <!-- (som /* i Java) – En kommentar afsluttes med --> (som */ i Java) – Kommentarer må ikke indeholde -<name> <name> <first-name>Hans</first-name> <first-name>Hans</first-name> <!-<!--dette detteereren enkommentar kommentarrettet rettetmod modvores voresmenneskelige menneskeligelæsere læsere--> --> <last-name>Jensen</last-name> <last-name>Jensen</last-name> </name> </name> Introduktion til XML Copyright © Lund & Bendsen
18
Introduktion til XML • • • • • • • • • • • • •
Hvad er XML og hvad kan XML bruges til? XML-syntaks: Elementer og tags XML-syntaks: Attributter XML-syntaks: Kommentarer XML-syntaks: Escapes (entities og CDATA) XML-syntaks: Declarations Wellformed XML XML-syntaks: XML namespaces Detaljer om begreberne relateret til namespaces XML vocabularies (XML applications) Overblik over schema languages og schemas Opsamling på sammenhængen mellem centrale XML-begreber Introduktion til XML Styrker og svagheder ved XML Copyright © Lund & Bendsen
19
Entities • En entity i XML er en navngiven bid tekst • Man indsætter værdien af en entity ved at skrive en entity reference i sin XML • En entity reference skrives med følgende syntaks: &entityNavn; • Hvad kan entities bruges til? – Til genbrugelig tekst (gøres sjældent i praksis) – Til tegn som normalt ikke må stå i XML Introduktion til XML Copyright © Lund & Bendsen
20
Prædefinerede entities • Det er sjældent man selv definerer entities, så det springer vi over. Læs selv om det på: http://www.w3.org/TR/REC-xml/ (sektion 4.5)
• XML har 5 prædefinerede entites, der står for tegn, som ellers kan være ulovlige i XML: Entity reference
Står for tegnet
&amp; &lt; &gt;
& < >
&apos; &quot;
’ ”
Hvad står entity navnet for?
ampersand less than greater than apostrophe mark Introduktion til quotation XML Copyright © Lund & Bendsen
21
Brugen af entities til escape af ulovlige tegn Ulovligt <logical-expression> <logical-expression> yy<<12 12&& &&zz>= >=12 12 </logical-expression> </logical-expression>
Lovligt <logical-expression> <logical-expression> yy&lt; &lt;12 12&amp;&amp; &amp;&amp;zz&gt;= &gt;=12 12 </logical-expression> </logical-expression> Introduktion til XML Copyright © Lund & Bendsen
22
CDATA i XML • Som alternativ til at bruge entities til escape, kan man angive at en større mængde tekst skal ”escapes” • Får at escape en større mængde indholdet i et element startes elementet med <![CDATA[ og afsluttes med ]]> Ulovligt <logical-expression>y <logical-expression>y<<12 12&& &&zz>= >=12</logical-expression> 12</logical-expression>
Lovligt
<logical-expression> <logical-expression> <![CDATA[ <![CDATA[ yy<<12 12&& &&zz>= >=12 12 ]]> ]]> </logical-expression> </logical-expression>
Introduktion til XML Copyright © Lund & Bendsen
23
Introduktion til XML • • • • • • • • • • • • •
Hvad er XML og hvad kan XML bruges til? XML-syntaks: Elementer og tags XML-syntaks: Attributter XML-syntaks: Kommentarer XML-syntaks: Escapes (entities og CDATA) XML-syntaks: Declarations Wellformed XML XML-syntaks: XML namespaces Detaljer om begreberne relateret til namespaces XML vocabularies (XML applications) Overblik over schema languages og schemas Opsamling på sammenhængen mellem centrale XML-begreber Introduktion til XML Styrker og svagheder ved XML Copyright © Lund & Bendsen
24
XML Declaration • Et eksempel på en XML Declaration: <?xml version="1.0" encoding="UTF-8" ?> • Et XML-dokument: • Må starte med en declaration, men behøver ikke • Hvis man har en declaration, så skal den stå som det absolut første i dokumentet
• En declaration kan fx indeholde følgende: – Hvilke version af XML dokumentet er skrevet i (næsten alle bruger XML 1.0 selvom 1.1 findes) – Hvilken tegnsæt (encoding) dokumentet bruger. XML-værktøjer skal undersøtte UTF-8 og UTF-16. Introduktion til XML
25
Copyright © Lund & Bendsen da de fylder så meget ☺ NB: XML Declarations er udeladt i de fleste eksempler,
Introduktion til XML • • • • • • • • • • • • •
Hvad er XML og hvad kan XML bruges til? XML-syntaks: Elementer og tags XML-syntaks: Attributter XML-syntaks: Kommentarer XML-syntaks: Escapes (entities og CDATA) XML-syntaks: Declarations Wellformed XML XML-syntaks: XML namespaces Detaljer om begreberne relateret til namespaces XML vocabularies (XML applications) Overblik over schema languages og schemas Opsamling på sammenhængen mellem centrale XML-begreber Introduktion til XML Styrker og svagheder ved XML Copyright © Lund & Bendsen
26
Sammenliging af Wellformed XML og Java • Java-sprogets syntaks angiver hvordan lovlige Java-programmer skal se ud. Dvs. en række regler vi skal overholde, hvis vores kode skal være lovlig Java-kode. • XML angiver hvordan lovlige XMLdokumenter skal se ud (wellformed). Dvs. en række regler vi skal overholde, når vi laver XML-dokumenter. Introduktion til XML Copyright © Lund & Bendsen
27
Wellformed XML • XML har nogle regler for hvordan man skal bruge elementer og attributter (XMLs syntaks) • Hvis et XML-dokument overholder alle disse regler siger man, at dokumentet er wellformed • Hvis man kender HTML vil man bemærke, der er ting man må i HTML, der ikke er lovligt i XML • På de følgende slides ser vi på hvilke regler der skal overholdes, hvis XML skal være wellformed Introduktion til XML Copyright © Lund & Bendsen
28
Elementer skal altid afsluttes i XML Ulovligt eksempel: <text>Hej med dig min ven!<p>Hvordan har du det?</text> Start-tag uden slut-tag
Lovlige eksempler: <text><p>Hej med dig min ven!</p><p>Hvordan har du det?</p></text> <text>Hej med dig min ven!<p/>Hvordan har du det?</text> Start og afslutning i ét tag Introduktion til XML Copyright © Lund & Bendsen
29
XML er følsom mht. store/små bogstaver
Sørg for at skrive start tag og slut tag helt ens mht. store og små bogstaver: Ulovligt eksempel: <Text><p>Hej med dig min ven!</p><p>Hvordan har du det?</p></text> Text og text matcher ikke hinanden i XML
Introduktion til XML Copyright © Lund & Bendsen
30
Elementer må ikke ”krydse” hinanden Ulovligt eksempel: <text><bold>Hej <italics>med</bold> dig min ven!</italics></text> Krydser hinanden (ulovligt)
Lovligt eksempel: <text><bold>Hej </bold><italics><bold>med</bold> dig min ven!</italics></text>
Står indlejret (nested) i hinanden (ok) Introduktion til XML Copyright © Lund & Bendsen
31
Attributværdier skal stå i ”..” eller ’..’ • Mange HTML-browsere tager det ikke så tungt, hvis man fx skriver noget i stil med: <table border = 1>…</table> • Hvis man vil skrive wellformed XML, så skal attributværdier indrammes af ” eller ’: <table border = ”1”>…</table> <table border = ’1’>…</table> Introduktion til XML Copyright © Lund & Bendsen
32
Netop ét root element • Det yderste element i et XML-dokument kaldes for ”root element” (rodelement) • Et XML-dokument skal altid have præcis ét root-element (hverken mere eller mindre) Lovligt
Ulovligt
<name> <name> <first-name>Hans</first-name> <first-name>Hans</first-name> <last-name>Jensen</last-name> <last-name>Jensen</last-name> </name> </name>
<first-name>Hans</first-name> <first-name>Hans</first-name> <last-name>Jensen</last-name> <last-name>Jensen</last-name> Forsøg på at have to rod-elementer
Introduktion til XML
Copyright © Lund & Bendsen
33
Opsamling mht. wellformed XML • Et wellformed element er et element: – Der åbnes <e> og dernæst lukkes </e> eller et tomt element sammentrukket i ét tag <e/> – Der ikke krydser andre elementer
• Værdien i en wellformed attribut er omgivet af gåseøjne (”) eller pinger (’) • Et wellformed XML-dokument: – Består af wellformed elementer og attributter – Har netop ét rodelement (root element) Introduktion til XML Copyright © Lund & Bendsen
34
Introduktion til XML • • • • • • • • • • • • •
Hvad er XML og hvad kan XML bruges til? XML-syntaks: Elementer og tags XML-syntaks: Attributter XML-syntaks: Kommentarer XML-syntaks: Escapes (entities og CDATA) XML-syntaks: Declarations Wellformed XML XML-syntaks: XML namespaces Detaljer om begreberne relateret til namespaces XML vocabularies (XML applications) Overblik over schema languages og schemas Opsamling på sammenhængen mellem centrale XML-begreber Introduktion til XML Styrker og svagheder ved XML Copyright © Lund & Bendsen
35
XML Namespace Begrebet XML namespace forklares lettest ved at sammenligne med noget vi kender: Java package XML Namespace • En pakke har et navn
• Et namespace har et navn
• Klasser og interfaces kan placeres i en pakke
• Elementer og attributter kan placeres i et namespace
• En klasse identificeres ved dens fully qualified classname (pakkenavn + klassenavn)
• Et element eller en attribut identificeres ved dens expanded name (namespace name + local name)
• I Java behøver man ikke placere en klasse i en pakke (= default package)
• I XML behøver man ikke placere et element eller en attribut i et namespace
• Pakkenavne minimerer risikoen for navnesammenfald
• Namespaces minimerer risikoen for navnesammenfald
• Mappestruktur skal afspejle pakkenavne
Introduktion til XML 36 Copyright © relation Lund & Bendsenml. namespaces og mapper • Ingen
Udfordringer med navnesammenfald
Eksempel på to meget forskellige Address-elementer Navnesammenfald er fx problematiske hvis et værktøj skal validere, hvorvidt et Address-element har en gyldig struktur
<Person> <Person> <InternetContactInfo> <InternetContactInfo> <Address <Addresstype=”web”>www.lundogbendsen.dk</Address> type=”web”>www.lundogbendsen.dk</Address> <Address <Addresstype=”email”>info@lundogbendsen.dk</Address> type=”email”>info@lundogbendsen.dk</Address> </InternetContactInfo </InternetContactInfo>> <PostalContactInfo> <PostalContactInfo> <Address> <Address> <Street <StreetisAppartment=”false” isAppartment=”false”>Bakkevej >Bakkevej78</Street> 78</Street> <Zip>7000</Zip> <Zip>7000</Zip> <City>Fredericia</City> <City>Fredericia</City> Næste Næsteslide slideviser viser </Address> </Address> hvordan hvordannamespaces namespaces </PostalContactInfo> </PostalContactInfo> afhjælper afhjælperproblemet problemet </Person> </Person>
Introduktion til XML Copyright © Lund & Bendsen
37
Namespaces forhindrer navnekonflikter <Person <Person xmlns:a=”http://lundogbendsen.dk/InternetAddresses” xmlns:a=”http://lundogbendsen.dk/InternetAddresses” xmlns:b=”http://lundogbendsen.dk/PostalAddresses” xmlns:b=”http://lundogbendsen.dk/PostalAddresses”>>
Nu er det tydeligt, at der er tale om to forskellige slags adresser
<InternetContactInfo> <InternetContactInfo> <a:Address <a:Addresstype=”web”>www.lundogbendsen.dk</a:Address> type=”web”>www.lundogbendsen.dk</a:Address> <a:Address <a:Addresstype=”email”>info@lundogbendsen.dk</a:Address> type=”email”>info@lundogbendsen.dk</a:Address> </InternetContactInfo </InternetContactInfo>> <PostalContactInfo> <PostalContactInfo> <b:Address> <b:Address> <Street <StreetisAppartment=”false” isAppartment=”false”>Bakkevej >Bakkevej78</Street> 78</Street> <Zip>7000</Zip> <Zip>7000</Zip> <City>Fredericia</City> <City>Fredericia</City> Detaljeret Detaljeretforklaring forklaring </b:Address> </b:Address> af syntaksen for af syntaksen for </PostalContactInfo> </PostalContactInfo> namespaces følger namespaces følger </Person> </Person> Introduktion til XML Copyright © Lund & Bendsen
38
Namespace attributter • En namespace attribut er en specielt type attribut, som bruges i forbindelse med namespaces • Namespace attributter bruger det reserverede navn xmlns, som står for XML Namespace For eksempel <?xml <?xmlversion="1.0" version="1.0"encoding="UTF-8" encoding="UTF-8"?> ?> <Person xmlns="http://lundogbendsen.dk/schemas/2004/08/02/Person” <Person xmlns="http://lundogbendsen.dk/schemas/2004/08/02/Person”>> … …
</Person> </Person> Introduktion til XML Copyright © Lund & Bendsen
39
Syntaksen for namespace attributter • Der findes to varianter af namespace attributter: 1. xmlns = ”namespaceName” 2. xmlns:namespacePrefix = ”namespaceName” • Den første form bruges til at angive et default namespace name for elementet selv og for alle dets subelementer • Den anden form bruges til at binde et namespace name til et namespace prefix, som herefter kan bruges foran element- og attributnavne til at angive, at de tilhører det namespace prefix’et er bundet til Introduktion til XML Copyright © Lund & Bendsen
40
Lidt om de følgende slides • Namespaces er (desværre) ikke verdens nemmeste ting at forstå • Og det er en skam, da det er vigtigt at forstå namespaces, hvis man skal arbejde med XML • De følgende slides forklarer syntaksen for namespaces grundigt, og forsøger at gøre det forståeligt ved at vise masser af eksempler
Introduktion til XML Copyright © Lund & Bendsen
41
XML-dokument uden namespaces • Nedenfor har vi et eksempel på et dokument, hvor ingen elementer eller attributter er i et namespace. • På de flg. slides sætter vi namespaces på XML-dokumentet <?xml <?xmlversion="1.0" version="1.0"encoding="UTF-8" encoding="UTF-8"?> ?> <Person cprNo= ”231172-2957”> <Person cprNo= ”231172-2957”> <FirstName>Ole</FirstName> <FirstName>Ole</FirstName> <LastName>Jensen</LastName> <LastName>Jensen</LastName> <Address> <Address> <Street <StreetisAppartment=”false” isAppartment=”false”>Bakkevej >Bakkevej78</Street> 78</Street> <Zip>7000</Zip> <Zip>7000</Zip> <City>Fredericia</City> <City>Fredericia</City> </Address> </Address> </Person> </Person> Introduktion til XML Copyright © Lund & Bendsen
42
Default namespace på rod-elementet • En namespace-attribut på formen xmlns=”..” bruges til at angive et default namespace for elementet selv og alle dets subelementer • Bemærk at attributter ikke kommer med i default namespace. • Farverne viser hvilket namespace elementer og attributter tilhører. Sort signalerer at komponenten ikke er i et namespace. <?xml <?xmlversion="1.0" version="1.0"encoding="UTF-8" encoding="UTF-8"?> ?> <Person xmlns=”http://lundogbendsen.dk/schemas/2004/08/02/Person” <Person xmlns=”http://lundogbendsen.dk/schemas/2004/08/02/Person” cprNo= cprNo=”231172-2957” ”231172-2957”>> Attributterne cprNo og isAppartment <FirstName>Ole</FirstName> <FirstName>Ole</FirstName> ”arver” ikke default namespace <LastName>Jensen</LastName> <LastName>Jensen</LastName> <Address> <Address> <Street <StreetisAppartment=”false” isAppartment=”false”>Bakkevej >Bakkevej78</Street> 78</Street> <Zip>7000</Zip> <Zip>7000</Zip> <City>Fredericia</City> <City>Fredericia</City> Alle subelementer ”arver” </Address> </Address> Introduktion til XML default namespace’et 43 Copyright © Lund & Bendsen </Person> </Person>
Default namespace på nested element • Erklæring af default namespace behøver ikke stå på rod-elementet • Default namespaces må gerne erklæres på nestede elementer • Elementet der erklærer default namespace’et og alle elementer under det, kommer som default med i det angivede namespace <?xml <?xmlversion="1.0" version="1.0"encoding="UTF-8" encoding="UTF-8"?> ?> Elementer udenfor Address påvirkes <Person cprNo= ”231172-2957”> <Person cprNo= ”231172-2957”> ikke af namespace-erklæringen i Address <FirstName>Ole</FirstName> <FirstName>Ole</FirstName> <LastName>Jensen</LastName> <LastName>Jensen</LastName> <Address <Addressxmlns=”http://lundogbendsen.dk/schemas/2004/08/02/Address” xmlns=”http://lundogbendsen.dk/schemas/2004/08/02/Address”>> <Street isAppartment=”false” <Street isAppartment=”false”>Bakkevej >Bakkevej78</Street> 78</Street> <Zip>7000</Zip> <Zip>7000</Zip> <City>Fredericia</City> <City>Fredericia</City> </Address> </Address> Address og dets subelementer kommer </Person> </Person> Introduktion til XML med i default namespace’et i Address 44 Copyright © Lund & Bendsen
Overriding af default namespaces Hvis man definerer et default namespace på et nested element, vil det override et evt. default namespace, der er erklæret af et ydre element <?xml <?xmlversion="1.0" version="1.0"encoding="UTF-8" encoding="UTF-8"?> ?> <Person xmlns= ”http://lundogbendsen.dk/schemas/2004/08/02/Person” <Person xmlns= ”http://lundogbendsen.dk/schemas/2004/08/02/Person” cprNo=”231172-2957” cprNo=”231172-2957”>> <FirstName>Ole</FirstName> <FirstName>Ole</FirstName> <LastName>Jensen</LastName> <LastName>Jensen</LastName> <Address <Addressxmlns= xmlns=”http://lundogbendsen.dk/schemas/2004/08/02/Address” ”http://lundogbendsen.dk/schemas/2004/08/02/Address”>> <Street isAppartment=”false” <Street isAppartment=”false”>Bakkevej >Bakkevej78</Street> 78</Street> <Zip>7000</Zip> <Zip>7000</Zip> <City>Fredericia</City> <City>Fredericia</City> </Address> </Address> </Person> </Person> Introduktion til XML Copyright © Lund & Bendsen
45
Brug af namespace prefixes • En namespace-attribut på formen xmlns:namespacePrefix = ”..” bruges til at binde et namespace name til et namespace prefix • Namespace prefix’et bruges som en del af navnet på et element eller en attribut. Det vil medføre, at attributten eller elementet bliver en del af det namespace, som prefix’et er bundet til. <?xml <?xmlversion="1.0" version="1.0"encoding="UTF-8" encoding="UTF-8"?> ?> <prs:Person xmlns:prs=”http://lundogbendsen.dk/schemas/2004/08/02/Person” <prs:Person xmlns:prs=”http://lundogbendsen.dk/schemas/2004/08/02/Person” prs:cprNo= prs:cprNo=”231172-2957” ”231172-2957”>> Attributten cprNo er også prefixet og <prs:FirstName>Ole</prs:FirstName> bliver derfor en del af det namespace <prs:FirstName>Ole</prs:FirstName> <prs:LastName>Jensen</prs:LastName> <prs:LastName>Jensen</prs:LastName> som prs er bundet til <Address> <Address> <Street <StreetisAppartment=”false” isAppartment=”false”>Bakkevej >Bakkevej78</Street> 78</Street> <Zip>7000</Zip> <Zip>7000</Zip> <City>Fredericia</City> <City>Fredericia</City> Alle elementer og attributter der ikke er </Address> </Address> prefixet kommer Introduktion til XML ikke med i namespace’et 46 Copyright © Lund & Bendsen </prs:Person> </prs:Person>
Man kan godt have flere prefixes • Man må gerne definere flere forskellige prefixes, som er bundet til hver deres namespace name – gerne i samme element! • Brugen af prefixes fylder mere, men gør det omvendt meget tydeligt hvilke elementer og attributter, der hører til hvilke namespaces. <?xml <?xmlversion="1.0" version="1.0"encoding="UTF-8" encoding="UTF-8"?> ?> <prs:Person <prs:Person xmlns:prs=”http://lundogbendsen.dk/schemas/2004/08/02/Person” xmlns:prs=”http://lundogbendsen.dk/schemas/2004/08/02/Person” xmlns:addr=”http://lundogbendsen.dk/schemas/2004/08/02/Address” xmlns:addr=”http://lundogbendsen.dk/schemas/2004/08/02/Address” cprNo= cprNo=”231172-2957” ”231172-2957”>> <prs:FirstName>Ole</prs:FirstName> <prs:FirstName>Ole</prs:FirstName> <prs:LastName>Jensen</prs:LastName> <prs:LastName>Jensen</prs:LastName> <addr:Address> <addr:Address> <addr:Street <addr:StreetisAppartment=”false” isAppartment=”false”>Bakkevej >Bakkevej78</addr:Street> 78</addr:Street> <addr:Zip>7000</addr:Zip> <addr:Zip>7000</addr:Zip> <addr:City>Fredericia</addr:City> <addr:City>Fredericia</addr:City> </addr:Address> </addr:Address> Introduktion til XML Copyright © Lund & Bendsen </prs:Person> </prs:Person>
47
Binding af prefixes behøver ikke stå i root • Bindingen af et namespace prefix til et namespace name må stå i et hvilket som helst elements starttag. • Prefix’et kan kun bruges inden i det element, hvor det er defineret <?xml <?xmlversion="1.0" version="1.0"encoding="UTF-8" encoding="UTF-8"?> ?> <prs:Person <prs:Person xmlns:prs=”http://lundogbendsen.dk/schemas/2004/08/02/Person” xmlns:prs=”http://lundogbendsen.dk/schemas/2004/08/02/Person” cprNo= cprNo=”231172-2957” ”231172-2957”>> <prs:FirstName>Ole</prs:FirstName> <prs:FirstName>Ole</prs:FirstName> <prs:LastName>Jensen</prs:LastName> <prs:LastName>Jensen</prs:LastName> <addr:Address <addr:Address xmlns:addr=”http://lundogbendsen.dk/schemas/2004/08/02/Address” xmlns:addr=”http://lundogbendsen.dk/schemas/2004/08/02/Address”>> <addr:Street <addr:StreetisAppartment=”false” isAppartment=”false”>Bakkevej >Bakkevej78</addr:Street> 78</addr:Street> <addr:Zip>7000</addr:Zip> <addr:Zip>7000</addr:Zip> <addr:City>Fredericia</addr:City> <addr:City>Fredericia</addr:City> </addr:Address> </addr:Address> </prs:Person> </prs:Person> Introduktion til XML Copyright © Lund & Bendsen
48
Man må godt blande default og prefixes Man kan override default namespaces vha. namespace prefixes <?xml <?xmlversion="1.0" version="1.0"encoding="UTF-8" encoding="UTF-8"?> ?> Bemærk - default namespace <Person <Person xmlns=”http://lundogbendsen.dk/schemas/2004/08/02/Person” xmlns=”http://lundogbendsen.dk/schemas/2004/08/02/Person” xmlns:addr=”http://lundogbendsen.dk/schemas/2004/08/02/Address” xmlns:addr=”http://lundogbendsen.dk/schemas/2004/08/02/Address” cprNo= cprNo=”231172-2957” ”231172-2957”>> <FirstName>Ole</FirstName> <FirstName>Ole</FirstName> <LastName>Jensen</LastName> <LastName>Jensen</LastName> <addr:Address> <addr:Address> <addr:Street <addr:StreetisAppartment=”false” isAppartment=”false”>Bakkevej >Bakkevej78</addr:Street> 78</addr:Street> <addr:Zip>7000</addr:Zip> <addr:Zip>7000</addr:Zip> <City>Fredericia</City> <City>Fredericia</City> </addr:Address> </addr:Address> NB: City ”arver” default namespace’et </Person> </Person> Introduktion til XML Copyright © Lund & Bendsen
49
Namespace name er kun et navn • Der er tradition for at bruge en http-adresse som namespace name – fx http://example.com/myNs • Men et namespace name er bare et navn • Hvis man bruger en http-adresse som navn, må man gerne placere noget på adressen – fx: – En web-side med beskrivelse af det XML vocabulary, som namespace-navnet bruges til – Et schema der specificerer reglerne for det XML vocabulary, der bruger namespace-navnet
• Vigtigst er dog, at man finder på et namespacenavn, som andre ikke bruger / ikke vil bruge Introduktion til XML Copyright © Lund & Bendsen
50
Hvordan undgår man navnekonflikter? • Det er elementers Expanded Name, der ikke må kollidere: Expanded Name = Namespace Name + Local Name
• Sørg derfor for følgende: – Brug altid namespace til dit XML vocabulary – Lad dine namespace names indeholde et DNSnavn, som du ejer (som med pakker i Java) Fx http://www.lundogbendsen.dk/Address Introduktion til XML Copyright © Lund & Bendsen
51
Hvorfor bruger man prefixes? • Hvorfor har folkene bag XML besluttet, at man skal bruge namespace prefix frem for namespace name? Fx: <myns:Person> Frem for: <http://example.com/myNs:Person> • For det første fylder det ekstremt meget • For det andet vil mange namespace names indeholde tegn, der ikke er lovlige. Fx er ”/” et ulovligt tegn i names Introduktion til XML Copyright © Lund & Bendsen
52
Kode bør bruge namespace name (ikke prefix) • Det er vigtigt at huske, at det er namespace name (og ikke prefix), der er en del af elementets navn • Derfor er det næsten altid namespace name og ikke prefix, der er relevant at bruge i ens kode • Fx bør applikationskode man skriver se nedenstående to dokumenter som helt ens <a:Address <a:Address xmlns:a=“http://demo.com/adr” xmlns:a=“http://demo.com/adr”>> <a:Street>Bakkevej <a:Street>Bakkevej78</a:Street> 78</a:Street> <a:Zip>7000</a:Zip> <a:Zip>7000</a:Zip> </a:Address> </a:Address> Expanded name = http://demo.com/adr + Zip
<b:Address <b:Address xmlns:b=“http://demo.com/adr” xmlns:b=“http://demo.com/adr”>> <b:Street>Bakkevej <b:Street>Bakkevej78</b:Street> 78</b:Street> <b:Zip>7000</b:Zip> <b:Zip>7000</b:Zip> </b:Address> </b:Address> Expanded Introduktion til XML
name = 53 http://demo.com/adr + Zip
Copyright © Lund & Bendsen
Namespace aware vs. unaware Namespac es er ko m met til efter første version af XML
• Namespace aware parsing
Parseren forstår og respekterer namespaces, dvs. parseren: – ser kolon (:) i navne som adskillelse i prefix og local name – ser <odr:Address> som Address i det namespace, som odr er bundet til – ser xmlns:odr =”…” som bindingen af prefix’et odr til en namespace name
• Namespace unaware parsing Parseren forstår ikke / ignorerer namespaces, dvs. parseren: – ser ikke kolon (:) i navne som noget særligt – ser ikke et navn prefixet med namespace som prefix og local name, men ser det i stedet som ét langt navn – fx ser parseren <order:Address> som et element med navnet “order:Address” – ser xmlns-attributter som alle andre attributter – fx ser parseren xmlns:odr =“…” som en attribut med navnet “xmlns:odr” Introduktion til XML Copyright © Lund & Bendsen
54
Introduktion til XML • • • • • • • • • • • • •
Hvad er XML og hvad kan XML bruges til? XML-syntaks: Elementer og tags XML-syntaks: Attributter XML-syntaks: Kommentarer XML-syntaks: Escapes (entities og CDATA) XML-syntaks: Declarations Wellformed XML XML-syntaks: XML namespaces Detaljer om begreberne relateret til namespaces XML vocabularies (XML applications) Overblik over schema languages og schemas Opsamling på sammenhængen mellem centrale XML-begreber Introduktion til XML Styrker og svagheder ved XML Copyright © Lund & Bendsen
55
Hvad betyder QName? • Når man bruger namespaces skal alle attributnavne og elementnavne være lovlige QNames • QName står for Qualified Name • Her to eksempler på lovlige QNames: prefix
local name
local name
<myPrefix:MyElement>
<MyElement>
QName
QName
Introduktion til XML • Mere om QName-syntaksen på næste slide Copyright © Lund & Bendsen
56
Syntaksen for QName og NCName • Når man bruger namespaces skal alle attributnavne og elementnavne være lovlige QNames • Den præcise syntaks for et QName er: QName ::= [NCName:]NCName prefix (optional) local name
Hvad betyder NCName? – NCName står for Non Colonized Name til XML – NCName er et navn, somIntroduktion ikke indeholder et kolon (:) 57 Copyright © Lund & Bendsen
Hvad betyder Expanded Name? • Hvis et element/en attribut er i et namespace, så består elementets/attributtens expanded name af: – Namespace name (fx http://www.w3.org/1999/xhtml) – Local name (fx html eller address)
• Hvis et element/en attribut ikke er i et namespace, så består elementets/attributtens expanded name af: – Local name (fx address eller phoneNo) Introduktion til XML Copyright © Lund & Bendsen
58
Hvordan hænger begreberne sammen? Prefix
Local Name
<myPrefix:MyElement> QName (Qualified Name)
Namespace Name <... xmlns:myPrefix=”http://lundogbendsen.dk/myNS”>
http://lundogbendsen.dk/myNS + MyElement Introduktion til XML 59 Copyright © Lund & Bendsen Expanded name
URL, URI, URN og IRI 1/2 • URL: – Uniform Resource Locator – Angiver placering på en resurse – Fx http://example.org/ex.html
IRI
• URN: – Uniform Resource Name – Angiver navn på en resurse – Fx urn:isbn:0-395-36341-1
URI
• URI: – Uniform Resource Identifier – Fællesbetegnelse for URL og URN – Må kun bruge ASCII-tegn
URN
URL
Pseudo-UML Viser relation ml. begreber
• IRI: – Internationalized Resource Identifier – Som URI – Må bruge unicode-tegn (heraf ”internationalized”) Introduktion til XML Copyright © Lund & Bendsen
60
URL, URI, URN og IRI 2/2 • Krav til namespace names: – Skal overholde syntaksen for IRI – Må ikke være en relative IRI
• URI/IRI-syntaks: schemeName:schemeSpecificPart • Hvert scheme kan (indenfor visse rammer) selv specificere en scheme-specifik syntaks for den scheme-specifikke del • Der findes 3 typer af schemes: – Offentlige registrerede – fx http, https, ftp, mailto og ldap – Offentlige uregistrerede – fx jdbc, pop3 og uuid – Private (et scheme man kun bruger internt) – fx lbuid Introduktion til XML Copyright © Lund & Bendsen
61
Mere information om namespaces • Namespace-specifikationen til XML 1.0 – http://www.w3.org/TR/xml-names/
• Information om IRIs, URIs, URLs og URNs – – – – – – – –
http://en.wikipedia.org/wiki/Internationalized_Resource_Identifier http://en.wikipedia.org/wiki/Uniform_Resource_Identifier http://www.rfc-editor.org/rfc/rfc3305.txt (URI vs. URL vs. URN) http://tools.ietf.org/html/rfc3987 (IRI) http://tools.ietf.org/html/rfc3986 (URI) http://tools.ietf.org/html/rfc1738 (URL) http://www.iana.org/assignments/uri-schemes.html (schemes) http://www.w3.org/Addressing/schemes (uofficielle schemes) Introduktion til XML Copyright © Lund & Bendsen
62
Introduktion til XML • • • • • • • • • • • • •
Hvad er XML og hvad kan XML bruges til? XML-syntaks: Elementer og tags XML-syntaks: Attributter XML-syntaks: Kommentarer XML-syntaks: Escapes (entities og CDATA) XML-syntaks: Declarations Wellformed XML XML-syntaks: XML namespaces Detaljer om begreberne relateret til namespaces XML vocabularies (XML applications) Overblik over schema languages og schemas Opsamling på sammenhængen mellem centrale XML-begreber Introduktion til XML Styrker og svagheder ved XML Copyright © Lund & Bendsen
63
XML vocabulary (XML application) • Hvad betyder “vocabulary”? – all the words contained in a language – the specialist terms used in a given subject – the words known and used within a particular trade or profession www.thefreedictionary.com
• Hvad betyder “XML vocabulary”? – A set of XML tags for a particular industry or business function – Synonym: XML application www.wikipedia.org Introduktion til XML Copyright © Lund & Bendsen
64
Eksempler på XML vocabularies • • • • • • • • • •
Mathematical Markup Language AML (Astronomical Markup Language) XHTML (Extensible HTML) DocBook (XML format for books) WSDL (Web Services Description Language) JSML (Java Speech Markup Language) OMF (Weather Observation Definition Format) SVG (Scalable Vector Graphics) XML/EDI (Electronic Data Interchange) XUL (Extensible UI Language) Introduktion til XML Copyright © Lund & Bendsen
65
XHTML er et eksempel på et XML Vocabulary • Ekempel på en instans af XHTML vocabolary’et • XHTML definerer lovlige navne på elementer og attributter, samt hvor i strukturen de må bruges <html> <html> <head <headid=“minHeader”> id=“minHeader”> <title> <title> Dette Detteerermin mintitel titel </title> </title> </head> </head> <body> <body> …udeladt… …udeladt… </body> </body> </html> </html>
• XHTML definerer at ’html’ må bruges som elementnavn (ord i vocabolary’et) • XHTML definerer at html-elementet skal være rodelement (struktur) • XHTML definerer at ’id’ må bruges som attributnavn • XHTML definerer at id må bruges som attribut i head-elementet • XHTML definerer at body skal være child i html, og at body skal stå efter head Introduktion til XML
Copyright © Lund & Bendsen
66
Hvordan beskriver man et XML vocabolary? • Et par gode idéer (eller er de…?) – Man kunne lave et illustrativt eksempel-dokument – Reglerne kunne uddybes i et Word-dokument
• Ulemper ved ovenstående: – Det er svært at få regler beskrevet helt præcist uden tvetydighed og uden at glemme noget – Eksempler og beskrivelser er for ustrukturerede til at værktøjer kan gøre brug af reglerne. Og det kunne ellers være dejligt hvis et værktøj fx kunne undersøge om et dokument holder sig til reglerne Introduktion til XML Copyright © Lund & Bendsen
67
Struktureret definition af et XML vocabolary • Heldigvis findes der sprog, som kan bruges til at definere XML vocabolaries med • Disse sprog er præcise nok til, at de kan forstås af værktøjer ☺ • I næste sektion kigger vi på disse sprog Introduktion til XML Copyright © Lund & Bendsen
68
Introduktion til XML • • • • • • • • • • • • •
Hvad er XML og hvad kan XML bruges til? XML-syntaks: Elementer og tags XML-syntaks: Attributter XML-syntaks: Kommentarer XML-syntaks: Escapes (entities og CDATA) XML-syntaks: Declarations Wellformed XML XML-syntaks: XML namespaces Detaljer om begreberne relateret til namespaces XML vocabularies (XML applications) Overblik over schema languages og schemas Opsamling på sammenhængen mellem centrale XML-begreber Introduktion til XML Styrker og svagheder ved XML Copyright © Lund & Bendsen
69
Hvad er et schema? • Et schema specificerer hvordan en bestemt type af XML-dokumenter skal se ud. Fx: – En liste over gyldige element- og attributnavne – Regler om hvilke elementer og attributter må indlejres inden i hvilke elementer – Regler om hvilke datatyper de forskellige elementer og attributter har – fx at et element eller en attribut skal indholde et positivt heltal
• Man kan altså specificere de regler, der gælder for et XML vocabulary, vha. et schema Introduktion til XML Copyright © Lund & Bendsen
70
Forhold ml. et schema og XML-dokumenter • Et schema specificerer hvordan en bestemt type af XML-dokumenter skal se ud. • XML-dokumenter der overholder reglerne fra et schema siges at være instanser af skemaet • Se også sammenligningen af schemas med databaser og Java-kode på næste slide
Introduktion til XML
71
Copyright © Lund & Bendsen
Schemas, Java-klasser og DB-tabeller Specifikation af en datastruktur
Instanser af en datastruktur
Java
Klasse
Objekt
Relationelle databaser
Tabel
Række
XML
Schema
XML-dokument (Schema-instans)
Introduktion til XML Copyright © Lund & Bendsen
72
Forskellige schema-sprog i XML • Et schema specificerer en data-struktur for XML-dokumenter • Et schema skrives i et schema-sprog • Der findes flere forskellige schema-sprog til at specificere schemas med (se næste slide)
Introduktion til XML Copyright © Lund & Bendsen
73
Forskellige schemasprog til XML Navn DTD (Document Type Definition) W3C XML Schema (ofte bare kaldet Schema) RELAX NG
Schematron
Kommentar . Var det første schemasprog til XML. Er forældet men endnu ikke udfaset. Er ikke ret udtryksfuldt. Det klart mest udbredte schema-sprog. Er både kraftfuldt og kompliceret. Udbredt support i værktøjer og API’er Konkurrent til W3C XML Schema. Ikke specielt udbredt, men har en del meget passionerede tilhængere. Har faciliteter de andre sprog ikke har. Kan bruges som supplement til både Introduktion til XML W3C XML Schema og RELAX NG.74 Copyright © Lund & Bendsen
Forholdet mellem schema og namespace • Et schema vil typisk have et target namespace • Med target namespace menes det name-space, som schema’et definerer regler for • Se eksemplet på næste slide, der viser: – Et W3C XML Schema – Et XML-dokument der overholder schemaet – Brugen af tagetNamespace i schema’et Introduktion til XML
75
Copyright © Lund & Bendsen
Eksempel på et W3C XML Schema he r L matc ma or XM e pa c e f or s c h names mespace f a targetN
<?xml <?xmlversion="1.0" version="1.0"encoding="UTF-8"?> encoding="UTF-8"?> <xs:schema <xs:schematargetNamespace="http://www.example.org/Person" targetNamespace="http://www.example.org/Person" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema"elementFormDefault="qualified"> elementFormDefault="qualified">
<xs:element <xs:elementname="Person"> name="Person"> <xs:complexType> <xs:complexType> <xs:sequence> <xs:sequence> <xs:element <xs:elementname="FirstName" name="FirstName"type="xs:string" type="xs:string"/>/> <xs:element <xs:elementname="LastName" name="LastName"type="xs:string" type="xs:string"/>/> </xs:sequence> </xs:sequence> <xs:attribute <xs:attributename="cprNo" name="cprNo"type="xs:string" type="xs:string"/>/> </xs:complexType> </xs:complexType> </xs:element> <?xml </xs:element> <?xmlversion="1.0" version="1.0"encoding="UTF-8" encoding="UTF-8"?> ?> </xs:schema> <p:Person </xs:schema> <p:Person xmlns:p="http://www.example.org/Person" xmlns:p="http://www.example.org/Person" cprNo="231172-2957"> cprNo="231172-2957"> Et W3C XML Schema Et XML-dokument, der overholder shema’et (dvs. en schema-instans)
<p:FirstName>Ole</p:FirstName> <p:FirstName>Ole</p:FirstName> <p:LastName>Jensen</p:LastName> Copyright © Lund & Bendsen </p:Person> </p:Person>
<p:LastName>Jensen</p:LastName> Introduktion til XML
76
Wellformed og valid XML-dokumenter • Et XML-dokument er wellformed… – …hvis dokumentet overholder de generelle regler for XML-dokumenter – fx at elementer ikke må krydse og at start-tags skal efterfølges af tilsvarende slut-tags
• Et XML-dokument er valid (gyldigt)… – …hvis dokumentet er wellformed – …og dokumentet derudover overholder de ekstra regler og begrænsninger, der er defineret i et schema Introduktion til XML Copyright © Lund & Bendsen
77
Mere information om schemas • http://en.wikipedia.org/wiki/XML_schema Generelt om de forskelige schema-sprog • http://en.wikipedia.org/wiki/Document_Type_Definition • http://en.wikipedia.org/wiki/XML_Schema_(W3C) • http://en.wikipedia.org/wiki/RELAX_NG • http://en.wikipedia.org/wiki/Schematron • http://en.wikipedia.org/wiki/XML_Schema_Language_Comparison • Siderne indeholder mange links til yderligere information Introduktion til XML Copyright © Lund & Bendsen
78
Introduktion til XML • • • • • • • • • • • • •
Hvad er XML og hvad kan XML bruges til? XML-syntaks: Elementer og tags XML-syntaks: Attributter XML-syntaks: Kommentarer XML-syntaks: Escapes (entities og CDATA) XML-syntaks: Declarations Wellformed XML XML-syntaks: XML namespaces Detaljer om begreberne relateret til namespaces XML vocabularies (XML applications) Overblik over schema languages og schemas Opsamling på sammenhængen mellem centrale XML-begreber Introduktion til XML Styrker og svagheder ved XML Copyright © Lund & Bendsen
79
Overblik over XML-begreber På de næste slides skal vi se på en figur, der illustrerer sammenhængen ml. de forskellige XML-begreber: – – – – – –
XML Vocabulary Schema language Schema Namespace XML-dokument XML-værktøj Introduktion til XML Copyright © Lund & Bendsen
80
Schema specificerer vocabulary V er et XML vocabulary
§§§
L er et schema language
S sp e ific ec r re
T er et XML-værktøj
V
S er et schema
§
N er et namespace
<xml>
Introduktion til XML
Copyright © Lund & Bendsen
D er et XML-dokument
81
Schema skrives i et sprog V er et XML vocabulary S
S e i s r sk pr og reve et t L
§§§
L er et schema language
sp e ific ec r re
T er et XML-værktøj
V
S er et schema
N er et namespace
§
<xml>
Introduktion til XML
Copyright © Lund & Bendsen
D er et XML-dokument
82
Namespace identificerer et vocabulary V er et XML vocabulary S e i s r sk pr og reve et t L
S sp e ific ec r re
L er et schema language
T er et XML-værktøj
V
N bruges som unikt navn for V
§§§
S er et schema
§
N er et namespace
<xml>
Introduktion til XML
Copyright © Lund & Bendsen
D er et XML-dokument
83
Namespace specificeres af et schema V er et XML vocabulary
sp e ific ec r re
T er et XML-værktøj
§
fo
rg
et n r S ame er spa N c
e
S er et schema
Ta
N er et namespace
L er et schema language
V
N bruges som unikt navn for V
S
S e i s r sk pr og reve et t L
§§§
<xml>
Introduktion til XML
Copyright © Lund & Bendsen
D er et XML-dokument
84
XML-dokument bruger elementer fra et namespace V er et XML vocabulary
sp e ific ec r re
L er et schema language
T er et XML-værktøj
V
§
Ta
fo
et n r S ame er spa N c
e
S er et schema
rg
N bruges som unikt navn for V
S
S e i s r sk pr og reve et t L
§§§
D bruger elementer fra N <xml> Introduktion til XML og skal derfor overholde S © Lund & Bendsen Copyright
N er et namespace
D er et XML-dokument
85
Et værktøj kan forstå et schema sprog V er et XML vocabulary
sp e ific ec r re V
T er et T har suppo rt for L XML-værktøj og ka n derfo r forst åS
r S me er spa N c
na
fo
et Ta
N er et namespace
§
L er et schema language
e
S er et schema
rg
N bruges som unikt navn for V
S
S e i s r sk pr og reve et t L
§§§
D bruger elementer fra N <xml> Introduktion til XML og skal derfor overholde S Copyright © Lund & Bendsen
D er et XML-dokument
86
Et værktøj kan være namespace aware V er et XML vocabulary
sp e ific ec r re V
§
et n r S ame er spa N c
e
S er et schema
a
L er et schema language
T er et T har suppo XML-værktøj r og ka n derfo t for L r forst åS
og enter at elem iceret af S e s n if T ka r spec riNe e tt u ib ttr
fo
Ta
rg
N bruges som unikt navn for V
S
S e i s r sk pr og reve et t L
§§§
D bruger elementer fra N <xml> Introduktion til XML og skal derfor overholde S © Lund & Bendsen Copyright
N er et namespace
D er et XML-dokument
87
Validering af at et XML-dokument er en lovlig instans af et Schema V er et XML vocabulary
sp e ific ec r re V
S er et schema
N er et namespace
§
L er et schema language
T er et T har suppo rt for L XML-værktøj og ka n derfo r forst åS
na
r S me er spa N c
e
ter og lemen e t a et af S er e s cificer e T k an ld p s r e ho tter i N ver for N o attribu t D lder e, a gæ r e m id val , so an e i S k T lern reg D bruger elementer fra N D er et <xml> Introduktion til XML og skal derfor overholde S XML-dokument Copyright © Lund & Bendsen
fo
et Ta
rg
N bruges som unikt navn for V
S
S e i s r sk pr og reve et t L
§§§
88
Introduktion til XML • • • • • • • • • • • • •
Hvad er XML og hvad kan XML bruges til? XML-syntaks: Elementer og tags XML-syntaks: Attributter XML-syntaks: Kommentarer XML-syntaks: Escapes (entities og CDATA) XML-syntaks: Declarations Wellformed XML XML-syntaks: XML namespaces Detaljer om begreberne relateret til namespaces XML vocabularies (XML applications) Overblik over schema languages og schemas Opsamling på sammenhængen mellem centrale XML-begreber Introduktion til XML Styrker og svagheder ved XML Copyright © Lund & Bendsen
89
Fordele ved XML • XML består af almindelig tekst, som kan læses af mennesker vha. en teksteditor og som kan håndteres af alle systemtyper • Det er relativt nemt at skrive XML-parsere (hvorfor XMLparsere også findes i stort set alle sprog på alle platforme) • XML understøtter Unicode, hvilket gør at XML uden problemer kan bruges til andre sprog end engelsk • XML kan repræsentere stort set alle datastrukturer: træer, lister, rækker og med lidt besvær også grafer (vha. id og idref) • XML-dokumenter er selvbeskrivende, hvis man vælger gode elementnavne (modsat fx komma- eller tab-separerede filer) • XML er en åben standard, som man frit kan anvende • Der findes adskillige schemasprog til XML, som kan bruges til specificering og validering af nye XML markup languages Introduktion til XML Copyright © Lund & Bendsen
90
Ulemper ved XML • XML indeholder ofte metadata og redundans, og fylder derfor meget (fx i forhold til kommaseparerede filer) • Mange datatyper (fx tal) fylder meget, når de repræsenteres som tekst og ikke på binær form • XML kan læses af mennesker, men bliver let uoverskueligt • Manglende regler for brugen af whitespaces besværliggør visse ting – fx – at finde delta på to dokumenter (forskellen) – at understøtte signering af data på XML-form
• XML er ikke specielt velegnet til at repræsentere grafer • Flere dele af XML er svært at forstå (fx namespaces) Introduktion til XML Copyright © Lund & Bendsen
91
Mere information om XML • http://en.wikipedia.org/wiki/Xml – Overordnet beskrivelse af XML – Mange links til yderligere information
• http://www.w3.org/XML/ – W3C er organisationen bag XML – Overblik over de forskellige XML-specifikationer
• http://www.soaglossary.com/default.asp – Forklarer XML og WS-relaterede begreber
• http://www.w3schools.com Introduktion til XML
– Har mange XML-orienterede tutorials
Copyright © Lund & Bendsen
92