Upload
lund-bendsen-as
View
230
Download
2
Embed Size (px)
DESCRIPTION
2 1 Introduktion til XML Introduktion til XML Copyright © Lund & Bendsen Copyright © Lund & Bendsen • 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: … – Ordet extensible skal signalere, at XML er et sprog, som man kan bygge videre på, og dermed bruge til at definere helt nye sprog. 3 Introduktion til XML Copyright © Lund & Bendsen
Citation preview
1Introduktion til XMLCopyright © Lund & Bendsen
Introduktion til XML
2Introduktion til XMLCopyright © Lund & Bendsen
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
• Styrker og svagheder ved XML
3Introduktion til XMLCopyright © Lund & Bendsen
Hvad er XML?
• XML står for Extensible Markup Language– Med markup languagemenes et sprog, som er baseret på
tags og attributter som det fx kendes fra HTMLFx: <tag attribute = ”…”> … </tag>
– Ordet extensibleskal 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 nyemarkup-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)
4Introduktion til XMLCopyright © Lund & Bendsen
• Her et eksempel på et markup-sprog i XML, som vi selv har fundet på (dvs. et XML Vocabulary):
• 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 skallave vores tags vha. tegnene <…> og </…>.
• Vi har også data i dokumentet. Det svarer til, hvis vi fx sætter en String i Java til at være lig ”Hans Jensen”
Eksempel på eget XML-baserede sprog
<contact>
<name>Hans Jensen</name>
<phoneNo type=”mobile” >12345678</phone>
</contact>
<contact>
<name>Hans Jensen</name>
<phoneNo type=”mobile” >12345678</phone>
</contact>
5Introduktion til XMLCopyright © Lund & Bendsen
Hvorfor er XML smart?
Byggeblokkene i XML er nemme at forståog det er nemt at lave nye sprog med dem
Der findes masser af værktøjer, der kan læse og skrive XML
Da ens sprog er baseret på XML, er det ofte nemt at lære for andre folk
Det er ikke helt ligetil at finde på en ny syntaks helt fra bunden
Man bliver nødt til selv at lave kode, der kan læse filer skrevet i det nye sprog
Andre folk skal lære et sprog, hvis syntaks måske ikke ligner noget de har set før
Vores sprog må nøjes med at bruge XML-komponenter som tags og attributter
Vi kan lave en syntaks, der passer 100% til vores nye markupsprog
Nye markup-sprog som er baseret på XML
Nye markup-sprog som ikke er baseret på XML
6Introduktion til XMLCopyright © Lund & Bendsen
<name><first-name>Hans</first-name><last-name>Jensen</last-name>
</name>
<name><first-name>Hans</first-name><last-name>Jensen</last-name>
</name>
<text><bold>Hej <italics>med</italics>dig min</bold> ven!
</text>
<text><bold>Hej <italics>med</italics>dig min</bold> ven!
</text>
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
Hej med dig min ven!Hej med dig min ven!
7Introduktion til XMLCopyright © Lund & Bendsen
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
• Styrker og svagheder ved XML
8Introduktion til XMLCopyright © Lund & Bendsen
Hvad er elementer og tags?
<city>Copenhagen</city>
city start-tag city end-tag
city element
NB: Tag-navnet bestemmer vi selv.
Navnet kan fx bruges til at beskrive hvad det er for nogle data elementetindeholder – her en by.
9Introduktion til XMLCopyright © Lund & Bendsen
Tomme elementer kan skrives på 2 måder
<is-alive></is-alive> <is-alive />=
tomt element tomt element
Det er placeringen af skråstregen, der gør forskell en
10Introduktion til XMLCopyright © Lund & Bendsen
Regler for navne i XML
Krav til navne i XML:– Skalbegynde med et bogstav eller underscore– Må ikkestarte med ”xml”– Må i øvrigt indeholde næsten alle Unicode-
tegn 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
11Introduktion til XMLCopyright © Lund & Bendsen
Elementer må indlejres i andre elementer
I XML kan man have elementer i andre elementer:
first-name og last-name er indlejret i name
<name><first-name>Hans</first-name><last-name>Jensen</last-name>
</name>
<name><first-name>Hans</first-name><last-name>Jensen</last-name>
</name>
12Introduktion til XMLCopyright © Lund & Bendsen
Vha. indlejring kan man lave en træstruktur
<name>
<first-name> <last-name>
Hans Jensen
<bold>
Hej <italics>
med
dig min
<text>
<name><first-name>Hans</first-name><last-name>Jensen</last-name>
</name>
<name><first-name>Hans</first-name><last-name>Jensen</last-name>
</name>
<text><bold>Hej <italics>med</italics>dig min</bold> ven!
</text>
<text><bold>Hej <italics>med</italics>dig min</bold> ven!
</text>Hej med dig min ven!Hej med dig min ven!
ven!
13Introduktion til XMLCopyright © Lund & Bendsen
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
• Styrker og svagheder ved XML
14Introduktion til XMLCopyright © Lund & Bendsen
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>
<name>Hans Jensen</name>
<phoneNo type = ”mobile” >12345678</phone>
</contact>
<contact>
<name>Hans Jensen</name>
<phoneNo type = ”mobile” >12345678</phone>
</contact>
En attribut i start-tag’et på elementet phoneNo
15Introduktion til XMLCopyright © Lund & Bendsen
Syntaksen for attributter 1/2
• Syntaksen for attributter er:
• En attribut må gerne stå i et tomt element:
• Man må gerne bruge ’…’ frem for ”…” – fx:
<elementName attributeName = ”AttributeValue” >ElementContent
</elementName>
<elementName attributeName = ”AttributeValue” >ElementContent
</elementName>
<elementName attributeName = ”AttributeValue” /><elementName attributeName = ”AttributeValue” />
<elementName attributeName = ’AttributeValue’ /><elementName attributeName = ’AttributeValue’ />
bemærk
16Introduktion til XMLCopyright © Lund & Bendsen
Syntaksen for attributter 2/2
• Man må gerne have flere attributter i samme tag:
• Hver attribut må kun forekomme én gang per tag:
• Attributter må indeholde space-adskilte lister:
<elementName attA=”val1” attB=”val2” attC=”val3” /><elementName attA=”val1” attB=”val2” attC=”val3” />
<elementName attA=”val1” attA=”val2” /><elementName attA=”val1” attA=”val2” />
<elementName myList = ”val01 val02 val03 val04” /><elementName myList = ”val01 val02 val03 val04” />
samme navn
17Introduktion til XMLCopyright © Lund & Bendsen
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
• Styrker og svagheder ved XML
18Introduktion til XMLCopyright © Lund & Bendsen
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><first-name>Hans</first-name><!-- dette er en kommentar rettet mod vores menneskelige læsere --><last-name>Jensen</last-name>
</name>
<name><first-name>Hans</first-name><!-- dette er en kommentar rettet mod vores menneskelige læsere --><last-name>Jensen</last-name>
</name>
19Introduktion til XMLCopyright © Lund & Bendsen
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
• Styrker og svagheder ved XML
20Introduktion til XMLCopyright © Lund & Bendsen
Entities
• En entity i XML er en navngiven bid tekst
• Man indsætter værdien af en entity ved at skrive en entity referencei sin XML
• En entity referenceskrives 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
21Introduktion til XMLCopyright © Lund & Bendsen
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:
quotation mark ”"
apostrophe’'
greater than>>
less than<<
ampersand&&
Hvad står entity navnet for?Står for tegnetEntity reference
22Introduktion til XMLCopyright © Lund & Bendsen
Brugen af entities til escape af ulovlige tegn
<logical-expression>y < 12 && z >= 12
</logical-expression>
<logical-expression>y < 12 && z >= 12
</logical-expression>
<logical-expression>y < 12 && z >= 12
</logical-expression>
<logical-expression>y < 12 && z >= 12
</logical-expression>
Lovligt
Ulovligt
23Introduktion til XMLCopyright © Lund & Bendsen
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 ]]>
<logical-expression>y < 12 && z >= 12</logical-expression> <logical-expression>y < 12 && z >= 12</logical-expression>
Lovligt
Ulovligt
<logical-expression> <![CDATA[
y < 12 && z >= 12]]>
</logical-expression>
<logical-expression> <![CDATA[
y < 12 && z >= 12]]>
</logical-expression>
24Introduktion til XMLCopyright © Lund & Bendsen
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
• Styrker og svagheder ved XML
25Introduktion til XMLCopyright © Lund & Bendsen
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ørstei 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øjerskalundersøtte UTF-8 og UTF-16.
NB: XML Declarations er udeladt i de fleste eksemple r, da de fylder så meget ☺☺☺☺
26Introduktion til XMLCopyright © Lund & Bendsen
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
• Styrker og svagheder ved XML
27Introduktion til XMLCopyright © Lund & Bendsen
Sammenliging af Wellformed XML og Java
• Java-sprogets syntaks angiver hvordan lovlige Java-programmer skalse ud.Dvs. en række regler vi skal overholde, hvis vores kode skal være lovlig Java-kode.
• XML angiver hvordan lovlige XML-dokumenterskalse ud (wellformed).Dvs. en række regler vi skal overholde, når vi laver XML-dokumenter.
28Introduktion til XMLCopyright © Lund & Bendsen
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 ikkeer lovligt i XML
• På de følgende slides ser vi på hvilke regler der skal overholdes, hvis XML skal være wellformed
29Introduktion til XMLCopyright © Lund & Bendsen
Ulovligt eksempel:<text>Hej med dig min ven!<p>Hvordan har du det?</text>
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>
Elementer skal altid afsluttes i XML
Start-tag uden slut-tag
Start og afslutning i ét tag
30Introduktion til XMLCopyright © Lund & Bendsen
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>
XML er følsom mht. store/små bogstaver
Text og text matcher ikke hinanden i XML
31Introduktion til XMLCopyright © Lund & Bendsen
Ulovligt eksempel:<text><bold>Hej <italics>med</bold> dig min ven!</italics></text>
Lovligt eksempel:<text><bold>Hej </bold><italics><bold>med</bold> dig min ven!</italics></text>
Elementer må ikke ”krydse” hinanden
Krydser hinanden (ulovligt)
Står indlejret (nested) i hinanden (ok)
32Introduktion til XMLCopyright © Lund & Bendsen
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åskalattributværdier indrammes af ” eller ’:<table border = ”1”>…</table><table border = ’1’>…</table>
33Introduktion til XMLCopyright © Lund & Bendsen
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)
<name><first-name>Hans</first-name><last-name>Jensen</last-name>
</name>
<name><first-name>Hans</first-name><last-name>Jensen</last-name>
</name>
<first-name>Hans</first-name><last-name>Jensen</last-name>
<first-name>Hans</first-name><last-name>Jensen</last-name>
Lovligt Ulovligt
Forsøg på at have to rod-elementer
34Introduktion til XMLCopyright © Lund & Bendsen
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)
35Introduktion til XMLCopyright © Lund & Bendsen
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
• Styrker og svagheder ved XML
36Introduktion til XMLCopyright © Lund & Bendsen
XML Namespace
Begrebet XML namespace forklares lettest ved at sammenligne med noget vi kender:
• Ingen relation ml. namespaces og mapper• Mappestruktur skal afspejle pakkenavne
• Namespaces minimerer risikoen for navnesammenfald
• Pakkenavne minimerer risikoen for navnesammenfald
• I XML behøver man ikke placere et element eller en attribut i et namespace
• I Java behøver man ikke placere en klasse i en pakke (= default package)
• Et element eller en attribut identificeres ved dens expanded name(namespace name + local name)
• En klasse identificeres ved dens fully qualified classname(pakkenavn + klassenavn)
• Elementer og attributter kan placeres i et namespace
• Klasser og interfaces kan placeres i en pakke
• Et namespace har et navn• En pakke har et navn
XML NamespaceJava package
37Introduktion til XMLCopyright © Lund & Bendsen
Udfordringer med navnesammenfald
<Person><InternetContactInfo>
<Address type=”web”>www.lundogbendsen.dk</Address><Address type=”email”>[email protected]</Address>
</InternetContactInfo ><PostalContactInfo>
<Address><Street isAppartment=”false” >Bakkevej 78</Street><Zip>7000</Zip><City>Fredericia</City>
</Address></PostalContactInfo>
</Person>
<Person><InternetContactInfo>
<Address type=”web”>www.lundogbendsen.dk</Address><Address type=”email”>[email protected]</Address>
</InternetContactInfo ><PostalContactInfo>
<Address><Street isAppartment=”false” >Bakkevej 78</Street><Zip>7000</Zip><City>Fredericia</City>
</Address></PostalContactInfo>
</Person>
Eksempel på to meget forskelligeAddress-elementer
Navnesammenfalder fx problematiskehvis et værktøj skalvalidere, hvorvidt et Address-elementhar en gyldig struktur
Næste slide viserhvordan namespacesafhjælper problemet
Næste slide viserhvordan namespacesafhjælper problemet
38Introduktion til XMLCopyright © Lund & Bendsen
Namespaces forhindrer navnekonflikter
<Person xmlns:a=”http://lundogbendsen.dk/InternetAddresses”xmlns:b=”http://lundogbendsen.dk/PostalAddresses” >
<InternetContactInfo><a:Address type=”web”>www.lundogbendsen.dk</a:Address><a:Address type=”email”>[email protected]</a:Address>
</InternetContactInfo ><PostalContactInfo>
<b:Address><Street isAppartment=”false” >Bakkevej 78</Street><Zip>7000</Zip><City>Fredericia</City>
</b:Address></PostalContactInfo>
</Person>
<Person xmlns:a=”http://lundogbendsen.dk/InternetAddresses”xmlns:b=”http://lundogbendsen.dk/PostalAddresses” >
<InternetContactInfo><a:Address type=”web”>www.lundogbendsen.dk</a:Address><a:Address type=”email”>[email protected]</a:Address>
</InternetContactInfo ><PostalContactInfo>
<b:Address><Street isAppartment=”false” >Bakkevej 78</Street><Zip>7000</Zip><City>Fredericia</City>
</b:Address></PostalContactInfo>
</Person>
Nu er det tydeligt,at der er tale om toforskellige slagsadresser
Detaljeret forklaringaf syntaksen fornamespaces følger
Detaljeret forklaringaf syntaksen fornamespaces følger
39Introduktion til XMLCopyright © Lund & Bendsen
Namespace attributter
• En namespace attributer en specielt type attribut, som bruges i forbindelse med namespaces
• Namespace attributter bruger det reserverede navn xmlns, som står for XMLNamespace
<?xml version="1.0" encoding="UTF-8" ?><Person xmlns="http://lundogbendsen.dk/schemas/2004/08/02/Person” >
…
</Person>
<?xml version="1.0" encoding="UTF-8" ?><Person xmlns="http://lundogbendsen.dk/schemas/2004/08/02/Person” >
…
</Person>
For eksempel
40Introduktion til XMLCopyright © Lund & Bendsen
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 namefor elementet selv og for alle dets subelementer
• Den anden form bruges til at binde et namespacenametil 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
41Introduktion til XMLCopyright © Lund & Bendsen
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
42Introduktion til XMLCopyright © Lund & Bendsen
XML-dokument uden namespaces
<?xml version="1.0" encoding="UTF-8" ?><Person cprNo= ”231172-2957”>
<FirstName>Ole</FirstName><LastName>Jensen</LastName><Address>
<Street isAppartment=”false” >Bakkevej 78</Street><Zip>7000</Zip><City>Fredericia</City>
</Address></Person>
<?xml version="1.0" encoding="UTF-8" ?><Person cprNo= ”231172-2957”>
<FirstName>Ole</FirstName><LastName>Jensen</LastName><Address>
<Street isAppartment=”false” >Bakkevej 78</Street><Zip>7000</Zip><City>Fredericia</City>
</Address></Person>
• 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
43Introduktion til XMLCopyright © Lund & Bendsen
Default namespace på rod-elementet
<?xml version="1.0" encoding="UTF-8" ?><Person xmlns=”http://lundogbendsen.dk/schemas/2004/08/02/Person”
cprNo= ”231172-2957” ><FirstName>Ole</FirstName><LastName>Jensen</LastName><Address>
<Street isAppartment=”false” >Bakkevej 78</Street><Zip>7000</Zip><City>Fredericia</City>
</Address></Person>
<?xml version="1.0" encoding="UTF-8" ?><Person xmlns=”http://lundogbendsen.dk/schemas/2004/08/02/Person”
cprNo= ”231172-2957” ><FirstName>Ole</FirstName><LastName>Jensen</LastName><Address>
<Street isAppartment=”false” >Bakkevej 78</Street><Zip>7000</Zip><City>Fredericia</City>
</Address></Person>
• 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 ikkeer i et namespace.
Attributterne cprNo og isAppartment”arver” ikke default namespace
Alle subelementer ”arver”default namespace’et
44Introduktion til XMLCopyright © Lund & Bendsen
Default namespace på nested element
<?xml version="1.0" encoding="UTF-8" ?><Person cprNo= ”231172-2957”>
<FirstName>Ole</FirstName><LastName>Jensen</LastName><Address xmlns=”http://lundogbendsen.dk/schemas/2004/08/02/Address” >
<Street isAppartment=”false” >Bakkevej 78</Street><Zip>7000</Zip><City>Fredericia</City>
</Address></Person>
<?xml version="1.0" encoding="UTF-8" ?><Person cprNo= ”231172-2957”>
<FirstName>Ole</FirstName><LastName>Jensen</LastName><Address xmlns=”http://lundogbendsen.dk/schemas/2004/08/02/Address” >
<Street isAppartment=”false” >Bakkevej 78</Street><Zip>7000</Zip><City>Fredericia</City>
</Address></Person>
• 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
Address og dets subelementer kommer med i default namespace’et i Address
Elementer udenfor Address påvirkes ikke af namespace-erklæringen i Address
45Introduktion til XMLCopyright © Lund & Bendsen
Overriding af default namespaces
<?xml version="1.0" encoding="UTF-8" ?><Person xmlns= ”http://lundogbendsen.dk/schemas/2004/08/02/Person”
cprNo=”231172-2957” ><FirstName>Ole</FirstName><LastName>Jensen</LastName><Address xmlns= ”http://lundogbendsen.dk/schemas/2004/08/02/Address” >
<Street isAppartment=”false” >Bakkevej 78</Street><Zip>7000</Zip><City>Fredericia</City>
</Address></Person>
<?xml version="1.0" encoding="UTF-8" ?><Person xmlns= ”http://lundogbendsen.dk/schemas/2004/08/02/Person”
cprNo=”231172-2957” ><FirstName>Ole</FirstName><LastName>Jensen</LastName><Address xmlns= ”http://lundogbendsen.dk/schemas/2004/08/02/Address” >
<Street isAppartment=”false” >Bakkevej 78</Street><Zip>7000</Zip><City>Fredericia</City>
</Address></Person>
Hvis man definerer et default namespace på et nested element, vil det overrideet evt. default namespace, der er erklæret af et ydre element
46Introduktion til XMLCopyright © Lund & Bendsen
Brug af namespace prefixes
<?xml version="1.0" encoding="UTF-8" ?><prs:Person xmlns:prs=”http://lundogbendsen.dk/schemas/2004/08/02/Person”
prs:cprNo= ”231172-2957” ><prs:FirstName>Ole</prs:FirstName><prs:LastName>Jensen</prs:LastName><Address>
<Street isAppartment=”false” >Bakkevej 78</Street><Zip>7000</Zip><City>Fredericia</City>
</Address></prs:Person>
<?xml version="1.0" encoding="UTF-8" ?><prs:Person xmlns:prs=”http://lundogbendsen.dk/schemas/2004/08/02/Person”
prs:cprNo= ”231172-2957” ><prs:FirstName>Ole</prs:FirstName><prs:LastName>Jensen</prs:LastName><Address>
<Street isAppartment=”false” >Bakkevej 78</Street><Zip>7000</Zip><City>Fredericia</City>
</Address></prs:Person>
• En namespace-attribut på formen xmlns:namespacePrefix = ”..”bruges til at binde et namespace nametil 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.
Attributten cprNo er også prefixet og bliver derfor en del af det namespacesom prs er bundet til
Alle elementer og attributter der ikke erprefixet kommer ikke med i namespace’et
47Introduktion til XMLCopyright © Lund & Bendsen
Man kan godt have flere prefixes
<?xml version="1.0" encoding="UTF-8" ?><prs:Person
xmlns:prs=”http://lundogbendsen.dk/schemas/2004/08/02/Person”xmlns:addr=”http://lundogbendsen.dk/schemas/2004/08/02/Address”cprNo= ”231172-2957” ><prs:FirstName>Ole</prs:FirstName><prs:LastName>Jensen</prs:LastName><addr:Address>
<addr:Street isAppartment=”false” >Bakkevej 78</addr:Street><addr:Zip>7000</addr:Zip><addr:City>Fredericia</addr:City>
</addr:Address></prs:Person>
<?xml version="1.0" encoding="UTF-8" ?><prs:Person
xmlns:prs=”http://lundogbendsen.dk/schemas/2004/08/02/Person”xmlns:addr=”http://lundogbendsen.dk/schemas/2004/08/02/Address”cprNo= ”231172-2957” ><prs:FirstName>Ole</prs:FirstName><prs:LastName>Jensen</prs:LastName><addr:Address>
<addr:Street isAppartment=”false” >Bakkevej 78</addr:Street><addr:Zip>7000</addr:Zip><addr:City>Fredericia</addr:City>
</addr:Address></prs:Person>
• 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.
48Introduktion til XMLCopyright © Lund & Bendsen
Binding af prefixes behøver ikke stå i root
<?xml version="1.0" encoding="UTF-8" ?><prs:Person
xmlns:prs=”http://lundogbendsen.dk/schemas/2004/08/02/Person”cprNo= ”231172-2957” ><prs:FirstName>Ole</prs:FirstName><prs:LastName>Jensen</prs:LastName><addr:Address
xmlns:addr=”http://lundogbendsen.dk/schemas/2004/08/02/Address” ><addr:Street isAppartment=”false” >Bakkevej 78</addr:Street><addr:Zip>7000</addr:Zip><addr:City>Fredericia</addr:City>
</addr:Address></prs:Person>
<?xml version="1.0" encoding="UTF-8" ?><prs:Person
xmlns:prs=”http://lundogbendsen.dk/schemas/2004/08/02/Person”cprNo= ”231172-2957” ><prs:FirstName>Ole</prs:FirstName><prs:LastName>Jensen</prs:LastName><addr:Address
xmlns:addr=”http://lundogbendsen.dk/schemas/2004/08/02/Address” ><addr:Street isAppartment=”false” >Bakkevej 78</addr:Street><addr:Zip>7000</addr:Zip><addr:City>Fredericia</addr:City>
</addr:Address></prs:Person>
• 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
49Introduktion til XMLCopyright © Lund & Bendsen
Man må godt blande default og prefixes
<?xml version="1.0" encoding="UTF-8" ?><Person
xmlns=”http://lundogbendsen.dk/schemas/2004/08/02/Person”xmlns:addr=”http://lundogbendsen.dk/schemas/2004/08/02/Address”cprNo= ”231172-2957” ><FirstName>Ole</FirstName><LastName>Jensen</LastName><addr:Address>
<addr:Street isAppartment=”false” >Bakkevej 78</addr:Street><addr:Zip>7000</addr:Zip><City>Fredericia</City>
</addr:Address></Person>
<?xml version="1.0" encoding="UTF-8" ?><Person
xmlns=”http://lundogbendsen.dk/schemas/2004/08/02/Person”xmlns:addr=”http://lundogbendsen.dk/schemas/2004/08/02/Address”cprNo= ”231172-2957” ><FirstName>Ole</FirstName><LastName>Jensen</LastName><addr:Address>
<addr:Street isAppartment=”false” >Bakkevej 78</addr:Street><addr:Zip>7000</addr:Zip><City>Fredericia</City>
</addr:Address></Person>
Man kan override default namespaces vha. namespace prefixes
Bemærk - default namespace
NB: City ”arver” default namespace’et
50Introduktion til XMLCopyright © Lund & Bendsen
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 bareet 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 namespace-navn, som andre ikke bruger / ikke vil bruge
51Introduktion til XMLCopyright © Lund & Bendsen
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 DNS-navn, som du ejer (som med pakker i Java)Fx http://www.lundogbendsen.dk/Address
52Introduktion til XMLCopyright © Lund & Bendsen
Hvorfor bruger man prefixes?
• Hvorfor har folkene bag XML besluttet, at man skal bruge namespace prefixfrem 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 namesindeholde tegn, der ikke er lovlige.Fx er ”/” et ulovligt tegn i names
53Introduktion til XMLCopyright © Lund & Bendsen
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:Addressxmlns:a=“ http://demo.com/adr” >
<a:Street>Bakkevej 78</a:Street>
<a:Zip>7000</a:Zip>
</a:Address>
<a:Addressxmlns:a=“ http://demo.com/adr” >
<a:Street>Bakkevej 78</a:Street>
<a:Zip>7000</a:Zip>
</a:Address>
<b:Addressxmlns:b=“ http://demo.com/adr” >
<b:Street>Bakkevej 78</b:Street>
<b:Zip>7000</b:Zip>
</b:Address>
<b:Addressxmlns:b=“ http://demo.com/adr” >
<b:Street>Bakkevej 78</b:Street>
<b:Zip>7000</b:Zip>
</b:Address>
Expanded name = http://demo.com/adr + Zip
Expanded name = http://demo.com/adr + Zip
54Introduktion til XMLCopyright © Lund & Bendsen
Namespace aware vs. unaware
• Namespace aware parsingParseren 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’etodr til en namespace name
• Namespace unaware parsingParseren 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 parserenxmlns:odr =“…” som en attribut med navnet “xmlns:odr”
Namespaces er kommet tilefter første version af XML
55Introduktion til XMLCopyright © Lund & Bendsen
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
• Styrker og svagheder ved XML
56Introduktion til XMLCopyright © Lund & Bendsen
Hvad betyder QName?
• Når man bruger namespacesskal alleattribut-navne og elementnavne være lovlige QNames
• QName står for Qualified Name
• Her to eksempler på lovlige QNames:
• Mere om QName-syntaksen på næste slide
<myPrefix:MyElement>
prefix local name
QName
<MyElement>
local name
QName
57Introduktion til XMLCopyright © Lund & Bendsen
Syntaksen for QName og NCName
• Når man bruger namespacesskal alleattribut-navne og elementnavne være lovlige QNames
• Den præcise syntaks for et QName er:
QName ::= [NCName:]NCName
Hvad betyder NCName?– NCName står for Non Colonized Name
– NCName er et navn, som ikke indeholder et kolon (:)
prefix(optional) local name
58Introduktion til XMLCopyright © 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)
59Introduktion til XMLCopyright © Lund & Bendsen
Hvordan hænger begreberne sammen?
<myPrefix:MyElement>
Prefix Local Name
QName (Qualified Name)
<... xmlns:myPrefix=”http://lundogbendsen.dk/myNS”>
Expanded name
http://lundogbendsen.dk/myNS MyElement
Namespace Name
+
60Introduktion til XMLCopyright © Lund & Bendsen
URL, URI, URN og IRI 1/2
• URL:– Uniform Resource Locator– Angiver placering på en resurse– Fx http://example.org/ex.html
• URN:– Uniform Resource Name– Angiver navn på en resurse– Fx urn:isbn:0-395-36341-1
• URI:– Uniform Resource Identifier– Fællesbetegnelse for URL og URN– Må kun bruge ASCII-tegn
• IRI:– Internationalized Resource Identifier– Som URI– Må bruge unicode-tegn (heraf ”internationalized”)
IRI
URI
URLURN
Pseudo-UMLViser relation ml. begreber
61Introduktion til XMLCopyright © Lund & Bendsen
• Krav til namespace names:– Skaloverholde syntaksen for IRI– Må ikkevæ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
URL, URI, URN og IRI 2/2
62Introduktion til XMLCopyright © Lund & Bendsen
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)
63Introduktion til XMLCopyright © Lund & Bendsen
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
• Styrker og svagheder ved XML
64Introduktion til XMLCopyright © Lund & Bendsen
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
• Hvad betyder “XML vocabulary ”?– A set of XML tags for a particular industry
or business function
– Synonym: XML application
www.thefreedictionary.com
www.wikipedia.org
65Introduktion til XMLCopyright © Lund & Bendsen
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)
66Introduktion til XMLCopyright © Lund & Bendsen
XHTML er et eksempel på et XML Vocabulary
• Ekempel på en instans af XHTML vocabolary’et
• XHTML definerer lovlige navnepå elementer og attributter, samt hvor i strukturen de må bruges
<html>
<head id=“minHeader”>
<title>
Dette er min titel
</title>
</head>
<body>
…udeladt…
</body>
</html>
<html>
<head id=“minHeader”>
<title>
Dette er min titel
</title>
</head>
<body>
…udeladt…
</body>
</html>
• XHTML definerer at ’html’ må bruges som elementnavn (ord i vocabolary’et)
• XHTML definerer at html-elementet skalvæ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
67Introduktion til XMLCopyright © Lund & Bendsen
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
68Introduktion til XMLCopyright © Lund & Bendsen
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
69Introduktion til XMLCopyright © Lund & Bendsen
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
• Styrker og svagheder ved XML
70Introduktion til XMLCopyright © Lund & Bendsen
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
71Introduktion til XMLCopyright © Lund & Bendsen
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 instanseraf skemaet
• Se også sammenligningen af schemas med databaser og Java-kode på næste slide
72Introduktion til XMLCopyright © Lund & Bendsen
Schemas, Java-klasser og DB-tabeller
XML-dokument
(Schema-instans)SchemaXML
RækkeTabelRelationelle databaser
ObjektKlasseJava
Instanser af en datastruktur
Specifikation afen datastruktur
73Introduktion til XMLCopyright © Lund & Bendsen
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)
74Introduktion til XMLCopyright © Lund & Bendsen
Forskellige schemasprog til XML
Har faciliteter de andre sprog ikke har.Kan bruges som supplement til bådeW3C XML Schema og RELAX NG.
Schematron
Konkurrent til W3C XML Schema.Ikke specielt udbredt, men har en del
meget passionerede tilhængere.RELAX NG
Det klart mest udbredte schema-sprog.Er både kraftfuldt og kompliceret.
Udbredt support i værktøjer og API’er
W3C XML Schema(ofte bare kaldet Schema)
Var det første schemasprog til XML.Er forældet men endnu ikke udfaset.
Er ikke ret udtryksfuldt.
DTD(Document Type Definition)
Kommentar .Navn
75Introduktion til XMLCopyright © 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
76Introduktion til XMLCopyright © Lund & Bendsen
Eksempel på et W3C XML Schema
<?xml version="1.0" encoding="UTF-8"?><xs:schema targetNamespace="http://www.example.org/Person"
xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="Person"><xs:complexType>
<xs:sequence><xs:element name="FirstName" type="xs:string" /><xs:element name="LastName" type="xs:string" />
</xs:sequence><xs:attribute name="cprNo" type="xs:string" />
</xs:complexType></xs:element>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?><xs:schema targetNamespace="http://www.example.org/Person"
xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="Person"><xs:complexType>
<xs:sequence><xs:element name="FirstName" type="xs:string" /><xs:element name="LastName" type="xs:string" />
</xs:sequence><xs:attribute name="cprNo" type="xs:string" />
</xs:complexType></xs:element>
</xs:schema><?xml version="1.0" encoding="UTF-8" ?><p:Person
xmlns:p="http://www.example.org/Person"cprNo="231172-2957">
<p:FirstName>Ole</p:FirstName><p:LastName>Jensen</p:LastName>
</p:Person>
<?xml version="1.0" encoding="UTF-8" ?><p:Person
xmlns:p="http://www.example.org/Person"cprNo="231172-2957">
<p:FirstName>Ole</p:FirstName><p:LastName>Jensen</p:LastName>
</p:Person>
Et W3C XML Schema
Et XML-dokument, der overholdershema’et (dvs. en schema-instans)
nam
espace
for X
ML
match
er
targetN
amesp
acefo
r schem
a
77Introduktion til XMLCopyright © Lund & Bendsen
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
78Introduktion til XMLCopyright © Lund & Bendsen
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
79Introduktion til XMLCopyright © Lund & Bendsen
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
• Styrker og svagheder ved XML
80Introduktion til XMLCopyright © Lund & Bendsen
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
81Introduktion til XMLCopyright © Lund & Bendsen
Schema specificerer vocabulary
S er et schema
D er et XML-dokument
T er et XML-værktøj
L er et schema language§§§
<xml>
V er et XML vocabulary
§
N er et namespace
S specificerer V
82Introduktion til XMLCopyright © Lund & Bendsen
Schema skrives i et sprog
S er et schema
D er et XML-dokument
T er et XML-værktøj
L er et schema language§§§
<xml>
V er et XML vocabulary
§
N er et namespace
S specificerer V
S er s
krev
et
i spr
oget
L
83Introduktion til XMLCopyright © Lund & Bendsen
Namespace identificerer et vocabulary
S er et schema
D er et XML-dokument
T er et XML-værktøj
L er et schema language§§§
<xml>
V er et XML vocabulary
§
N er et namespace
N b
ruge
s so
m u
nikt
nav
n fo
r V
S specificerer V
S er s
krev
et
i spr
oget
L
84Introduktion til XMLCopyright © Lund & Bendsen
Namespace specificeres af et schema
S er et schema
D er et XML-dokument
T er et XML-værktøj
L er et schema language§§§
<xml>
V er et XML vocabulary
§
N er et namespace
N b
ruge
s so
m u
nikt
nav
n fo
r V
Targ
et n
ames
pace
for S
er N
S specificerer V
S er s
krev
et
i spr
oget
L
85Introduktion til XMLCopyright © Lund & Bendsen
XML-dokument bruger elementer fra et namespace
S er et schema
D er et XML-dokument
T er et XML-værktøj
L er et schema language§§§
<xml>
V er et XML vocabulary
§
N er et namespace
D bruger elementer fra Nog skal derfor overholde S
N b
ruge
s so
m u
nikt
nav
n fo
r V
Targ
et n
ames
pace
for S
er N
S specificerer V
S er s
krev
et
i spr
oget
L
86Introduktion til XMLCopyright © Lund & Bendsen
Et værktøj kan forstå et schema sprog
S er et schema
D er et XML-dokument
T er et XML-værktøj
L er et schema language§§§
<xml>
V er et XML vocabulary
§
N er et namespace
D bruger elementer fra Nog skal derfor overholde S
N b
ruge
s so
m u
nikt
nav
n fo
r V
Targ
et n
ames
pace
for S
er N
S specificerer V
S er s
krev
et
i spr
oget
L
T har support for Log kan derfor forstå S
87Introduktion til XMLCopyright © Lund & Bendsen
Et værktøj kan være namespace aware
S er et schema
D er et XML-dokument
T er et XML-værktøj
L er et schema language§§§
<xml>
V er et XML vocabulary
§
N er et namespace
D bruger elementer fra Nog skal derfor overholde S
N b
ruge
s so
m u
nikt
nav
n fo
r V
Targ
et n
ames
pace
for S
er N
S specificerer V
S er s
krev
et
i spr
oget
L
T har support for Log kan derfor forstå S
T kan se at elementer og
attributter i N er specificeret af S
88Introduktion til XMLCopyright © Lund & Bendsen
Validering af at et XML-dokumenter en lovlig instans af et Schema
S er et schema
D er et XML-dokument
T er et XML-værktøj
L er et schema language§§§
<xml>
V er et XML vocabulary
§
N er et namespace
D bruger elementer fra Nog skal derfor overholde S
N b
ruge
s so
m u
nikt
nav
n fo
r V
Targ
et n
ames
pace
for S
er N
S specificerer V
S er s
krev
et
i spr
oget
L
T har support for Log kan derfor forstå S
T kan validere, at D overholder
reglerne i S, som gælder fo
r NT kan se at elementer og
attributter i N er specificeret af S
89Introduktion til XMLCopyright © Lund & Bendsen
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
• Styrker og svagheder ved XML
90Introduktion til XMLCopyright © Lund & Bendsen
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 XML-parsere 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
91Introduktion til XMLCopyright © Lund & Bendsen
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 whitespacesbesvæ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)
92Introduktion til XMLCopyright © Lund & Bendsen
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– Har mange XML-orienterede tutorials