Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przestrzenie nazw w XPath
Forum PHP.pl > Forum > XML, AJAX > XML
Nalfein][WR
Jak w XPath odwoływać się do przestrzeni nazw? Wie ktoś?

Bo wiem, że mogę napisać:

Kod
/my:element/xi:include/my:tag


ale w ten sposób podaję prefiks, a chodzi mi o URI określające "podpiętą" pod prefiks przestrzeń.

Doczytałem, że jest "oś" ::namespace, ale nigdzie nie udało mi się znaleźć przykładu jak jej użyć.

Chodzi mi mniej więcej o coś takiego:

Kod
/element/include[namespace()="http://www.w3c.org/2001/XInclude"]


czyli o sposób w jaki mogę pobrać np. elementy <include> należące do XInclude, nie pobierając elementów <include> zdefiniowanych w moim własnym języku w innej przestrzeni nazw.
Seth
[xml:1:88a8d6e27c]/element/include[@<nazwa namespace>="http://www.w3c.org/2001/XInclude"][/xml:1:88a8d6e27c]
Moze tak :?
Nalfein][WR
Gdzie <nazwa namespace> to co? Prefix? Nie chcę operować na prefiksach, bo prefiksy wybiera tworzący plik XML tak, aby nie było kolizji. Nie chcę ingerować w to czy napisze sobie "xsd" czy "schema".
Nalfein][WR
Działa taki mutant:

Kod
/element/*[local-name="include" and namespace-uri()="http://www.w3c.org/2001/XInclude"]


a to co wydawałoby się najbardziej intuicyjne:

Kod
/element/include[namespace-uri()="http://www.w3c.org/2001/XInclude"]


oczywiście nie. Nawet, gdy element <include> nie ma prefiksu. Może po prostu spaprali XPath w libxml2 lub w PHP5, bo niektóre teoretycznie poprawne przykłady XPath też nie działają tak jak powinny.

Ale nakarmię Cię Seth winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.