Schematy XML - Politechnika Warszawska

Transkrypt

Schematy XML - Politechnika Warszawska
Schematy XML
Tomasz Traczyk
Politechnika Warszawska
e-mail: [email protected]
Abstrakt. Schematy XML sáX* GR GHILQLRZDQLD VWUXNWXU\ GRNXPHQWyZ ;0/ L Z ]DáR*HQLX PDM ]DVWSLü
DTD (Document Type Definition). Przedstawiono powody dla których DTD nie jest wystarczajF\P URdkiem do definiowania struktur dokumentów, omówiono koncepcj
VFKHPDWyZ RUD] SRGVWDZ\ SURSR]\FML
standardu W3C XML Schema. Zaprezentowano tak*H PR*OLZRFL SU]HWZDU]DQLD VFKHPDWyZ ]D SRPRF
narz
G]L 2UDFOH
1. Dlaczego schematy?
Dokument XML przeznaczony do przetwarzania powinien byü SUDZLGáRZ\ valid): mieü VNáDdni
SRSUDZQ Z VHQVLH RJyOQ\FK ]DVDG ;0/ SRSUDZQRü W\SX well formed) oraz zgodn ] PRGHOHP
struktury zdefiniowanym dla konkretnego typu dokumentu (poprawnoü W\SX valid).
Mo*OLZRü ]ZHU\ILNRZDQLD SUDZLGáRZRFL GRNXPHQWX MHVW ]DWHP XZDUXQNRZDQD LVWQLHQLHP Podelu okreODMFHJR VWUXNWXU
GRNXPHQWX : 6*0/ GR GHILQLRZDQLD WDNLFK PRGHOL X*\ZD VL
W]Z
DTD (Document Type Definition). XML przejá WHQ VSRVyE L WDN*H XPR*OLZLD X*\FLH '7' FKRü Z
uproszczonej w stosunku do SGML wersji). DTD zawiera definicje wszystkich elementów u*\Zanych w dokumencie: nazwy elementów, nast
SVWZR L VSRVyE ]DJQLH*G*DQLD GHILQLFMH DWU\EXWyZ LWS
W XML, inaczej ni* Z 6*0/ LVWQLHQLH PRGHOX VWUXNWXU\ GRNXPHQWX QLH MHVW RERZL]NRZH ]akáDGD VL
ERZLHP *H SU]HJOGDUNL SRZLQQ\ XPLHü RGF]\WDü L Z\ZLHWOLü SRSUDZQLH ]EXGRZDQ\ Gokument nawet jeOL QLH PDM GRVW
SX GR WDNLHJR PRGHOX -HOL MHGQDN yZ PRGHO QLH LVWQLHMH WR SDUVHU\
XML nie mog DXWRPDW\F]QLH VSUDZG]Dü SUDZLGáRZRFL GRNXPHQWX SRQDG Z\PDJDQLD SRSUDZQoFL W\SX well formed). Zwykle nie jest to problemem w przypadku dokumentów przeznaczonych
tylko do przeglGDQLD 'OD GRNXPHQWyZ SU]H]QDF]RQ\FK GR GDOV]HJR SU]HWZDU]DQLD QS GRNXPHntów zawierajF\FK ]áR*RQH GDQH WDNLH UR]ZL]DQLH QLH Z\GDMH VL
MHGQDN UDFMRQDOQH 6SUDZG]DQLH
prawidáRZRFL GRNXPHQWX VSRF]\ZD ERZLHP ZyZF]DV QD ND*G\P SURJUDPLH DQDOL]XMF\P GRNument, nie mo*H ]D E\ü Z\NRQDQH ]D Somoc VWDQGDUGRZ\FK QDU]
G]L
Modelu dokumentu wyra*RQ\ ]D SRPRF '7' SR]ZDOD VSUDZG]Lü SUDZLGáRZRü VDPHJR ]QDNowania, ale okazuje si
QLHZ\VWDUF]DMF\ GOD ZLHOX ]DVWRVRZD : '7' QLH SU]HZLG]LDQR ERZLHP
wielu mo*OLZRFL NWyUH QLH V V]F]HJyOQLH SU]\GDWQH SU]\ SU]HWZDU]DQLX WHNVWyZ D GR WHJR SU]HGH
wszystkim miaá VáX*\ü 6*0/ OHF] Z\GDM VL
QLH]E
GQH SU]\ SU]HWZDU]DQLX VWUXNWXU GDQ\FK
Tymczasem XML jest cz
VWR D PR*H QDZHW SU]HGH ZV]\VWNLP VWRVRZDQ\ ZáDQLH GR Z\PLDQ\ Ganych. Typowe tego typu zastosowania XML to np. elektroniczna wymiana danych (EDI), handel
elektroniczny, elektroniczne transakcje typu B2B (business to business).
Dlatego stosunkowo szybko zorientowano si
*H SRWU]HEQ\ MHVW QRZ\ VSRVyE GHILQLRZDQLD PRGeli, uwzgl
GQLDMF\ QRZH SRWU]HE\ L PDMF\ Z SU]\V]áRFL ]DVWSLü '7' 3RZVWDáR NLOND SURSR]\FML
(np. XML-Data, wspierana przez Microsoft), spraw ]DM
áR VL
WDN*H NRQVRUFMXP :& World Wide
Web Consortium). PrzygotowaáR RQR VSHF\ILNDFM
M
]\ND XML Schema [8, 9, 10], majF RG QLedawna rang
UHNRPHQGDFML FR SUDNW\F]QLH R]QDF]D X]QDQLH VWDQGDUGX ]D RERZL]XMF\ 1DOH*\ VL
spodziewaü *H Z QDMEOL*V]\P F]DVLH VWDQGDUG WHQ ]RVWDQLH SRZV]HFKQLH ]DDNFHSWRZDQ\ L SRZROL
b
G]LH Z\SLHUDá '7'
2. Schematy a DTD
Dlaczego model DTD zostaá X]QDQ\ ]D QLHZ\VWDUF]DMF\ GOD ZLHOX ]DVWRVRZD ;0/"
Otó* QDMZD*QLHMV] ZDG '7' Z\GDMH VL
EUDN PR*OLZRFL SUHF\]\MQHJR GHILQLRZDQLD W\SyZ Ganych dla zawartoFL HOHPHQWyZ RUD] DWU\EXWyZ 3R]D PR*OLZRFL MDZQHJR Z\OLF]HQLD GRSXV]F]Dlnych wartoFL DWU\EXWyZ RUD] ]DVWU]H*HQLD *H ZDUWRü PD VSHáQLDü Z\PDJDQLD QDU]XFDQH SU]H]
standard XML dla nazw nie ma bowiem w DTD *DGQ\FK URGNyZ GR NRQWURORZDQLD W\SyZ GDQ\FK
zawartoü HOHPHQWyZ L DWU\EXWyZ MHVW SR SURVWX QDSLVHP 2 LOH MHVW WR QD RJyá Z\VWDUF]DMFH SU]\
okreODQLX VWUXNWXU\ GRNXPHQWyZ WHNVWRZ\FK WR ]XSHáQLH QLH VSHáQLD Z\PDJD NWyUH VWDZLD VL
zwykle strukturom danych.
OczywiFLH SURJUDP\ LQWHUSUHWXMFH GRNXPHQW\ ;0/RZH PRJ VSUDZG]Dü SRSUDZQRü GDQ\FK
analizujF RZH VWDQRZLFH ]DZDUWRü HOHPHQWyZ QDSLV\ 5R]ZL]DQLH WDNLH QLH MHVW MHGQDN VDW\VIDkcjonujFH JG\* GR EDGDQLD SRSUDZQRFL GDQ\FK WU]HED ND*GRUD]RZR EXGRZDü VSHFMDOL]RZDQ\ GOD
danego modelu dokumentu program, a nie mo*QD X*\ü VWDQGDUGRZ\FK QDU]
G]L QS W\SRZHJR SDUVera XML). To za VWDZLD SRG ]QDNLHP ]DS\WDQLD SU]HZDJ
X*\FLD ;0/ QDG LQQ\PL VSRVREDPL ]DSisu danych.
DTD ma te* EDUG]R RJUDQLF]RQH PR*OLZRFL FR GR UR]EXGRZ\ MX* ]GHILQLRZDQ\FK
ORQ\
SU]H] '7' PRGHO MHVW Z ]DVDG]LH ]DPNQL
W\ FK\ED
*H X*\MH
PRGHOL 2NUe-
VL
Z QLP ÄV]WXF]NL´ SROHJDMFHM
na wykorzystaniu tzw. encji parametrycznych. Owe encje parametryczne stanowi URG]DM PDNURGefinicji, które s UR]ZLMDQH Z F]DVLH LQWHUSUHWDFML '7' =PLDQD GHILQLFML HQFML SDUDPHWU\F]QHM Sozwala na modyfikacj
'7' QS QD MHJR UR]V]HU]DQLH -HVW WR MHGQDN PHFKDQL]P QLHQDWXUDOQ\ QLewygodny i ograniczony.
DTD nie daje tak*H SURJUDPRP LQWHUSUHWXMF\P GRNXPHQW\ ;0/ PR*OLZRFL VSR*\WNRZDQLD
faktu, *H SHZQH F]
FL PRGHOX V LGHQW\F]QH 'OD Z\UD*HQLD WDNLFK SRZWDU]DMF\FK VL
F]
FL PRGHOX
(np. takich samych zestawów atrybutów dla wielu elementów) w DTD mo*QD ZSUDZG]LH X*\ü HQFML
parametrycznych. Jednak programy analizujFH GRNXPHQW ;0/ RWU]\PXM MX* UR]ZLQL
W SRVWDü
DTD, nie mog ZL
F Z *DGHQ VSRVyE Z\NRU]\VW\ZDü LQIRUPDFML Z\QLNDMF\FK ]H VSRVREX X*\FLD
encji parametrycznych.
DTD nie zapewnia dobrego sposobu uwzgl
GQLHQLD SU]HVWU]HQL QD]Z XML Namespaces [7]). Jedyna mo*OLZRü VWZRU]HQLD '7' GOD GRNXPHQWX X*\ZDMFHJR SU]HVWU]HQL QD]Z SROHJD QD ZSLVDQLX
do DTD „na sztywno” przedrostków zwi]DQ\FK ] SU]HVWU]HQL -HVW WR EDUG]R RGOHJáH RG LQWHQFML
twórców pomysáX SU]HVWU]HQL QD]Z
PopularnoFL '7' QLH SU]\VSDU]D UyZQLH* IDNW L* GR ]DSLVX '7' X*\ZD VL
M
]\ND ]XSHáQLH Uy*nego od XML. Projektant struktur XML-owych musi wi
F RSDQRZDü GRGDWNRZ\ G]LZDF]Q\ FKRü
doü SURVW\ M
]\N 7DNLH UR]ZL]DQLH EXG]L WH* ZWSOLZRFL QDWXU\ HVWHW\F]QHM RUD] ± FR ZD*QLHMV]H
– uniemo*OLZLD ]DVWRVRZDQLH QDU]
G]L ;0/RZ\FK QS ;6/7 GR SU]HWZDU]DQLD VDP\FK PRGHOL
dokumentów.
Schematy wydaj VL
UR]ZL]\ZDü ZL
NV]Rü SUREOHPyZ ZL]DQ\FK ] '7'
• umo*OLZLDM
SUHF\]\MQH GHNODURZDQLH W\SyZ GDQ\FK ] Z\NRU]\VWDQLHP EDUG]R UR]EXGRZDQe-
go sáRZQLND W\SyZ HOHPHQWDUQ\FK L ] PR*OLZRFL GHILQLRZDQLD ZáDVQ\FK W\SyZ
• pozwalaj
QD MHGQRNURWQH GHILQLRZDQLH SRZWDU]DMF\FK VL
IUDJPHQWyZ PRGHOX QS W\SyZ
grup elementów i atrybutów) i wielokrotne odwoá\ZDQLH VL
GR WDNLFK GHILQLFML
• umo*OLZLDM
]GHILQLRZDQLH ]ELRUyZ HOHPHQWyZ Z NWyU\FK OLF]ED Z\VWSLH ND*GHJR HOHPHQWX
jest kontrolowana, ale kolejnoü MHVW GRZROQD
• umo*OLZLDM SUHF\]\MQH GHNODURZDQLH QLHSRZWDU]DOQRFL Z\EUDQ\FK ZDUWRFL
cz
FL GRNXPHQWX SR]ZDOD WR PLQ GHILQLRZDü NOXF]H L RGZRáDQLD GR QLFK
Z RNUHORQHM
• pozwalaj
]DGHNODURZDü ZLHOH HOHPHQWyZ R WDNLHM VDPHM QD]ZLH DOH LQQ\P SRáR*HQLX Z GRNu-
mencie i innej budowie;
• maj
UR]EXGRZDQH PHFKDQL]P\ SR]ZDODMFH QD NRQWURORZDQH UR]V]HU]DQLH L XV]F]HJyáDZLDQLH
modeli dokumentów; mo*OLZH MHVW WDN*H NRU]\VWDQLH ] ZLHOX VFKHPDWyZ Z MHGQ\P GRNXPHQFLH
• w peáQL
XZ]JO
GQLDM SU]HVWU]HQLH QD]Z L SR]ZDODM NRQWURORZDü MH Z VSRVyE ]JRGQ\ ] LGH
tych przestrzeni (w tym tak*H NRPSRQRZDü QRZH PRGHOH ] NLONX SU]HVWU]HQL QD]Z
• same zapisane s Z ;0/ ] X*\FLHP SU]HVWU]HQL QD]Z
OczywiFLH WDN*H VFKHPDW\ QLH V SR]EDZLRQH ZDG PLQ
• s
GáX*V]H L ]QDF]QLH EDUG]LHM VNRPSOLNRZDQH RG '7' FKRü MHVW WR UHNRPSHQVRZDQH ZL
k-
szymi mo*OiwoFLDPL L ]QDQ VNáDGQL ;0/RZ
• nie zawieraj
PR*OLZRFL GHILQLRZDQLD HQFML MHOL ZL
F Z GRNXPHQFLH PDM E\ü X*\WH HQFMH WR
musi on mieü '7'
Pewne wady schematów maj MDN VL
Z\GDMH FKDUDNWHU SU]HMFLRZ\
• schematy s MHV]F]H PDáR ]QDQH WUXGQR ZL
F R
ma te* QD WHQ WHPDW SRSXODUQ\FK SRGU
F]QLNyZ
• narz
G]LD ]DZLHUDMFH
znaczF\ SRVW
S
HNVSHUWyZ XPLHMF\FK MH Z\NRU]\VW\ZDü QLH
ZVSDUFLH GOD VFKHPDWyZ V MHV]F]H QLHOLF]QH ZLGDü WX MHGQDN RVWDWQLR
3. XML Schema – wprowadzenie
Schemat XML skáDGD VL
] GHNODUDFML L GHILQLFML 'HNODUDFMH RNUHODM HOHPHQW\ L DWU\EXW\ PRJFH
znale(ü VL
Z GRNXPHQWDFK NWyU\FK PRGHOHP MHVW VFKHPDW 'HILQLFMH RNUHODM SRPRFQLF]H RELHNW\
wchodzFH Z VNáDG VDPHJR VFKHPDWX W\S\ JUXS\ LWS
Elementy schematu bezpoUHGQLR QDOH*FH GR HOHPHQWX JáyZQHJR <schema> s W]Z HOHPHQWDPL
globalnymi. Elementy globalne tworz QD]ZDQH GHILQLFMH QS W\SyZ HOHPHQWyZ DWU\EXWyZ GR
których mo*QD VL
RGZRá\ZDü SR QD]ZLH Z LQQ\FK GHILQLFMDFK L GHNODUDFMDFK
Schemat XML deklaruje nazwy elementów i atrybutów oraz ich dopuszczalne nast
SVWZR L ]DZLeranie a tak*H W\S\ GDQ\FK GOD ZDUWRFL HOHPHQWyZ L DWU\EXWyZ RUD] GRSXV]F]DOQH ]DNUHV\ W\FK ZDUWoFL
2NUHOD VL
WR GHILQLXMF W\S\ GDQ\FK
Typy mog E\ü
• proste, tzn. nie zawierajFH ]DJQLH*G*RQ\FK HOHPHQWyZ DWU\EXW\ PXV] E\ü SURVW\FK W\SyZ
• záR*RQH ± ]DZLHUDMFH ]DJQLH*G*RQH HOHPHQW\
3.1. PrzykáDG
Podano tutaj przykáDG VFKHPDWX GOD GRNXPHQWX ;0/
káDGDQ\FK QD Z\G]LDOH Z\*V]HM XF]HOQL SRU >3, 4]).
]DZLHUDMFHJR NRQVSHNW\ SU]HGPLRWyZ Zy-
Oto przykáDGRZ\ GRNXPHQW ;0/
<?xml version="1.0" encoding="ISO-8859-2"?>
<?xml-stylesheet type="text/xsl" href="konspekty.xsl"?>
<eres_konspekty
xmlns="http://www.elka.pw.edu.pl/eres"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.elka.pw.edu.pl/eres konspekty.xsd">
<przedmiot id="KBD2" wersja="1">
<slowo_kluczowe>bazy danych</slowo_kluczowe>
<slowo_kluczowe>Oracle</slowo_kluczowe>
<konspekt>
<czesc_konspektu id="Streszczenie">
<P>Monograficzny przedmiot poZL
FRQ\ ED]LH GDQ\FK L QDU]
G]LRP 2UDFOH</P>
</czesc_konspektu>
<czesc_konspektu id="Treü!
<P>
Omawiane s SRGVWDZRZH ]DJDGQLHQLD ]ZL]DQH ] Z\NRU]\VWDQLHP 5'%06
Oracle8 i Oracle8<I>i</I>, w tym mo*OLZRFL Z\NRU]\VWDQLD M
]\ND ;0/
</P>
<P> Przedstawiane s WDN*H QDU]
G]LD 2UDFOH3!
<UL>
<LI> Oracle Forms, </LI>
<LI> Oracle Reports, </LI>
<LI> Oracle XDK. </LI>
</UL>
</czesc_konspektu>
</konspekt>
</przedmiot>
</eres_konspekty>
W elemencie gáyZQ\P <eres_konspekty> zdefiniowano domyOQ QLH Z\PDJDMF SUHILNVyZ
przestrze QD]Z MHVW RQD ]JRGQD ] SU]HVWU]HQL GRFHORZ VFKHPDWX 3RZRáDQR VL
WDN*H QD SU]estrze QD]Z RNUHODMF DWU\EXW schemaLocation, sáX*F\ GR ZVND]DQLD VFKHPDWX
Do dokumentu tego zbudowano schemat (zapisany w pliku konspekty.xsd):
<?xml version="1.0" encoding="ISO-8859-2"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.elka.pw.edu.pl/eres"
xmlns="http://www.elka.pw.edu.pl/eres"
elementFormDefault="qualified"
version="1.1">
<xsd:include schemaLocation="teksty.xsd"/>
<xsd:element name="eres_konspekty">
<xsd:annotation>
<xsd:documentation>PrzykáDG QD NRQIHUHQFM
3/28*
[VGGRFXPHQWDWLRQ!
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="przedmiot" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:key name="id_wersji">
<xsd:selector xpath="przedmiot"/>
<xsd:field xpath="@id"/>
<xsd:field xpath="@wersja"/>
</xsd:key>
</xsd:element>
<xsd:element name="przedmiot">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="slowo_kluczowe" type="xsd:string"
minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="konspekt">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="czesc_konspektu"
minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attributeGroup ref="identyfikatory"/>
<xsd:attribute name="wersja">
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedByte">
<xsd:maxExclusive value="10"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
<xsd:key name="id_czesci">
<xsd:selector xpath="konspekt/czesc_konspektu"/>
<xsd:field xpath="@id"/>
</xsd:key>
</xsd:element>
<xsd:element name="czesc_konspektu">
<xsd:complexType>
<xsd:group ref="tekst" minOccurs="1" maxOccurs="unbounded"/>
<xsd:attributeGroup ref="identyfikatory"/>
</xsd:complexType>
</xsd:element>
<xsd:attributeGroup name="identyfikatory">
<xsd:attribute name="id" type="xsd:Name" use="required"/>
</xsd:attributeGroup>
</xsd:schema>
Cz
ü PRGHOX ]DZLHUDMF W\SRZH GHILQLFMH SU]\GDWQH ]DSHZQH Z ZLHOX W\SDFK GRNXPHQWyZ
wydzielono do osobnego schematu i wáF]RQR GR VFKHPDWX JáyZQHJR ]D SRPRF HOHPHQWX
<include>. Oto owa „uniwersalna” cz
ü ]DZDUWD Z SOLNX teksty.xsd):
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:element name="P">
<xsd:complexType mixed="true">
<xsd:sequence>
<xsd:element ref="I" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="UL">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="LI" type="xsd:string"
minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:group name="tekst">
<xsd:choice >
<xsd:element ref="P"/>
<xsd:element ref="UL"/>
</xsd:choice>
</xsd:group>
<xsd:element name="I" type="xsd:string"/>
</xsd:schema>
Jak si
áDWZR GRP\OLü HOHPHQW\ QDOH*FH GR SU]HVWU]HQL QD]Z R]QDF]RQHM SUHILNVHP
xsd stano-
wi VNáDGQLNL M
]\ND GHILQLRZDQLD VFKHPDWyZ
Element <annotation> sáX*\ GR XPLHV]F]DQLD GRGDWNRZ\FK LQIRUPDFML R GHILQLRZDQ\P VFKemacie i zawieraü PR*H HOHPHQW\ <documentation> przeznaczone dla ludzi czytajF\FK VFKHPDW
oraz elementy <appInfo> w których umieszcza si
LQIRUPDFMH VWHUXMFH G]LDáDQLHP SURJUDPyZ NR
rzystajcych ze schematu.
W przykáDGRZ\P VFKHPDFLH ]DVWRVRZDQR PLHV]DQ PHWRG
GHILQLRZDQLD HOHPHQWyZ QLHNWyUH
elementy s GHNODURZDQH RG UD]X Z PLHMVFX LFK Z\NRU]\VWDQLD inline); tak zadeklarowano np. element <konspekt>. Inne s GHILQLRZDQH MDNR HOHPHQW\ JOREDOQH L SRZRá\ZDQH SU]H] QD]Z
]D Somoc DWU\EXWX ref) w miejscu, gdzie maj E\ü Z\NRU]\VWDQH 7DN ]GHILQLRZDQR QS HOHPHQW\ <P>
i <UL>. OczywiFLH ZV]HONLH RELHNW\ NWyUH PDM E\ü Z\NRU]\VW\ZDQH ZLHORNURWQLH PXV] E\ü GHIiniowane jako elementy globalne.
Podobnie tak*H LQQH RELHNW\ ± DWU\EXW\ W\S\ SURVWH L ]áR*RQH ± PR*QD GHILQLRZDü JOREDOQLH L wykorzystywaü SU]H] RGZRáDQLH GR nazwy) albo lokalnie (inline).
3.2. Proste typy danych
Typy proste buduje si
QD SRGVWDZLH
wbudowane wymieniono w tabeli 1.
HOHPHQWDUQ\FK W\SyZ ZEXGRZDQ\FK 3RGVWDZRZH W\S\
Tabela 1. Wbudowane typy XML Schema (wybór)
Nazwa typu
Opis
PrzykáDGRZH SRGW\S\
string
Napis
WartoFL true i false
Liczba staáRSU]HFLQNRZD
normalizedString, language, Name
boolean
decimal
integer, negativeInteger,
nonPositiveInteger, int, short,
byte, unsignedInt
float, double Liczba zmiennoprzecinkowa
duration
DáXJRü RNUHVX F]DVX
dateTime
Data i czas
date, time
gYear
Data, czas
Rok (gregoriaVNL
Niektóre z typów elementarnych maj MHV]F]H SRGW\S\ derived types), np. typ string ma m.in.
podtypy normalizedString (bez tabulatorów i znaków zmiany linii), language (dwuliterowe
skróty j
]yków stosowane w XML), Name – sáRZD QDGDMFH VL
QD QD]Z\ ;0/RZH LWG
W powy*V]\P SU]\NáDG]LH QD RJyá RGZRá\ZDQR VL
EH]SRUHGQLR GR ZEXGRZDQ\FK
mentarnych, np. tak zadeklarowano element <slowo_kluczowe> czy atrybuty id.
Mo*QD EXGRZDü ZáDVQH W\S\ SURVWH Z RSDUFLX R ZEXGRZDQH W\S\ HOHPHQWDUQH
w schemacie typy proste. KonstruujF WH W\S\ PR*QD X*\ü NLONX URGNyZ
e-
W\SyZ HO
OXE ]GHILQLRZDQH
• Ograniczenie (restriction) wykorzystuje tzw. fasety (facets) typów bazowych. Dla typu
string s WR QS RJUDQLF]HQLD QD GáXJRü RUD] Z]RUFH (patterns) formuáRZDQH ]D SRPRF
wyra*H UHJXODUQ\FK SRGREQ\FK MDN Z Perlu), dla typów numerycznych – np. dolne lub górne
ograniczenia wartoFL : SRZ\*V]\P SU]\NáDG]LH Z\NRU]\VWDQR WDNLH RJUDQLF]HQLH GOD RNUeOHQLD ]DNUHVX ZDUWRFL DWU\EXWX wersja.
• Wyliczenie (enumeration) jest rodzajem fasety, polegajF\P
dopuszczalnych wartoFL
QD MDZQ\P SRGDQLX ZV]\VWNLFK
• PoáF]HQLH union) tworzy typ do którego nale* ZV]\VWNLH ZDUWRFL QDOH*FH GR NWyUHJRNRlwiek z typów áF]RQ\FK VWRVXMH VL
QDMF]
FLHM GR VXPRZDQLD W\SyZ Z\OLF]HQLRZ\FK
Specyficzny rodzaj ogranicze ZDUWRFL VWDQRZL Z\PDJDQLH QLHSRZWDU]DOQRFL ZDUWRFL Z UDPDFK
dokumentu lub jego cz
FL :\PDJDQLH QLHSRZWDU]DOQRFL PR*H GRW\F]\ü ZDUWRFL SRMHG\QF]HJR
elementu lub atrybutu albo záR*HQLD NLONX elementów/atrybutów. Takie wymaganie deklaruje si
]D
pomoc HOHPHQWyZ <unique>. Zakres, w którym wartoFL QLH PRJ VL
SRZWDU]Dü RNUHOD VL
SU]H]
umieszczenie tej deklaracji na koFX RGSRZLHGQLHJR HOHPHQWX
Bardzo podobne znaczenie ma deklaracja <key>; oprócz unikalnoFL QDU]XFD RQD WDN*H QLHSXVW
zawartoü ZV]\VWNLFK VNáDGQLNyZ NOXF]D 7DNLH ZáDQLH NOXF]H ]GHILQLRZDQR Z QDV]\P SU]\NáDG]LH
Do takich kluczy mo*QD ]D SRPRF HOHPHQWX <keyref> deklarowaü RGZRáDQLD LFK SRSUDZQRü
(integralnoü UHIHUHQF\jna) winna byü VSUDZG]DQD Z F]DVLH ZDOLGDFML
áR RQH W\S\ GDQ\FK
3.3. Z *
ZáR*RQH
) buduje si
W\S\ GDQ\FK complexType
] HOHPHQWyZ SRGU]
GQ\FK
'RSXV]F]DOQH V
ró*QH VSRVRE\ JUXSRZDQLD W\FK HOHPHQWyZ
• ustalajF\ FLVá NROHMQRü sequence);
• dajF\ Z\EyU ] NLONX PR*OLZRFL choice);
• okreODMF\ ]ELyU HOHPHQWyZ L OLF]E
SRZWyU]H DOH QLH QDU]XFDMF\ NROHMQRFL all).
Liczb
SRZWyU]H HOHPHQWX Z JUXSLH RNUHOD VL
]D SRPRF DWU\EXWyZ minOccurs i maxOccurs
(domyOQH V ZDUWRFL PR*QD WH* RNUHOLü OLF]E
SRZWyU]H FDáHM JUXS\ *UXS\ PRJ E\ü Z VRELH
zagnie*G*DQH FR GDMH PR*OLZRü Z\UD*HQLD GRZROQHJR PRGHOX QDVW
SVWZD
W dokumentach XML cz
VWR VWRVRZDQH V HOHPHQW\ PRJFH ]DZLHUDü ]Z\Ná\ WHNVW SU]HPLHV]DQ\
ze znacznikami. Tak PLHV]DQ ]DZDUWRü GHNODUXMH VL
X*\ZDMF DWU\EXWX mixed dla typu záR*RQego. OkreOHQLH VSRVREX JUXSRZDQLD QS sequence) wyra*D ZWHG\ MDN ]Z\NOH UHJXá\ Z\VW
SRZania elementów podrz
GQ\FK QDWRPLDVW DWU\EXW mixed decyduje, czy elementy te mog E\ü ÄSU]HSOecione” tekstem. W powy*V]\P SU]\NáDG]LH Z WDNL VSRVyE ]DGHNODURZDQR HOHPHQW <P>.
Na koFX GHILQLFML W\SX ]áR*RQHJR PR*QD SRGDü GHNODUDFMH DWU\EXWyZ
\FLD L UR]V]HU]DQLH VFKHPDWyZ
3.4. Mechanizmy wielokrotnego u*
Jedn ] ZD*QLHMV]\FK ]DOHW VFKHPDWyZ MHVW PR*OLZRü ZLHORNURWQHJR X*\FLD ]GHILQLRZDQ\FK Wypów, elementów i atrybutów. Schematy pozwalaj QD VIRUPDOL]RZDQH PRG\ILNRZDQLH QS UR]V]erzanie lub ograniczanie) przywoá\ZDQ\FK GHILQLFML ]H FLVá NRQWURO PR*OLZRFL LFK PRG\ILNRZDQLD
Najprostszym z mechanizmów pozwalajF\FK QD ZLHORNURWQH X*\FLH GHILQLFML MHVW JUXSRZDQLH
Mo*QD UD] ]GHILQLRZDü JUXS
HOHPHQWyZ group) lub atrybutów (attributeGroup) i wielokrotnie
odwoá\ZDü VL
GR QLHM : SRZ\*V]\P SU]\NáDG]LH WDNLHJR VSRVREX X*\WR Z SU]\SDGNX DWU\EXWyZ
id oraz elementu <czesc_konspektu>.
Bardziej záR*RQ\ PRGHO ZLHORNURWQHJR X*\FLD SROHJD QD Z\SURZDG]DQLX QRZ\FK GHILQLFML ] MX*
istniejF\FK 0R*QD Z WHQ VSRVyE WZRU]\ü QRZH SRFKRGQH derived) typy proste i záR*RQH 'OD
typów prostych u*\ü PR*QD PHFKDQL]PyZ RSLVDQ\FK Z F]
FL 3.2. Dla typów záR*RQ\FK GRVW
SQH
s ]D PHFKDQizmy:
• ograniczenia (restriction), polegajFHJR QD ]DZ
*HQLX
albo ograniczeniu licznoFL Z\VW
SRZDQLD HOHPHQWyZ
]DNUHVX GRSXV]F]DOQ\FK ZDUWRFL
• rozszerzenia (extension), tj. dodania do typu bazowego nowych elementów lub atrybutów.
Mechanizmem zwi]DQ\P
elementów oraz typów.
] Z\SURZDG]DQLHP QRZ\FK W\SyZ MHVW ]DVW
SRZDQLH substitution)
Zast
SRZDQLH HOHPHQWyZ SROHJD QD PR*OLZRFL ]GHILQLRZDQLD JUXS\ substitutionGroup)
elementów, które w definiowanym dokumencie mog E\ü X*\ZDQH ]DPLDVW HOHPHQWX ED]RZHJR head) grupy. Elementy w takiej grupie musz PLHü W\S WDNL VDP MDN W\S HOHPHQWX ED]RZHJR DOER So-
chodny od niego. Zast
SRZDQLD
systemu znakowania.
HOHPHQWyZ PR*QD X*\ü QS GR XWZRU]HQLD ZLHOX ZHUVML M
]\NRZ\FK
Mechanizm zast
SRZDQLD W\SyZ SROHJD QD W\P *H HOHPHQW W\SX ED]RZHJR PR*H E\ü Z GRNXPHncie zastSLRQ\ SU]H] Z\VWSLHQLH W\SX SRFKRGQHJR 'R RNUHOHQLD W\SX ]DVW
SXMFHJR X*\ZD VL
Z
dokumencie specjalnego atrybutu.
Twórca schematu mo*H MDZQLH ]GHILQLRZDü PR*OLZRFL MHJR UR]V]HU]DQLD RNUHODMF ]D SRPRF
specjalnych atrybutów, jakie mechanizmy (np. rozszerzania, ograniczania lub zast
SRZDQLD QLH Pog E\ü VWRVRZDQH GR NRQNUHWQ\FK W\SyZ OXE HOHPHQWyZ 3HZQH HOHPHQW\ L W\S\ PR*QD ]GHILQLRZDü
jako abstrakcyjne; oznacza to, *H QLH PRJ RQH E\ü EH]SRUHGQLR Z\NRU]\VWDQH Z GHNODUDFMDFK DOH
sáX* Z\áF]QLH GR ]DVW
SRZDQLD OXE Z\SURZDG]DQLD QRZ\FK GHILQLFML
Jeszcze inny mechanizm mo*H E\ü Z\NRU]\VWDQ\ GR PRG\ILNRZDQLD GHNODUDFML ]DZDUW\FK Z
schemacie wáF]DQ\P GR QRZHJR VFKHPDWX 6SHFMDOQ\ HOHPHQW <redefine>, o dziaáDQLX SRGREQ\P
do <include>, umo*OLZLD SU]HGHILQLRZDQLH Z\EUDQ\FK HOHPHQWyZ DWU\EXWyZ L W\SyZ ZáF]DQHJR
schematu.
W definicjach typów z áR * RQ\FK PR * QD Z\NRU]\VW\ZDü VSHFMDOQH HOHPHQW\ <any> i
<anyAttribute>. Deklaruj RQH ]H]ZROHQLH QD X*\FLH Z GRNXPHQFLH Z PLHMVFX SU]H] QLH RNUeORQ\P ]QDF]QLNyZ Z RJyOH QLH ]GHILQLRZDQ\FK Z VFKHPDFLH -HVW WR ]DWHP ]H]ZROHQLH QD UR]V]erzanie struktury dokumentu przez twórc
GRNXPHQWX RSDUWHJR QD VFKHPDFLH
3.5. Schematy a przestrzenie nazw
Schematy w peáQL Z\NRU]\VWXM PR*OLZRFL SU]HVWU]HQL QD]Z .D*G\ VFKHPDW RNUHOD ]QDF]QLNL
w konkretnej przestrzeni nazw, a walidacja z u*\FLHP VFKHPDWX QDVW
SXMH Z UDPDFK WHM SU]HVWU]HQL
Przestrze GRFHORZ W]Q W
Z NWyUHM E
G IXQNFMRQRZDü ]DGHNODURZDQH Z VFKHPDFLH ]QDF]QLNL
podaje si
Z DWU\EXFLH targetNamespace elementu <schema>. Atrybut elementFormDefault
okreOD ] NROHL UHJXá\ NZDOLILNRZDQLD F]\OL SU]\SLVDQLD GR SU]HVWU]HQL QD]Z GHNODURZDQ\FK Z
schemacie znaczników. Wartoü qualified nakazuje kwalifikowanie wszystkich znaczników (t
mo*OLZRü Z\NRU]\VWDQR Z SU]\NáDG]LH ]D ZDUWRü unqualified okreOD *H NZDOLILNRZDQH E
G
tylko elementy globalne, za LFK HOHPHQW\ SRGU]
GQH ORNDOQH QLH E
G NZDOLILNRZDQH 3U]\ W\P
drugim podejFLX Z SU]HVWU]HQL QD]Z ]QDMGXM VL
W\ONR HOHPHQW\ JOREDOQH ]D LFK SRGU]
GQH HOementy lokalne s GR SU]HVWU]HQL SU]\SLVDQH ]D SRUHGQLFWZHP VZ\FK HOHPHQWyZ QDGU]
GQ\FK JOobalnych). Umo*OLZLD WR WZRU]HQLH ZLHOX HOHPHQWyZ R WDNLFK VDP\FK QD]ZDFK DOH Uy*Q\P SRáR*HQLX
typie i znaczeniu) bez konfliktu w przestrzeni nazw.
Poniewa* VFKHPDW RNUHOD GRFHORZ SU]HVWU]H QD]Z ]QDF]QLNL Z GRNXPHQFLH Z\NRU]\VWXMF\P
schemat musz E\ü SRáR*RQH Z WHM SU]HVWU]HQL QD]Z 3U]\SLVDQH GR SU]HVWU]HQL QD]Z PXV] E\ü
oczywiFLH W\ONR WH ]QDF]QLNL NWyUH ]RVWDá\ ]GHILQLRZDQH MDNR NZDOLILNRZDQH 3U]\SLVDQLD GR SU]estrzeni nazw zwykle dokonuje si
SU]H] X*\FLH SUHILNVyZ DOH PR*QD WDN*H ]GHILQLRZDü SU]HVWU]H
domyOQ L GOD QLHM X*\FLH SUHILNVyZ MHVW ]E
GQH WDN ZáDQLH ]EXGRZDQR GRNXPHQW ;0/ Z SRZ\*szym przykáDG]LH
Przypisanie definiowanych przez schematy znaczników do konkretnych przestrzeni nazw mo*H
powodowaü NáRSRW\ JG\ FKFHP\ Z MHGQ\P VFKHPDFLH Z\NRU]\VWDü ]QDF]QLNL ]DGHNODURZDQH Z Lnnym schemacie. Problemu nie ma, gdy oba schematy u*\ZDM WHM VDPHM GRFHORZHM SU]HVWU]HQL QD]Z
JeOL VFKHPDW ZáF]DQ\ GR QRZHJR PRGHOX Z RJyOH QLH RNUHOD SU]HVWU]HQL WR ZáF]HQLH ]D SRPRF
elementu <include>) powoduje przypisanie wáF]DQ\FK ]QDF]QLNyZ GR GRFHORZHM SU]HVWU]HQL QD]Z
schematu wáF]DMFHJR QD]\ZD VL
WR chameleon effect. W przypadku schematów dostarczajF\FK
„uniwersalnych” znaczników do wielokrotnego wykorzystania w innych schematach rozsGQH MHVW
zatem pomini
FLH GHNODUDFML GRFHORZHM SU]HVWU]HQL QD]Z WDN ZáDQLH ]EXGRZDQR SU]\NáDGRZ\ VFKemat teksty.xsd.
JeOL MHGQDN ZáF]DP\ ]QDF]QLNL ]H VFKHPDWX NWyU\ RNUHODá GRFHORZ SU]HVWU]H QD]Z WR PXVLP\
pozostawiü MH Z WHM SU]HVWU]HQL W]Q ]JRG]Lü VL
QD WR E\ GHILQLRZDQ\ GRNXPHQW Z\NRU]\VW\ZDá ZL
cej ni* MHGQ SU]HVWU]H QD]Z 'R WDNLHJR ZáF]DQLD VFKHPDWyZ VáX*\ HOHPHQW <import>.
Z kilku przestrzeni nazw mo*HP\ WDN*H NRU]\VWDü EH]SRUHGQLR Z GRNXPHQFLH ;0/ -HOL Gokument powoáXMH VL
QD NLOND SU]HVWU]HQL QD]Z WR PR*H WDN*H SRGDü ORNDOL]DFMH VFKHPDWyZ ] QLPL
zwi]DQ\FK 'R ZDOLGDFML NRQNUHWQHJR HOHPHQWX X*\W\ E
G]LH VFKHPDW ]ZL]DQ\ ] SU]HVWU]HQL QD]Z
do której dany element nale*\
Zapis schematu mo*QD UR]V]HU]\ü R DWU\EXW\ QLH QDOH*FH GR VWDQGDUGX XML Schema, np. sterujFH VSHF\ILF]Q\P VSRVREHP SU]HWZDU]DQLD GRNXPHQWX 7DNLH DWU\EXW\ QDOH*\ XPLHFLü Z SU]estrzeni nazw ró*QHM RG XMLSchema.
4. Narz
G]LD
Poniewa* VSHF\ILNDFMD XML Schema jest doü QRZD VWDWXV UHNRPHQGDFML RWU]\PDáD GRSLHUR Z
maju bie*FHJR URNX QLH PD MHV]F]H ]E\W ZLHOX QDU]
G]L NWyUH XPR*OLZLDá\E\ SUDNW\F]QH ]DVWRVowanie schematów. Na szcz
FLH MHGQDN SURGXFHQFL QDU]
G]L ;0/RZ\FK V]\ENR ]DDNFHSWRZDOL WHQ
standard i ju* SRMDZLDM VL
SLHUZV]H QD RJyá MHV]F]H SUyEQH ZHUVMH QDU]
G]L XZ]JO
GQLDMFH JR
G]LDFK ILUP\ 0LFURVRIW
4.1. XML Schema w narz
Microsoft w poprzednich latach lansowaá ZáDVQ VSHF\ILNDFM
VFKHPDWyZ XML-Data, potem
XDR – XML-Data Reduced) ale, choü ]DFKRZDQR ZVSDUFLH GOD WDPW\FK NRQFHSFML Z QDMQRZV]\FK
wersjach narz
G]L SRMawiáD VL
WDN*H PR*OLZRü Z\NRU]\VWDQLD VFKHPDWyZ XML Schema (XSD).
Do wykorzystania schematów XSD niezb
GQH MHVW ]DLQVWDORZDQLH SURGXNWX 0LFURVRIW ;0/
SDK 4.0. Zawiera on parser zgodny ze standardem DOM, który mo*H SU]HSURZDG]Dü ZDOLGDFM
dokumentów z u*\FLHP VFKHPDWyZ ;6' 'R ]DáDGRZDQLD VFKHPDWX VáX*\ VSHFMDOQ\ RELHNW
XMLSchemaCache. Parser ten jest dost
SQ\ SU]H] $3, L PR*H E\ü X*\ZDQ\ Z SURJUDPDFK QS
w j
]\NX JScript czy VisualBasic.
G]LDFK 2UDFOH
4.2. XML Schema w narz
W najnowsze wersje pakietu XDK (XML Developer Kit) firmy Oracle tak*H
wykorzystania schematów XML Schema.
ZáF]RQR PR*OLZRü
W skáDG ;'. ZFKRG]L Oracle XML Schema Processor for Java, wykorzystywany przez parser
typu DOM. Parser ten mo*H SU]HSURZDG]Dü ZDOLGDFM
] X*\FLHP VFKHPDWX ]DáDGRZDQHJR DXWRPatycznie na podstawie zawartoFL GRNXPHQWX ;0/ DOER SURJUDPRZR ± ]D SRPRF VSHFMDOQ\FK NODV
umo*OLZLDMF\FK áDGRZDQLH VFKHPDWX L PDQLSXODFMH QD QLP
Walidacj
GRNXPHQWyZ ;0/RZ\FK ] X*\FLHP VFKHPDWyZ PR*QD WDN*H SU]HSURZDG]Dü
komendy, za pomoc GRVWDUF]DQHJR ] ;'. VNU\SWX NWyU\ QDOH*\ Z\ZRáDü WDN
] OLQLL
oraxml –schema <nazwa_pliku_XML>
5. Podsumowanie
Choü GHILQLRZDQLH ]QDNRZDQLD ]D SRPRF '7'
wa*Q\FK Z\PDJD W\SRZ\FK GOD ]DVWRVRZD ;0/
Internet.
PD GáXJ WUDG\FM
VSRVyE WHQ QLH VSHáQLD ZLHOX
]ZáDV]F]D ]ZL]DQ\FK ] Z\PLDQ GDQ\FK SU]H]
Definiowanie modelu dokumentu za pomoc VFKHPDWyZ FKRü WUXGQLHMV]H RG X*\FLD '7' GDMH
jednak znacznie wi
NV]H PR*OLZRFL D SU]HGH ZV]\VWNLP ]DSHZQLD PR*OLZRü SUHF\]\MQHJR RNUHOe-
nia typów danych, wielokrotnego wykorzystania i sformalizowanej rozbudowy modeli oraz pozwala
w peáQL Z\NRU]\VWDü ]DOHW\ X*\FLD SU]HVWU]HQL QD]Z
Choü VSHF\ILNDFMD XML Schema jest jeszcze caáNLHP QRZD MX* SRMDZLDM VL
QDU]
G]LD
mowe umo*OiwiajFH MHM SUDNW\F]QH ]DVWRVRZDQLH Z W\P WDN*H QDU]
G]LD ILUP\ 2UDFOH
a-
SURJU
Nale*\ ]DWHP SU]\SXV]F]Dü *H '7' ]RVWDQ MX* ZNUyWFH Z\SDUWH SU]H] VFKHPDW\ D SURMHNWDQFL
systemów informacyjnych zyskaj QRZ\ VLOQ\ URGHN GR IRUPDOQHJR GHILQLRZDQLD ]áR*RQ\FK VWUXNWXU
danych.
Bibliografia
1.
Traczyk T.: Wprowadzenie do j
]\ND ;0/
2.
Traczyk T.: XML i XSL, Materiaá\ ;,, *yUVNLHM 6]NRá\ 37, 6]F]\UN 3.
Traczyk T.: J
]\N ;0/ Z DSOLNDFMDFK ] ED]DPL GDQ\FK ± SR URNX 0DWHULDá\ 9 .RQIHUHQFML 'HZHORSHUyZ
i U*\WNRZQLNyZ 2UDFOH Ä,QWHJUDFMD GDQ\FK L V\VWHPyZ LQIRUPDW\F]Q\FK´ =DNRSDQH 4.
Traczyk T.: J
]\N ;6/ 0DWHULDá\ 9, .RQIHUHQFML 'HZHORSHUyZ L 8*\WNRZQLNyZ 2UDFOH Ä6\VWHP\ LQIRrmatyczne w dobie Internetu”, Zakopane 2000.
,QIRUPDW\ND 5.
Traczyk T.: Czy ju* ZDUWR X*\ZDü ;0/"
6.
Extensible Markup Language (XML) 1.0, W3C Recommendation.
7.
Namespaces in XML, W3C Recommendation, http://www.w3.org/TR/REC-xml-names/
8.
XML Schema Part 0: Primer, W3C Recommendation, http://www.w3.org/TR/xmlschema-0/
9.
XML Schema Part 1: Structures, W3C Recommendation, http://www.w3.org/TR/xmlschema-1/
7XWRULDO 0DWHULDá\ , 6HPLQDULXP 3/28* :DUV]DZD 10. XML Schema Part 2: Datatypes, W3C Recommendation, http://www.w3.org/TR/xmlschema-2/
11. Walsh N.: Understanding XML Schemas, http://www.xml.com/pub/a/1999/07/schemas/
12. Costello R.L.: XML Schemas, Tutorial, http://www.xfront.com
13. Jelliffe R.: The XML Schema Specification in Context, http://www.xml.com/pub/a/2001/01/10/schemasincontext.html
14. Oracle XML-enabled, http://www.oracle.com/xml/
15. Oracle XML Developer's Kit, http://technet.oracle.com/tech/xml/

Podobne dokumenty