[ 11. April 2000]
- Martin_Nemecek
ètrukt·ra XML dokumentu -- IV.Φas¥ XML
V zßvere minulej, teda tretej, Φasti nßÜho serißlu sme si u₧ ukßzali ako tak² jednoduch² XML dokument m⌠₧e vypada¥.
Dnes si popφÜeme jeho Ütrukt·ru a hlavnΘ zßsady pri tvorbe Ütrukt·ry XML dokumentu.
Xml dokumenty sa skladaj· zo znaΦiek a obsahu (content). Existuje nieko╛ko zßkladn²ch druhov znaΦiek, ktorΘ sa m⌠₧u v dokumentoch vyskytn·¥. S· to elementy (elements), entity (entities), resp. odkazy na entity (entity references), komentßre (comments), spracovate╛skΘ inÜtrukcie (processing instructions, PIs), sekcie CDATA (CDATA sections) a deklarßcie typu dokumentu (document type declarations). Aby sme sa trochu dostali do problΘmu, struΦne si ich popφÜeme.
Elementy
Elementy s· najΦastejÜou formou znaΦky. Elementy identifikuj· obsah, ktor² uzatvßraj·. Je to nieΦo podobnΘ ako v HTML. Element zaΦφna start-tagom a ukonΦen² end-tagom.
<element>
...
</element>
To je jednoduch² element. Samozrejme element m⌠₧e ma¥ urΦitΘ atrib·ty, ktor²ch nßzov a obsah je definovan² u₧ v spomφnanom start-tagu:
<Nazov_Zony nazov="forum.developer.sk"> je element s nßzvom Nazov_Zony s jedn²m atrib·tom, pomenovan²m nßzvom. Tento mß hodnotu forum.developer.sk.
èpecifick²m prφpadom je tzv. prßzdn² (empty) element, ktorΘho syntax je nasleduj·ca:
<element/>
O takomto prφpade sme si u₧ vraveli v minulej Φasti. Jednß sa o element bez start-tagu. Ekvivalentom v klasickom HTML je tag <hr>, alebo <br>, ktor²ch obsah je taktie₧ prßzdny, ale ukonΦovacφ tag ma¥ musia.
Deklarßcia typu elementu
Deklarßcie elementov vykonßvame najΦastejÜie u₧ v spomφnan²ch DTD s·boroch, ktorΘ s· deklarovanΘ v tzv. prol≤goch na zaΦiatku xml dokumentu. K samotn²m DTD s·borom sa eÜte podrobnejÜie dostaneme, a sφce v ∩alÜej Φasti nßÜho serißlu.
Ale teraz u₧ k Üpecifikßcii mena elementu a jeho obsahu:
<!ELEMENT Nazov_Zony (tema, autor+, e-mail?, prispevok)>
Tak₧e tßto deklarßcia nßm identifikuje element naz²van² Nazov_Zony. Za menom nasleduje model obsahu elementu (content model), ktor² definuje Φo element m⌠₧e obsahova¥. V naÜom prφpade musφ element obsahova¥ temu a autora a m⌠₧e obsahova¥ e-mail (prφklad analogick² so strßnkou http://forum.developer.sk, kde ka₧d² diskusn² prφspevok sa nachßdza v urΦitej sekcii (tema) a je identifikovan² menom autora a e-mailovou adresou). Znak + za autorom znamenß, ₧e element autor sa m⌠₧e v rßmci elementu Nazov_Zony opakova¥ viackrßt a musφ sa vyskytn·¥ minimßlne jeden krßt. Otßznik za e-mailom znamenß, ₧e e-mail sa m⌠₧e v elemente nachßdza¥, ale aj nie. Tema sa musφ v element objavi¥ prßve jeden krßt. ╧alÜou mo₧nos¥ou by bola hviezdiΦka, ktorß by znamenala, ₧e element sa m⌠₧e v rßmci inΘho elementu objavi¥ viackrßt, ale nemusφ ani raz. ╚iarky medzi nßzvami elementov naznaΦuj·, ₧e v elemente Nazov_Zony musia by¥ zast·penΘ prßve v tomto poradφ.
Elementy m⌠₧eme rozdeli¥ na dva typy:
1. Elementy, ktorΘ obsahuj· iba ∩alÜie (child) elementy - tzv. element content a
2. elementy, ktorΘ aj child elementy aj samotn² text.
Deklarßcia prvΘho typu je uvedenß vyÜÜie (element Nazov_Zony), deklarßcia druhΘho typu (tzv. mixed content) m⌠₧e vypada¥ naprφklad takto:
<!ELEMENT prispevok (
Takto je definovan² element prispevok, ktor² m⌠₧e obsahova¥ bu∩ znaky (text) -
Prßzdny element je deklarovan² nasledovane:
<!ELEMENT pauza EMPTY>
Tak₧e to by bolo asi na dnes vÜetko. Verφm vßm ₧e u₧ mßte t²ch elementov asi dos¥, ale z h╛adiska pochopenia XML s· jeho ve╛mi d⌠le₧itou s·Φas¥ou. Nab·duce si eÜte povieme nieΦo o atrib·toch a taktie₧ si ukß₧eme ako by mohla vyzera¥ jednoduchß objednßvka na dodßvku tovaru napφsanß v XML.
|
|
|