[ Pobierz całość w formacie PDF ]
.Funkcja root() działa dokładnie tak jak znak /: odwołuje się do węzła głównego (nie jest towęzeł elementu głównego, ale węzeł dotyczący całego dokumentu).Funkcja root() nie należyobecnie do specyfikacji XPath, ale występuje w XPointer.Nie wiadomo jeszcze, czy pozostanietam także w ostatecznej rekomendacji.Funkcja here() odnosi się do elementu bieżącego.Jest użyteczna, gdyż XPointers zwykleznajdują się w węzłach tekstowych lub wartościach atrybutów i konieczne może być odwołanie siędo bieżącego elementu, a nie do bieżącego węzła.Załóżmy na przykład, że chcesz odwołać siędo drugiego od końca elementu NAZWA znajdującego się na tym samym poziomie, co elementzawierający XPointer zastosować należy wtedy wyrażenie:here()/preceding-sibling::NAZWA[position() = 2]Funkcja origin() jest bardzo podobna do here(), ale używa jej się w łączach zewnętrznych,które należeć mogą do innego dokumentu, z którego łącze zostało uruchomione.Może to byćbardzo przydatne, jeśli samo łącze należy do bazy łączy i nie należy odwoływać się do elementu,do którego łącze należy, ale do pierwotnego elementu, z którego zostało uruchomione.W XPointers można używać również składni skróconej.Poniżej podano kilka przykładówopartych na pliku planety.xml:Merkury.055358.651516.98343.4Wenus.815116.753716.94366.8D:\Kompakt !!!\Kompakt\Ksiazki\XML Vademecum profesjonalisty\r10-01.doc 3940 Część I f& Podstawy obsługi systemu WhizBang (Nagłówek strony)Ziemia1121071128.4Oto obiecane przykłady wskazników XPointers.Zwróć uwagę, że można używać znanych z XPathnawiasów kwadratowych powodujących wybranie konkretnej lokalizacji ze zbioru lokalizacji.Przykład ZnaczeniePLANETAZwraca elementy PLANETA będące dziećmi węzła (czyliwęzła kontekstowego).*Zwraca wszystkie dzieci bieżącego węzła będąceelementami.text()Zwraca wszystkie dzieci bieżącego węzła będące węzłamitekstowymi.@JEDNOSTKIZwraca atrybut JEDNOSTKI bieżącego węzła.@*Zwraca wszystkie atrybuty węzła kontekstu.PLANETA[3]Zwraca trzecie dziecko PLANETA węzła kontekstu.PLANETA[first()]Zwraca pierwsze dziecko PLANETA węzła kontekstu.*/PLANETAZwraca wszystkie wnuki (dzieci dzieci) PLANETA węzłakontekstu./PLANETY/PLANETA[3]/Zwraca drugi element NAZWA trzeciego elementuNAZWA[2]PLANETA elementu PLANETY.//PLANETAZwraca wszystkich potomków PLANETA węzła głównego.PLANETY//PLANETAZwraca wszystkich potomków PLANETA elementówPLANETY będących dziećmi węzła bieżącego.//PLANETA/NAZWAZwraca elementy NAZWA mające rodzica PLANETA.Zwraca węzeł kontekstu.//PLANETAZwraca elementy PLANETA będące potomkami węzłakontekstowego.Zwraca rodzica węzła kontekstowego./@JEDNOSTKIZwraca atrybut JEDNOSTKI rodzica węzłakontekstowego.PLANETA[NAZWA]Zwraca dzieci PLANETA węzła kontekstowego mającedzieci NAZWA.40 D:\Kompakt !!!\Kompakt\Ksiazki\XML Vademecum profesjonalisty\r10-01.docRozdział 1 f& Pierwsze kroki (Nagłówek strony)PLANETA[NAZWA="WenusZwraca dzieci PLANETA węzła kontekstowego mające"]dzieci NAZWA z treścią Wenus.PLANETA[@JEDNOSTKI="Zwraca dzieci PLANETA węzła kontekstu mające atrybutdzień"]JEDNOSTKI o wartości dzień.PLANETA[6][@JEDNOSTKZwraca szóste dziecko PLANETA węzła kontekstu, jeśliI="dzień"]ma ono atrybut JEDNOSTKI o wartości dzień.To samowyrażenie można zapisać też jakoPLANETA[@JEDNOSTKI="dzień"][6].PLANETA[@KOLOR andZwraca wszystkie dzieci PLANETA węzła kontekstu@JEDNOSTKI]mające atrybuty KOLOR oraz JEDNOSTKI.W XPath można wybierać jedynie dane na poziomie węzła.Jest to wystarczające, kiedy używa sięoprogramowania obsługującego XML jako zbiór węzłów, na przykład w przypadku przekształceńXSL, ale czasem to za mało.Na przykład użytkownik używający wyświetlonego dokumentu XMLmoże kliknąć myszką jakiś punkt lub wybrać zakres dokumentu (takie obszary nie muszą sięzaczynać ani kończyć na granicach węzłów, mogą zawierać różne drzewka i ich fragmenty).W celu zapewnienia dokładniejszej kontroli nad danymi XML w XPointers udostępniono punktyi zakresy.Użycie punktów XPointerZgodnie ze specyfikacją XPointer do zdefiniowania punktu potrzebne są dwie rzeczy: węzeł orazindeks całkowita liczba dodatnia lub zero.Węzeł stanowi odniesienie dla punktu, indeks określa,jak daleko punkt jest od swojego odniesienia.Powstaje jednak pytanie: w czym mierzyć indeks? W znakach czy w węzłach? Istnieją dwarodzaje węzłów i w obu z nich indeks wylicza się inaczej.Punkty węzłoweKiedy węzeł odniesienia może mieć węzły dzieci (czyli jest węzłem elementu lub węzłemgłównym), nazywamy go punktem węzłowym.Indeks punktu węzłowego mierzony jest węzłami potomnymi.Indeks takiego punktu nie może byćwiększy od liczby dzieci węzła odniesienia.Jeśli użyje się indeksu zero, punkt znajdzie siębezpośrednio przed węzłami dziećmi.Indeks 5 oznacza umieszczenie punktu zaraz za piątymwęzłem dzieckiem.W przypadku punktów węzłowych można użyć osi: węzły sąsiadujące punktu to dzieci węzłaodniesienia znajdujące się przed i za punktem.Same punkty jednak nie mają dzieci.Punkty znakoweJeśli węzeł odniesienia nie może zawierać węzłów potomnych, a tylko tekst, indeks wyrażany jestw znakach.Punkty tego typu nazywamy punktami znakowymi.Indeks punktów znakowych musi być nieujemną liczbą całkowitą oraz musi być nie większy niżdługość tekstu w węzle.Jeśli indeks jest zerem, punkt znajduje się tuż przed pierwszym znakiem.D:\Kompakt !!!\Kompakt\Ksiazki\XML Vademecum profesjonalisty\r10-01
[ Pobierz całość w formacie PDF ]