Sprawdź poprawność składni XML i znajdź dokładne miejsce błędu.
Tester XPath
Sprawdź, co wybiera wyrażenie XPath w Twoim dokumencie XML.
Działa w przeglądarcePrzetwarzanie lokalne. Dane wejściowe nie opuszczają Twojego urządzenia.
XPath 1.0, na przykład //book[@id="1"]/title. // oznacza dowolną głębokość, @ atrybut, [] predykat.
Szczegóły
O tym narzędziu
Wykonuje wyrażenie XPath 1.0 na Twoim XML-u i wypisuje każdy dopasowany węzeł wraz ze ścieżką, typem i wartością. Edytujesz wyrażenie, a lista wyników się odświeża, więc selektor budujesz próbując, a nie zgadując.
XPath to język zapytań do XML-a i leży pod szablonami XSLT, więzami w schematach XML, SOAP-em i narzędziami konfiguracyjnymi, pod większością bibliotek XML w każdym języku i pod sporą częścią automatyzacji przeglądarek. Składnia jest w równym stopniu zwięzła co bezlitosna, a różnica między wyrażeniem zwracającym wszystko i takim, które nie zwraca nic, to często jeden ukośnik.
Podstaw jest niewiele. Pojedynczy ukośnik to bezpośrednie dziecko, podwójny to potomek na dowolnej głębokości, @ wybiera atrybut, a nawiasy kwadratowe mieszczą predykat - warunek albo pozycję w rodzaju [1], liczoną od jedynki, a nie od zera, na czym każdy raz się przejedzie. Funkcje contains(), starts-with() i text() pokrywają większość reszty. Budowanie wyrażenia po kawałku, ze sprawdzaniem liczby trafień na każdym kroku, jest znacznie szybsze niż napisanie całości i zastanawianie się, który fragment jest zły.
Przestrzenie nazw to miejsce, w którym większość wyrażeń po cichu zawodzi. W dokumencie z domyślną przestrzenią nazw //book nie dopasuje elementu <book> - element jest w przestrzeni nazw, a wyrażenie nie, więc parser uznaje to za różne nazwy, choć na ekranie wyglądają identycznie. Typowe obejścia to wyrażenie z prefiksem albo funkcja local-name(), a świadomość tego to różnica między pięcioma minutami a całym popołudniem.
To XPath 1.0, czyli ta wersja, którą implementuje DOM i w której napisana jest niemal każda osadzona ścieżka. Wszystko liczy się w przeglądarce, więc XML nie opuszcza Twojego urządzenia.
Wypróbuj też
Powiązane narzędzia
- Działa w przeglądarceProgramistyczne
-
Koduj tekst do Base64 i dekoduj go z powrotem.
Działa w przeglądarceProgramistyczne -
Formatuj C# silnikiem zgodnym z CSharpierem i opartym na Roslynie.
Działa w przeglądarceProgramistyczne
Warto wiedzieć
Najczęstsze pytania
- Która wersja XPath jest obsługiwana?
- XPath 1.0 - wersja implementowana przez DOM i osadzona w XSLT 1.0, XML Schema oraz większości bibliotek językowych. XPath 2.0 i 3.1 dokładają sekwencje, prawdziwy system typów i znacznie więcej funkcji, ale wymagają osobnego procesora i w praktyce spotyka się je rzadko.
- Czy działa z przestrzeniami nazw?
- Uwzględnia je poprawnie i właśnie dlatego //book nie zwraca nic w dokumencie z domyślną przestrzenią nazw: element jest w przestrzeni, a wyrażenie nie, więc mimo identycznego wyglądu są to różne nazwy. Użyj wyrażenia z prefiksem albo dopasuj po local-name(), jeśli nie zależy Ci, w której przestrzeni element się znajduje.
- Dlaczego moje wyrażenie nic nie dopasowuje?
- Trzy przyczyny pokrywają prawie wszystko: przestrzeń nazw, jak wyżej; wiodący ukośnik tam, gdzie chodziło o szukanie wśród potomków, bo /book dopasuje wyłącznie element główny o nazwie book, a //book znajdzie go gdziekolwiek; oraz indeks w predykacie, bo pozycje w XPath liczy się od 1, a nie od 0.
- Czym różni się / od //?
- Pojedynczy ukośnik to bezpośrednie dziecko - /catalog/book dopasuje elementy book leżące wprost w catalog. Podwójny to potomek na dowolnej głębokości - //book dopasuje każdy element book w dokumencie, choćby najgłębiej zagnieżdżony. Użycie / tam, gdzie chodziło o //, to najczęstszy powód, dla którego poprawnie wyglądające wyrażenie nic nie zwraca.
- Czy mój XML gdzieś trafia?
- Nie. Zarówno dokument, jak i wyrażenie są przetwarzane w przeglądarce, więc ładunek integracji albo faktura z prawdziwymi danymi nie opuszczają Twojego urządzenia.