Ta lekcja jest pierwszą częścią z cyklu XPath – Zadania, który ma na celu przetestować Twoją wiedzę z zakresu wyrażeń XPath na różnych przykładach.
Zadania tu zebrane dotyczą głównie prostych selektorów. XML, na którym bazują zadania, wraz z aplikacją pozwalającą na testy wyrażeń XPath, dostępny jest pod adresem XPath Playground. Teraz, gdy mamy już wszystkie narzędzia gotowe możemy przystąpić do rozwiązywania zadań…
Zatem do dzieła! 🙂
P.S. Ściąga z wyrażeń XPath dostępna jest na stronie XPath cheat sheet 😉
Zadanie 1 – Wyszukiwanie elementów
Znajdź wszystkie elementy (węzły, ang. nodes) typu author.
Oczekiwany wynik
Frank Herbert,
J. R. R. Tolkien,
Winston Groom,
Jacek Dukaj,
Jacek Doe,
Stephen King,
Stephen King,
John Doe,
Stephen King,
John Brooklyn Sawyer,
Ryū Murakami,
Haruki Murakami,
Bethany Covenant
Podpowiedź
Wyrażenie // służy do wyszukiwania elementów, bez względu gdzie się znajdują.
Rozwiązanie
//author
Zadanie 2 – Wyszukiwanie elementów
Znajdź wszystkie elementy (węzły, ang. nodes) typu author, które znajdują się w elementach typu magazine.
Oczekiwany wynik
John Doe,
John Brooklyn Sawyer,
Bethany Covenant
Podpowiedź
Typ magazine należy uwzględnić w wyrażeniu XPath jako typ rodzica poszukiwanego elementu typu author.
Rozwiązanie
//magazine/author
Zadanie 3 – Wyszukiwanie elementów
Znajdź wszystkie elementy (węzły, ang. nodes) typu author, które znajdują się w elementach typu ordered.
Oczekiwany wynik
Stephen King,
John Brooklyn Sawyer
Podpowiedź 1
Typ ordered należy uwzględnić w wyrażeniu XPath jako typ przodka poszukiwanego elementu typu author.
Podpowiedź 2
Wyrażenie // służy do wyszukiwania elementów, bez względu gdzie się znajdują.
Rozwiązanie
//ordered//author
Zadanie 4 – Wyszukiwanie wartości elementów
Znajdź wszystkie wartości elementów (węzły, ang. nodes) typu author.
Oczekiwany wynik
Frank Herbert,
J. R. R. Tolkien,
Winston Groom,
Jacek Dukaj,
Jacek Doe,
Stephen King,
Stephen King,
John Doe,
Stephen King,
John Brooklyn Sawyer,
Ryū Murakami,
Haruki Murakami,
Bethany Covenant
Podpowiedź
Aby pobrać wartość elementu, należy użyć funkcji text().
Rozwiązanie
//author/text()
Zadanie 5 – Wyszukiwanie wartości atrybutów
Znajdź wszystkie wartości atrybutów typu category.