XPath – Zadania, część 3 – Nieznane elementy

Jest to trzecia część 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 nieznanych typów elementów, ale bazują też na wyrażeniach poruszonych w poprzednich częściach. 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 – Nieznane elementy

Znajdź wszystkie tytuły elementów (węzły, ang. nodes), które znajdują się w shelves.

Oczekiwany wynik
Dune,
The Lord of the Rings,
Forrest Gump,
Perfekcyjna Niedoskonałość,
Robot Bob,
The Dark Tower: The Gunslinger,
The Dark Tower II: The Drawing of the Three,
How to program stuff
Podpowiedź
Do znajdowania dowolnego węzła służy operator *.
Rozwiązanie
//shelves/*/title

Zadanie 2 – Nieznane elementy

Znajdź wszystkie elementy (węzły, ang. nodes), które znajdują się w pierwszym elemencie typu book w shelves.

Oczekiwany wynik
Dune,
Frank Herbert,
1965,
45.00
Podpowiedź 1
Do znajdowania dowolnego węzła służy operator *.
Podpowiedź 2
Do znajdowania danego elementu listy służy operator [].
Rozwiązanie
//shelves/book[1]/*

Zadanie 3 – Nieznane elementy

Znajdź pierwszy element (węzły, ang. nodes), który znajduje się w pierwszym elemencie typu book w shelves.

Oczekiwany wynik
Dune
Podpowiedź 1
Do znajdowania dowolnego węzła służy operator *.
Podpowiedź 2
Do znajdowania danego elementu listy służy operator [].
Rozwiązanie
//shelves/book[1]/*[1]

Zadanie 4 – Nieznane atrybuty

Znajdź wartości wszystkich atrybutów, jakie znajdują się w pierwszym elemencie typu book w shelves.

Oczekiwany wynik
sci-fi
Podpowiedź 1
Do znajdowania dowolnego węzła lub atrybutu służy operator *.
Podpowiedź 2
Do znajdowania danego elementu listy służy operator [].
Podpowiedź 3
Do znajdowania wartości atrybutu służy operator @.
Rozwiązanie
//shelves/book[1]/@*

Zadanie 5 – Nieznane atrybuty i predykaty

Znajdź wszystkie elementy typu title, które mają dowolny atrybut równy wartości en.

Oczekiwany wynik
Dune,
The Lord of the Rings,
Forrest Gump,
The Dark Tower: The Gunslinger,
The Dark Tower II: The Drawing of the Three,
How to program stuff,
The Shining,
How to program other stuff,
In the miso soup,
The Wind-Up Bird Chronicle,
How to prepare your garden for Eternal Autumn,
Heavy matter
Podpowiedź 1
Do znajdowania dowolnego węzła lub atrybutu służy operator *.
Podpowiedź 2
Do znajdowania danego elementu listy służy operator [].
Podpowiedź 3
Do znajdowania wartości atrybutu służy operator @.
Rozwiązanie
//title[@*='en']

Zadanie 6 – Nieznane atrybuty i predykaty

Znajdź wszystkie elementy, jakie znajdują się w elemencie typu shelves, które mają dowolny atrybut równy wartości en.

Oczekiwany wynik
Dune,
The Lord of the Rings,
Forrest Gump,
The Dark Tower: The Gunslinger,
The Dark Tower II: The Drawing of the Three,
How to program stuff
Podpowiedź 1
Do znajdowania dowolnego węzła lub atrybutu służy operator *.
Podpowiedź 2
Do znajdowania danego elementu listy służy operator [].
Podpowiedź 3
Do znajdowania wartości atrybutu służy operator @.
Rozwiązanie
//shelves//*[@*='en']

Zadanie 7 – Nieznane elementy i predykaty

Znajdź wszystkie elementy, jakie znajdują się w elemencie typu shelves, które mają wartość title równą Dune.

Oczekiwany wynik

         Dune
         Frank Herbert
         1965
         45.00
      
Podpowiedź 1
Do znajdowania dowolnego węzła lub atrybutu służy operator *.
Rozwiązanie
//shelves//*[title='Dune']

Zadanie 8 – Nieznane elementy i predykaty

Znajdź wszystkie elementy, jakie znajdują się w elemencie typu shelves, które mają wartość year większą niż 1990.

Oczekiwany wynik

         Perfekcyjna Niedoskonałość
         Jacek Dukaj
         2004
         35.00
      ,

         Robot Bob
         Jacek Doe
         2000
         15.00
      ,

         How to program stuff
         John Doe
         1991
         10.00
      
Podpowiedź 1
Do znajdowania dowolnego węzła lub atrybutu służy operator *.
Rozwiązanie
//shelves//*[year > 1990]

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *