160 likes | 277 Views
Technológie XML. Namespace. Namespace - motivácia. i d = id zákazníka ID = id tovaru id ≠ ID Namespace umožňuje použitie viacerých XML slovníkov pre jednoznačnú identifikáciu elementov a atribútov v rámci XML dokumentu.
E N D
Technológie XML Namespace
Namespace - motivácia id = id zákazníka ID = id tovaru id ≠ID Namespace umožňuje použitie viacerých XML slovníkov pre jednoznačnú identifikáciu elementov a atribútov v rámci XML dokumentu <?xmlversion="1.0" encoding="UTF-8"?><objednavka> <zakaznik><id>586193</id><meno>Jožko Mrkvička</meno> </zakaznik> <kosik> <tovar id="1"><ID>12345</ID><nazov>USB hub 3.0</nazov> <cena>12,68 EUR</cena> </tovar> <tovar id="2"><ID>85352</ID><nazov>Slúchadla SONY E624</nazov> <cena>26,30 EUR</cena> </tovar> </kosik></objednavka>
Príkazy pre Xpath • Výber všetkých elementov z daného namespace-u • //*[namespace-uri()=„nazov_namespace“] • Výber všetkých atribútov z daného namespace-u • //@*[namespace-uri()=„nazov_namespace“]
Príklad pre dnešné cvičenie Majme elementy skladajúce sa z veľkých písmen, malých písmen a kombinácie veľkých a malých písmen: <aaa> <bbb> <ccc /> </bbb> <BBB > <CCC /> </BBB> <x111 > <x222 /> </x111> </aaa>
Deklarácia namespace • Namespace sa deklaruje nasledovne: xmlns:prefix=“URI” • Deklarácia na každom elemente <lower:aaaxmlns:lower = "http://zvon.org/lowercase" > <lower:bbbxmlns:lower = "http://zvon.org/lowercase" > <lower:cccxmlns:lower = "http://zvon.org/lowercase" /> </lower:bbb> <upper:BBBxmlns:upper = "http://zvon.org/uppercase" > <upper:CCCxmlns:upper = "http://zvon.org/uppercase" /> </upper:BBB> <xnumber:x111xmlns:xnumber = "http://zvon.org/xnumber" > <xnumber:x222xmlns:xnumber = "http://zvon.org/xnumber" /> </xnumber:x111> </lower:aaa>
Deklarácia namespace – alternatíva 1 • Deklaracenamespace-u platí nielenpre elementnaktorom je uvedená, ale aj pre všetkých jeho potomkov (vnorené elementy) <lower:aaaxmlns:lower = "http://zvon.org/lowercase" > <lower:bbb> <lower:ccc/> </lower:bbb> <upper:BBBxmlns:upper = "http://zvon.org/uppercase" > <upper:CCC/> </upper:BBB> <xnumber:x111xmlns:xnumber = "http://zvon.org/xnumber" > <xnumber:x222 /> </xnumber:x111> </lower:aaa>
Deklarácia namespace – alternatíva 2 • Obvyklesa všetky menné priestory deklarujú v koreňovom elemente <lower:aaaxmlns:lower = "http://zvon.org/lowercase" xmlns:upper= "http://zvon.org/uppercase" xmlns:xnumber= "http://zvon.org/xnumber" > <lower:bbb> <lower:ccc/> </lower:bbb> <upper:BBB> <upper:CCC/> </upper:BBB> <xnumber:x111> <xnumber:x222 /> </xnumber:x111> </lower:aaa>
Príklad 1 • Ku akému mennému priestoru patria jednotlivé elementy a prečo? <lower:aaaxmlns:lower = „http://zvon.org/lowercase“xmlns:upper= „http://zvon.org/lowercase“xmlns:xnumber= "http://zvon.org/lowercase" > <lower:bbb > <lower:ccc /> </lower:bbb> <upper:BBB > <upper:CCC /> </upper:BBB> <xnumber:x111 > <xnumber:x222 /> </xnumber:x111> </lower:aaa>
Príklad 2 • Ku akému mennému priestoru patria jednotlivé elementy a prečo? <aaa > <lower:bbbxmlns:lower = "http://zvon.org/lowercase" > <lower:ccc /> </lower:bbb> <lower:BBBxmlns:lower = "http://zvon.org/uppercase" > <lower:CCC /> </lower:BBB> <lower:x111 xmlns:lower = "http://zvon.org/xnumber" > <lower:x222 /> </lower:x111> </aaa>
Deklarácia namespace – alternatíva 3 • Atribút xmlns definuje implicitní menný priestor, ktorý je použitý pre element, na ktorom je deklarovaný a pre všetkých jeho potomkov. <aaa> <bbbxmlns = "http://zvon.org/lowercase" > <ccc /> </bbb> <BBBxmlns = "http://zvon.org/uppercase" > <CCC /> </BBB> <x111xmlns = "http://zvon.org/xnumber" > <x222 /> </x111> </aaa>
Príklad 3 <aaaxmlns:upper = "http://zvon.org/uppercase" xmlns:xnumber= "http://zvon.org/xnumber" > <bbbxmlns = "http://zvon.org/lowercase" > <ccc /> <upper:www/> <xnumber:xxx/> </bbb> <bbbxmlns = "http://zvon.org/uppercase" > <upper:www/> <xnumber:xxx/> <ccc /> </bbb> <xxx xmlns = "http://zvon.org/xnumber" > <yyy/> <upper:www/> <xnumber:zzz/> </xxx></aaa>
Zrušenie implicitného namespace-u • Použitie prázdného reťazca ako hodnotu atribútu xmlns <aaaxmlns = "http://zvon.org/lowercase" > <bbb > <cccxmlns = "" > <ddd/> </ccc> </bbb> </aaa>
Atribúty • Atribúty môžu byť explicitne priradené k danému mennému priestoru. <lower:aaaxmlns:lower = "http://zvon.org/lowercase" xmlns:upper= " http://zvon.org/uppercase "xmlns:xnumber= "http://zvon.org/xnumber" > <lower:bbblower:zz = "11" > <lower:cccupper:WW = "22" /> </lower:bbb> <upper:BBBlower:sss = "***" xnumber:S111 = "???" /> <xnumber:x111 /> </lower:aaa> • Atribúty bez prefixu nikdy nepatria do žiadného menného priestoru
Príklad 4 <aaaxmlns:lower = "http://zvon.org/lowercase" ><lower:BBBxmlns:lower = "http://zvon.org/uppercase" ><lower:x111 /><sssxmlns:lower = "http://zvon.org/xnumber" ><lower:x111 /></sss></lower:BBB><lower:x111 /></aaa>
Príklad 5 <OOO xmlns = „http://zvon.org/xnumber“ xmlns:lower= „http://zvon.org/lowercase“ ooo= "222" > <aaaxmlns:lower = "http://zvon.org/lowercase" > <lower:BBBxmlns:lower = "http://zvon.org/uppercase" > <lower:x111 /> <sssxmlns:lower = "http://zvon.org/xnumber" > <lower:x111 /> </sss> </lower:BBB> <lower:x111 /> </aaa> <aaaxmlns = "http://zvon.org/uppercase" > <BBB xmlns:upper = "http://zvon.org/uppercase" upper:U= "A" U = "A" lower:U = "A" /> </aaa> <aaaxmlns = "http://zvon.org/lowercase" > <upper:BBBxmlns:upper = "http://zvon.org/uppercase" xmlns="http://zvon.org/xnumber" > <x111 /> </upper:BBB> <x111 /> </aaa></OOO>
Riešenie príkladu 5 • http://www.zvon.org/xxl/NamespaceTutorial/Output_cze/example14.html