Wykład 02

Transkrypt

Wykład 02
Plan
Przetwarzanie dokumentów XML
i zaawansowane techniki WWW
Wykład 02
T. Romańczukiewicz
Jagiellonian University
2009/2010
T. Romańczukiewicz
XML 02
Plan
Plan
1
Przypomnienie
2
DTD
3
Schematy XML
4
Podsumowanie
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
Plan
1
Przypomnienie
2
DTD
3
Schematy XML
4
Podsumowanie
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
Przypomnienie:
XML - jezyk
˛
znaczników zaprojektowany do przechowywania danych.
Do prezentowania danych bezpośrednio zawartych w XML można użyć
np. arkuszy kaskadowych CSS.
XML pozwala na praktycznie nieograniczona˛ dowolność.
Strukture˛ określa sie˛ zagnieżdżajac
˛ znaczniki, dodatkowe informacje można
przechowywać w atrybutach.
W wielu praktycznych zastosowaniach należy jednak ograniczyć te˛ dowlolność definicja typu dokumentu DTD.
Jeśli dokument jest poprawnie sformułowany wg rekomendacji W3C można go
walidować czyli sprawdzać jego zgodność z DTD.
Zawartość dokumentów można czytać przy pomocy np. JavaScript.
Kilka różnych dokumentów można łaczyć
˛
w jedna˛ całość, a nazwy elementów z
różnych DTD rozróżnia sie˛ poprzez przestrzenie nazw.
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
DTD - potrzeba, zalety i wady Konstrukcja DTD Definicje atrybutów E
Plan
1
Przypomnienie
2
DTD
DTD - potrzeba, zalety i wady
Konstrukcja DTD
Definicje atrybutów
Encje
3
Schematy XML
4
Podsumowanie
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
DTD - potrzeba, zalety i wady Konstrukcja DTD Definicje atrybutów E
Struktura dokumentu
XML został tak skonstruowany aby pozwalał na maksymalna˛ dowolność (struktura
dokumentu, nazwy znaczników itp).
Czasami jednak warto określić pewne ramy jakich dokument musi sie˛ trzymać.
Zabieg ten może przyspieszyć przetwarzanie danych w dokumencie oraz
zapobiega powstawaniu ewentualnych błedów
˛
już podczas etapu tworzenia
dokumentu.
Definicja typu dokumentu (DTD, ang. Document Type Definition)
formalny opis budowy zawierajacego informacje o nazwach przyporzadkowanych
cz˛eściom składowym tekstu (elementach), ich dodatkowych własnościach (atrybutach)
i zależnosciach pomiedzy elementami, łacz
˛ acych
˛
je w strukture˛ drzewiasta˛
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
DTD - potrzeba, zalety i wady Konstrukcja DTD Definicje atrybutów E
DTD a Schematy XML
Strukture˛ dokumentu można opisać na dwa sposoby:
Definicje typu dokumentów
Schematy XML
W chwili obecnej najcz˛eściej używa sie˛ DTD. Jest to jednak metoda bardzo
ograniczona i mało precyzyjna.
Schematy XML nie tylko opisuja˛ sama˛ strukture˛ dokumentu, ale również pozwalaja˛ na
określanie typu danych w treści elementów
dziedziczenie składni
określanie minimalnej i maksymalnej ilości wystapie
˛ ń elementu
ograniczanie wartości danych
wymuszanie niepowtarzalności atrybutów
(...) wiele, wiele innych - o tym w dalszej cz˛eści
Alternatywy: Relax NG, Schematron i inne
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
DTD - potrzeba, zalety i wady Konstrukcja DTD Definicje atrybutów E
Budowa DTD
Listing 1: Przykład DTD
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/css" href="katalog.css" ?>
<!DOCTYPE CATALOG [
<!ELEMENT CATALOG (Artist+) >
<!ELEMENT Artist (Artist-Name, Album+) >
<!ELEMENT Artist-Name (#PCDATA) >
<!ELEMENT Album (Title, Year) >
<!ELEMENT Title (#PCDATA) >
<!ELEMENT Year (#PCDATA) >
<!ATTLIST Album id CDATA "100" >]>
<!ELEMENT nazwa elementu (model zawartosci)>
element+
element wystapi
˛ jeden lub wiecej
˛
razy,
element*
0 lub wiecej
˛
razy,
element?
0 lub 1 raz,
element1, element2
elementy wystapi
˛ a˛ w podanej kolejności,
element1 | element2
wystapi
˛ element1 lub element2
(grupa)
grupa składników modelu,
#PCDATA
wystapi
˛ zawartość tekstowa („czysty tekst” — bez podelementów),
EMPTY
ANY
element nie posiada żadnej zawartości,
w treści moga˛ wystapić
˛ dowolne zadeklarowane elementy.
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
DTD - potrzeba, zalety i wady Konstrukcja DTD Definicje atrybutów E
Model mieszany. Czasami zachodzi konieczność wymieszania danych wraz z
elementami. Np gdy chcemy dodać dodatkowy element - dodatkowa uwaga, data
itp, a nie jest to konieczne dla każdego elementu.
<!ELEMENT nazwa_elementu (#PCDATA | uzupelnienie )*> i można tego używać w
nastepuj
˛ acy
˛ sposób:
Listing 2: Model mieszany
1
2
3
4
5
6
7
8
9
10
<nazwa_elemetu>
zawartosc pierwszego elementu
</nazwa_elemetu>
<nazwa_elemetu>
zawartosc drugiego elementu
<uzupelnienie>
to jest drugi element
</uzupelnienie>
</nazwa_elemetu>
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
DTD - potrzeba, zalety i wady Konstrukcja DTD Definicje atrybutów E
Definicja atrybutu
Listing 3: Przykład definicji atrybutu
1
2
3
<!ATTLIST nazwa elementu nazwa atrybutu1 typ1 zawartosc1
nazwa atrybutu2 typ2 zawartosc2
...>
Typy atrybutów:
CDATA
ciag
˛ znaków,
NMTOKEN
ciag
˛ znaków tworzacych
˛
poprawna˛ nazwe,
˛
NMTOKENS
ID
ciag
˛ NMTOKEN oddzielanych spacjami,
identyfikator unikalny w obrebie
˛
dokumentu,
IDREF
wskaźnik do ID innego elementu,
IDREFS
ciag
˛ IDREF oddzielany białymi znakami,
(a|b|...)
jedna z podanych wartości (typ wyliczeniowy),
#REQUIRED
atrybut jest wymagany,
#IMPLIED
wartosc
#FIXED
wartość nie musi być podana,
wartość domyślna, w dokumencie można ja˛ zmieniać
wartość stała.
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
DTD - potrzeba, zalety i wady Konstrukcja DTD Definicje atrybutów E
Elementy czy atrybuty
w elementach należy zapisywać istotny tekst, który bedzie
˛
wypisywany, w
atrybutach dodatkowe parametry
w elementach należy zapisywać dane, a w atrybutach metadane
elementy można zagnieżdżać, atrybuty nie - nie maja˛ wewnetrznej
˛
struktury
kolejność atrybutów nie ma znaczenia, dla elementów jest ważna
w DTD można tylko atrybutom można przyporzadkowywać
˛
wartości domyślne.
Listing 4: Umieszczanie DTD w osobnym pliku
1
<!DOCTYPE element_glowny SYSTEM "uri_do_DTD.dtd">
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
DTD - potrzeba, zalety i wady Konstrukcja DTD Definicje atrybutów E
Encje
W DTD można definiować też makrorozwiniecia
˛
- encje:
Listing 5: Definicje encji wewnetrznych
˛
1
2
3
4
5
6
<!ENTITY nazwa_encji "rozwiniecie">
...
<przyklad>
przyklad uzycia encji &nazwa_encji;
</przyklad>
...
W XML można korzystać z kilku predefiniowanych encji:
&apos;
’
&quot;
"
&amp;
&
&lt;
<
&gt;
>
Można też używać ich do odwołań do znaków w kodzie dziesietnym
˛
&#kod_znaku; oraz
#xkod_znaku; w kodzie szesnastkowym.
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
DTD - potrzeba, zalety i wady Konstrukcja DTD Definicje atrybutów E
Encje zewnetrzne
˛
Listing 6: Przykład użycia encji zewnetrznych
˛
1
2
3
4
5
6
7
8
9
10
<!ENTITY klasyka SYSTEM "klasyka_rocka.xml">
<!ENTITY NWOBHM SYSTEM "NWOBHM.xml">
<!ENTITY Thrash SYSTEM "http://prunus.if.uj.edu.pl/Slayer_itp.xml">
<CATALOG>
&klasyka;
&NWOBHM;
&Thrash;
...
</CATALOG>
Właczanie
˛
DTD jest również encje˛ zewnetrzn
˛
a:
˛
<!DOCTYPE element_glowny SYSTEM "uri_do_DTD.dtd">
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
DTD - potrzeba, zalety i wady Konstrukcja DTD Definicje atrybutów E
Encje parametryczne
Encje parametryczne definiuje sie˛ i używa przy pomocy znaku %:
Listing 7: Przykład użycia encji zewnetrznych
˛
1
2
3
4
<!ENTITY % fontstyle "TT | I | B | U">
<!ENTITY % inline "#PCDATA | %fontstyle;">
<!ELEMENT p (%inline;)*>
<!ELEMENT font (%inline;)*>
Można używać np. do definicji elementów w razie potrzeby dodać lub zmienić jeden
fragment wykorzystywany w definicji wielu elementów.
Możliwe jest też właczanie
˛
lub wyłaczanie
˛
fragmentów DTD poprzez instrukcje:
Listing 8: Przykład użycia encji zewnetrznych
˛
1
2
<![INCLUDE[ ... definicja_uzywana ... ]]>
<![IGNORE[ ... definicja_nieuzywana ... ]]>
Można teraz łatwo tworzyć kilka wersji DTD w jednym tylko dokumencie i właczać
˛
pewne sekcje DTD parametrycznie.
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
DTD - potrzeba, zalety i wady Konstrukcja DTD Definicje atrybutów E
Wady DTD
duża złożoność
brak możliwości określania tekstowej zawartości atrybutów
mało dokładne określanie ilości wystapie
˛ ń danego elementu (+, ?, ∗)
brak struktury XML w DTD
Rozwiazanie:
˛
schematy XML
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
Przykłady Elementy proste i złożone Definicje typów Dodatkowe moż
Plan
1
Przypomnienie
2
DTD
3
Schematy XML
Przykłady
Elementy proste i złożone
Definicje typów
Dodatkowe możliwości
4
Podsumowanie
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
Przykłady Elementy proste i złożone Definicje typów Dodatkowe moż
Schemat XML
Listing 9: Przykład schematu XML
1
2
3
4
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
...
</xs:schema>
i użycie referencji do schematu w pliku XML jako przestrzeni nazw:
Listing 10: Plik XML
<?xml version="1.0" encoding="UTF-8"?>
<element_glowny xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="moj_schemat.xsd">
3 ...
4 </element_glowny>
1
2
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
Przykłady Elementy proste i złożone Definicje typów Dodatkowe moż
W XML rozróżniamy kilka typów elementów
typ prosty - element zawierajacy
˛ jedynie dane proste (liczby, tekst)
typ złożony - element zawierajacy
˛ inne elementy badź
˛ atrybuty
każdy atrybut jest typem prostym - nie może zawierać ani atrybutów ani
elementów
W schemacie typy złożone deklaruje autor, typy proste sa˛ już zawarte w specyfikacji.
Autor jednak może tworzyć nowe typy proste.
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
Przykłady Elementy proste i złożone Definicje typów Dodatkowe moż
Przykład schematu
Listing 11: Przykład schematu XML2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="adres">
<xsd:element name="nazwisko" type="xsd:string"/>
<xsd:element name="imie" type="xsd:string"/>
<xsd:element name="ulica" type="xsd:string"/>
<xsd:element name="nr_domu" type="xsd:int"/>
<xsd:element name="nr_mieszkania" type="xsd:int" use="optional"/>
</xsd:complexType>
<xsd:simpleType name="nr_ewidencyjny">
<xsd:pattern value="\d{2}-\d{5}" base="xsd:string"/>
</xsd:simpleType>
<xsd:element name="moj_adres" type="adres" maxOccurs="1"/>
</xsd:schema>
Definiujemy przestrzeń nazw xsd, typ złożony adres oraz typ prosty nr_ewidencyjny
składajacy
˛ sie˛ z dwóch cyfr, kreski i pieciu
˛
cyfr.
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
Przykłady Elementy proste i złożone Definicje typów Dodatkowe moż
Wbudowane typy proste
Poniżej wykaz typów jakich można używać:
binary,boolean, byte, century,date, decimal, double, float, int, integer, long
ENTITIES, ENTITY, ID, IDREF, IDREFS, language, month, Name,
NCName, NMTOKEN,NMTOKENS,NOTATION
negativeInteger, nonNegativeInteger, nonPositiveInteger, positiveInteger ,QName,
recurringDate, recurringDay, recurringDuration, short, string,time
timeDuration, timeInstant, timePeriod, unsignedByte,unsignedInt, unsignedLong,
unsignedShort, uriReference, year
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
Przykłady Elementy proste i złożone Definicje typów Dodatkowe moż
Krotność wystapienia
˛
elementu określa sie˛ przy pomocy nastepuj
˛ acych
˛
atrybutów: minOccurs, maxOccurs. Domyślnie maxOccurs=minOccurs.
Bez ograniczeń: maxOccurs="unbounded"
Można też użyć jednego z dwóch atrybutów fixed lub default
W deklaracji atrybutu <xsd:attribute name="licznik"value="100"type="xsd:int">
możliwe jest użycie atrybutu use który może mieć jedna˛ z nastepuj
˛ acych
˛
wartości
required, optionaln fixed, default, prohibited.
Gdy use="default"value="100" to jeśli wartość nie zostanie określona w samym
atrybucie to przypisana zostanie wartość domyślna.
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
Przykłady Elementy proste i złożone Definicje typów Dodatkowe moż
Definicje typów prostych
Listing 12: Typy proste
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:simpleType name="nr_ewidencyjny">
<xsd:pattern value="\d{2}-\d{5}" base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="dzienMiesiaca" base="xsd:integer">
<xsd:minInclusive value="1"/>
<xsd:maxInclusive value="31"/>
</xsd:simpleType>
<xsd:simpleType name="dzienTygodnia" base="xsd:string">
<xsd:enumeration value="Poniedzialek"/>
<xsd:enumeration value="Wtorek"/>
<xsd:enumeration value="Sroda"/>
<xsd:enumeration value="Czwartek"/>
<xsd:enumeration value="Piatek"/>
<xsd:enumeration value="Sobota"/>
<xsd:enumeration value="Niedziela"/>
</xsd:simpleType>
</xsd:schema>
Uwaga: wyrażenie używane do formatowania xsd:pattern maja˛ postać wyrażeń
regularnych Perla!
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
Przykłady Elementy proste i złożone Definicje typów Dodatkowe moż
Anonimowe definicje typów
Czasami nie ma konieczności definiowania osobnych typów. Dzieje sie˛ tak w
przypadku, gdy dany tym byłby użyty np. jedynie raz. Można wtedy zamiast
xsd:simpleType czy xsd:complexType użyć po prostu xsd:element lub xsd:attribute bez
podawania typu.
Można też definiować elementy puste:
Listing 13: Przykład anonimowej definicji typu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<xsd:element name="Album" minOccurs="0" maxOccurs="50">
<xsd:complexType>
<xsd:element name="Title" type="xsd:string"/>
<xsd:element name="Year" type="xsd:Year"/>
<xsd:attribute name="id" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Cover">
<xsd:complexType content="empty">
<xsd:attribute name="source" type="xsd:string"/>
<xsd:attribute name="width" type="xsd:integer"/>
<xsd:attribute name="height" type="xsd:integer"/>
</xsd:complexType>
</xsd:element>
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
Przykłady Elementy proste i złożone Definicje typów Dodatkowe moż
Elementy mieszane
Można też definiować typ mieszany: elementy + zwykły tekst dzieki
˛ atrybutowi
content="mixed". W DTD można było jedynie określić zawartość bez kolejności
wystepowania.
˛
W schematach mamy możliwość podawania kolejności i krotności
wystepowania
˛
poszczególnych elementów.
Listing 14: Elementy mieszane
1
2
3
4
5
6
7
8
9
10
11
12
<xsd:element name="przypominajka">
<xsd:complexType content="mixed">
<xsd:element name="nazwisko" type="xsd:string"/>
<xsd:element name="tytul" type="xsd:string"/>
<xsd:element name="terminMaksymalny">
<xsd:simpleType base="xsd:integer">
<xsd:maxExclusive value="14"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="wartosc" type="xsd:decimal"/>
</xsd:complexType>
</xsd:element>
Atrybut content może przyjmować również wartości
"elementOnly"
"textOnly"
- wartość domyślna dla typów złożonych
- domyślny model zawartości dla typu prostego
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
Przykłady Elementy proste i złożone Definicje typów Dodatkowe moż
Komentarze w schematach
W schematach XML używa sie˛ trzech typów komentarzy:
xsd:annotation
- ogólny komentarz zawierajacy
˛ dwa pozostałe - bardziej
szczegółowe
xsd:documentation
xsd:appInfo
- typowy komentarz przeznaczony dla czytajacych
˛
dokument
- informacje dla aplikacji czytajacych
˛
dokument
np:
Listing 15: komentarze
1
2
3
4
5
<xsd:annotation>
<xsd:documentation>
Jakis komentarz dla przyszlych pokolen
</xsd:documentation>
</xsd:annotation>
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
Przykłady Elementy proste i złożone Definicje typów Dodatkowe moż
xsd:choice
Wybór umożliwia wskazanie szeregu elementów, z których zostanie wybrany zawsze
tylko jeden
Listing 16: Marny wybór
1
2
3
4
5
6
7
8
<xsd:element name="person">
<xsd:complexType>
<xsd:choice>
<xsd:element name="employee" type="employee"/>
<xsd:element name="member" type="member"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
Można też tworzyć sekwencje, aby wymusić kolejność użycia elementów:
Listing 17: Marny wybór
1
2
3
4
5
6
7
8
<xsd:element name="person">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="firstname" type="xsd:string"/>
<xsd:element name="lastname" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
Przykłady Elementy proste i złożone Definicje typów Dodatkowe moż
All i group
Oprócz indykatorów wyboru i sekwencji można używać także indykatoru xsd:all. Jego
użycie oznacza, że wszystkie elementy musza˛ zostać wykorzystane dokładnie raz:
Listing 18: All
1
2
3
4
5
6
7
8
<xsd:element name="person">
<xsd:complexType>
<xsd:all>
<xsd:element name="firstname" type="xsd:string"/>
<xsd:element name="lastname" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
Przykłady Elementy proste i złożone Definicje typów Dodatkowe moż
Pojawienie sie˛ którejś z powyższych trzech konstrukcji można zawrzeć wewnatrz
˛ grupy
a po zdefiniowaniu całej grupy można sie˛ do niej odwołać:
Listing 19: Grupowanie
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<xsd:group name="persongroup">
<xsd:sequence>
<xsd:element name="firstname" type="xsd:string"/>
<xsd:element name="lastname" type="xsd:string"/>
<xsd:element name="birthday" type="xsd:date"/>
</xsd:sequence>
</xsd:group>
<xsd:element name="person" type="personinfo"/>
<xsd:complexType name="personinfo">
<xsd:sequence>
<xsd:group ref="persongroup"/>
<xsd:element name="country" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
Przykłady Elementy proste i złożone Definicje typów Dodatkowe moż
Grupy można również tworzyć dl atrybutów:
Listing 20: Grupy atrybutów
1
2
3
4
5
6
7
8
9
10
11
<xsd:attributeGroup name="personattrgroup">
<xsd:attribute name="firstname" type="xsd:string"/>
<xsd:attribute name="lastname" type="xsd:string"/>
<xsd:attribute name="birthday" type="xsd:date"/>
</xsd:attributeGroup>
<xsd:element name="person">
<xsd:complexType>
<xsd:attributeGroup ref="personattrgroup"/>
</xsd:complexType>
</xsd:element>
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
Przykłady Elementy proste i złożone Definicje typów Dodatkowe moż
ANY
Czasami nawet najlepiej przemyślany schemat musi dopuszczać możliwość
rozszerzenia o kolejny niezdefiniowany element. Do tego typu deklaracji służy xsd:any.
Można też rozszerzyć definicje˛ o dowolny atrybut xsd:anyAttribute
Listing 21: Rozszerzenie definicji o dowolny element
1
2
3
4
5
6
7
8
9
10
<xsd:element name="person">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="firstname" type="xsd:string"/>
<xsd:element name="lastname" type="xsd:string"/>
<xsd:any minOccurs="0"/>
</xsd:sequence>
<xsd:anyAttribute/>
</xsd:complexType>
</xsd:element>
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
Przykłady Elementy proste i złożone Definicje typów Dodatkowe moż
substitutionGroup
Łatwo wyobrazić sobie sytuacje kiedy schemat jest dobrze napisany, ale wszystkie
nazwy elementów sa˛ w jezyku
˛
angielskim. XML z założenia ma opisywać dane tak aby
łatwo sie˛ je czytało. Można użyć podstawienia, które zamiast nazwy np. w jezyku
˛
angielskim pozwoli używać nazw w jezyku
˛
polskim:
Listing 22: substitutionGroup
1
2
3
4
5
6
7
8
9
10
11
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="nazwisko" substitutionGroup="name"/>
<xsd:complexType name="custinfo">
<xsd:sequence>
<xsd:element ref="name"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="customer" type="custinfo"/>
<xsd:element name="klient" substitutionGroup="customer"/>
Listing 23: XML
1
2
3
4
5
6
7
<klient>
<nazwisko>Jan Kowalski</nazwisko>
</klient>
<customer>
<name>John Smith</name>
</customer>
Używajac
˛ atrybutu block="substitution"
możnaXML
zabronić
podstawienia nazwy
T. Romańczukiewicz
02
Przypomnienie DTD Schematy XML Podsumowanie
Plan
1
Przypomnienie
2
DTD
3
Schematy XML
4
Podsumowanie
T. Romańczukiewicz
XML 02
Przypomnienie DTD Schematy XML Podsumowanie
Podsumowanie
Aby wymusić konkretna˛ strukture˛ dokumentu i zawartość elementów używa sie˛
DTD lub schematów
DTD sa˛ bardziej rozpowszechnione jednak maja˛ wiele ograniczeń (np. brak
możliwości dokładnego określania ilości wystapie
˛ ń elementów).
DTD jest osobnym "jezykiem"
˛
określajacym
˛
strukture˛ dokumentu
Schematy pozwalaja˛ na dużo dokładniejsza˛ kontrole˛ struktury dokumentu, oraz
bardziej systematyczne określanie zawartości
Sa˛ poprawnie sformułowanym dokumentem XML
T. Romańczukiewicz
XML 02

Podobne dokumenty