[ Pobierz całość w formacie PDF ]
.4<ODLEGŁOŚĆ><!--w peryhelium--></PLANETA></PLANETY>Oto obiecane przykłady wskaźników XPointers.Zwróć uwagę, że można używać znanych z XPath nawiasów kwadratowych powodujących wybranie konkretnej lokalizacji ze zbioru lokalizacji.PrzykładZnaczeniePLANETAZwraca elementy PLANETA będące dziećmi węzła (czyli węzła kontekstowego).*Zwraca wszystkie dzieci bieżącego węzła będące elementami.text()Zwraca wszystkie dzieci bieżącego węzła będące węzłami tekstowymi.@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ła kontekstu./PLANETY/PLANETA[3]/NAZWA[2]Zwraca drugi element NAZWA trzeciego elementu PLANETA elementu PLANETY.//PLANETAZwraca wszystkich potomków PLANETA węzła głównego.PLANETY//PLANETAZwraca wszystkich potomków PLANETA elementów PLANETY 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ła kontekstowego.Zwraca rodzica węzła kontekstowego./@JEDNOSTKIZwraca atrybut JEDNOSTKI rodzica węzła kontekstowego.PLANETA[NAZWA]Zwraca dzieci PLANETA węzła kontekstowego mające dzieci NAZWA.PLANETA[NAZWA="Wenus"]Zwraca dzieci PLANETA węzła kontekstowego mające dzieci NAZWA z treścią Wenus.PLANETA[@JEDNOSTKI="dzień"]Zwraca dzieci PLANETA węzła kontekstu mające atrybut JEDNOSTKI o wartości dzień.PLANETA[6][@JEDNOSTKI="dzień"]Zwraca szóste dziecko PLANETA węzła kontekstu, jeśli ma ono atrybut JEDNOSTKI o wartości dzień.To samo wyrażenie można zapisać też jako PLANETA[@JEDNOSTKI="dzień"][6].PLANETA[@KOLOR and @JEDNOSTKI]Zwraca wszystkie dzieci PLANETA węzła kontekstu 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 XML moż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 punkty i zakresy.Użycie punktów XPointerZgodnie ze specyfikacją XPointer do zdefiniowania punktu potrzebne są dwie rzeczy: węzeł oraz indeks - 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ą dwa rodzaje 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łem głó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ątym wę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ła odniesienia 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 jest w 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ęźle.Jeśli indeks jest zerem, punkt znajduje się tuż przed pierwszym znakiem.Indeks 5 wskazuje punkt znajdujący się zaraz za piątym znakiem.Punkty znakowe nie mają węzłów sąsiadujących ani dzieci.Na przykład element DOKUMENT można potraktować jako węzeł odniesienia w dokumencie następującym:<DOKUMENT>Witamy!</DOKUMENT>W tym wypadku mamy siedem punktów znakowych, po jednym przed każdym znakiem.Punkt znakowy o indeksie 0 znajduje się tuż przed pierwszym znakiem W, o indeksie 1 przed i i tak dalej.Warto pamiętać, że w specyfikacji XPointer zestawy kolejnych spacji zbijane są w jedną spację.Punktów nie można też umieszczać wewnątrz etykiet początkowych i końcowych, instrukcji przetwarzania ani komentarzy czy jakichkolwiek innych znaczników.Tworzenie punktówW celu utworzenia punktu użyć należy w predykacie funkcji start-point(), na przykład tak:start-point()[position()=10]Oto przykład: załóżmy, że chcemy umieścić punkt tuż przed literą e w słowie Merkury w elemencie NAZWA:<?xml version="1.0" encoding="iso-8859-2"?><?xml-stylesheet type="text/xml" href="planety.xsl"?><PLANETY><PLANETA><NAZWA>Merkury</NAZWA><MASA JEDNOSTKI="(Ziemia=1)">.0553</MASA><DZIEŃ JEDNOSTKI="dni">58.65</DZIEŃ><PROMIEŃ JEDNOSTKI="mile">1516</PROMIEŃ><GĘSTOŚĆ JEDNOSTKI="(Ziemia=1)">.983</GĘSTOŚĆ><ODLEGŁOŚĆ JEDNOSTKI="miliony mil">43.4<ODLEGŁOŚĆ><!--w peryhelium--></PLANETA>.Możemy użyć następującego wyrażenia:xpointer(/PLANETY/PLANETA[1]/NAZWA/text()/start-point()[position()=1])Analogicznie sięgnięcie przed cyfrę 6 w tekście 58 [ Pobierz całość w formacie PDF ]
zanotowane.pl doc.pisz.pl pdf.pisz.pl matkasanepid.xlx.pl
.4<ODLEGŁOŚĆ><!--w peryhelium--></PLANETA></PLANETY>Oto obiecane przykłady wskaźników XPointers.Zwróć uwagę, że można używać znanych z XPath nawiasów kwadratowych powodujących wybranie konkretnej lokalizacji ze zbioru lokalizacji.PrzykładZnaczeniePLANETAZwraca elementy PLANETA będące dziećmi węzła (czyli węzła kontekstowego).*Zwraca wszystkie dzieci bieżącego węzła będące elementami.text()Zwraca wszystkie dzieci bieżącego węzła będące węzłami tekstowymi.@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ła kontekstu./PLANETY/PLANETA[3]/NAZWA[2]Zwraca drugi element NAZWA trzeciego elementu PLANETA elementu PLANETY.//PLANETAZwraca wszystkich potomków PLANETA węzła głównego.PLANETY//PLANETAZwraca wszystkich potomków PLANETA elementów PLANETY 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ła kontekstowego.Zwraca rodzica węzła kontekstowego./@JEDNOSTKIZwraca atrybut JEDNOSTKI rodzica węzła kontekstowego.PLANETA[NAZWA]Zwraca dzieci PLANETA węzła kontekstowego mające dzieci NAZWA.PLANETA[NAZWA="Wenus"]Zwraca dzieci PLANETA węzła kontekstowego mające dzieci NAZWA z treścią Wenus.PLANETA[@JEDNOSTKI="dzień"]Zwraca dzieci PLANETA węzła kontekstu mające atrybut JEDNOSTKI o wartości dzień.PLANETA[6][@JEDNOSTKI="dzień"]Zwraca szóste dziecko PLANETA węzła kontekstu, jeśli ma ono atrybut JEDNOSTKI o wartości dzień.To samo wyrażenie można zapisać też jako PLANETA[@JEDNOSTKI="dzień"][6].PLANETA[@KOLOR and @JEDNOSTKI]Zwraca wszystkie dzieci PLANETA węzła kontekstu 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 XML moż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 punkty i zakresy.Użycie punktów XPointerZgodnie ze specyfikacją XPointer do zdefiniowania punktu potrzebne są dwie rzeczy: węzeł oraz indeks - 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ą dwa rodzaje 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łem głó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ątym wę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ła odniesienia 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 jest w 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ęźle.Jeśli indeks jest zerem, punkt znajduje się tuż przed pierwszym znakiem.Indeks 5 wskazuje punkt znajdujący się zaraz za piątym znakiem.Punkty znakowe nie mają węzłów sąsiadujących ani dzieci.Na przykład element DOKUMENT można potraktować jako węzeł odniesienia w dokumencie następującym:<DOKUMENT>Witamy!</DOKUMENT>W tym wypadku mamy siedem punktów znakowych, po jednym przed każdym znakiem.Punkt znakowy o indeksie 0 znajduje się tuż przed pierwszym znakiem W, o indeksie 1 przed i i tak dalej.Warto pamiętać, że w specyfikacji XPointer zestawy kolejnych spacji zbijane są w jedną spację.Punktów nie można też umieszczać wewnątrz etykiet początkowych i końcowych, instrukcji przetwarzania ani komentarzy czy jakichkolwiek innych znaczników.Tworzenie punktówW celu utworzenia punktu użyć należy w predykacie funkcji start-point(), na przykład tak:start-point()[position()=10]Oto przykład: załóżmy, że chcemy umieścić punkt tuż przed literą e w słowie Merkury w elemencie NAZWA:<?xml version="1.0" encoding="iso-8859-2"?><?xml-stylesheet type="text/xml" href="planety.xsl"?><PLANETY><PLANETA><NAZWA>Merkury</NAZWA><MASA JEDNOSTKI="(Ziemia=1)">.0553</MASA><DZIEŃ JEDNOSTKI="dni">58.65</DZIEŃ><PROMIEŃ JEDNOSTKI="mile">1516</PROMIEŃ><GĘSTOŚĆ JEDNOSTKI="(Ziemia=1)">.983</GĘSTOŚĆ><ODLEGŁOŚĆ JEDNOSTKI="miliony mil">43.4<ODLEGŁOŚĆ><!--w peryhelium--></PLANETA>.Możemy użyć następującego wyrażenia:xpointer(/PLANETY/PLANETA[1]/NAZWA/text()/start-point()[position()=1])Analogicznie sięgnięcie przed cyfrę 6 w tekście 58 [ Pobierz całość w formacie PDF ]