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/