01- Introduktion til XML

Page 1

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

& < >

& < >

' "

’ ”

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< <12 12&& &&zz>= >=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


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.