Wstęp do XPath – Zadania

W zadaniach zaprezentowanych na tej stronie będziemy bazować na strukturze XML (którą umieściliśmy poniżej w akapicie Bazowa struktura XML). Jak testować swoje wyrażenia i swoje pomysły? Wystarczy, że udacie się na XPath Playground (stronę specjalnie przyszykowaną przez nas) albo jedną z poniższych stron:

Pozwalają one na interaktywne testowanie wyrażeń XPath na podanej strukturze HTML/XML i w przejrzysty sposób pokazują wyniki operacji. Dodatkowo, ściąga z wyrażeń XPath dostępna jest na stronie XPath cheat sheet.

Bazowa struktura XML

XML, na którym bazują zadania, wraz z aplikacją pozwalającą na testy wyrażeń XPath, dostępny jest pod adresem XPath Playground.

<bookstore>
   <shelves>
      <book category="sci-fi">
         <title lang="en">Dune</title>
         <author>Frank Herbert</author>
         <year>1965</year>
         <price>45.00</price>
      </book>
      <book category="fantasy" country="United Kingdom">
         <title lang="en">The Lord of the Rings</title>
         <author>J. R. R. Tolkien</author>
         <year>1954</year>
         <price>45.00</price>
      </book>
      <book category="drama">
         <title lang="en">Forrest Gump</title>
         <author>Winston Groom</author>
         <year>1986</year>
         <price>20.00</price>
      </book>
      <book category="sci-fi" country="Poland">
         <title lang="pl">Perfekcyjna Niedoskonałość</title>
         <author>Jacek Dukaj</author>
         <year>2004</year>
         <price>35.00</price>
      </book>
      <book category="sci-fi drama">
         <title lang="pl">Robot Bob</title>
         <author>Jacek Doe</author>
         <year>2000</year>
         <price>15.00</price>
      </book>
      <book category="dark fantasy, sci-fi, horror, western">
         <title lang="en">The Dark Tower: The Gunslinger</title>
         <author>Stephen King</author>
         <year>1987</year>
         <price>30.00</price>
      </book>
      <book category="dark fantasy, sci-fi, horror, western">
         <title lang="en">The Dark Tower II: The Drawing of the Three</title>
         <author>Stephen King</author>
         <year>1982</year>
         <price>30.99</price>
      </book>
      <magazine category="IT">
         <title lang="en">How to program stuff</title>
         <author>John Doe</author>
         <year>1991</year>
         <price>10.00</price>
      </magazine>
   </shelves>
   <ordered>
      <book category="gothic novel, psychological horror">
         <title lang="en">The Shining</title>
         <author>Stephen King</author>
         <year>1977</year>
         <price>45.00</price>
      </book>
      <magazine category="IT">
         <title lang="en">How to program other stuff</title>
         <author>John Brooklyn Sawyer</author>
         <year>1992</year>
         <price>20.00</price>
      </magazine>
   </ordered>
   <lost>
      <book category="Thriller, Suspense">
         <title lang="en">In the miso soup</title>
         <author>Ryū Murakami</author>
         <year>2005</year>
         <price>100.00</price>
      </book>
      <book category="magical realism">
         <title lang="en">The Wind-Up Bird Chronicle</title>
         <author>Haruki Murakami</author>
         <year>1994</year>
         <price>55.99</price>
      </book>
      <magazine category="gardening">
         <title lang="en">How to prepare your garden for Eternal Autumn</title>
         <author>Bethany Covenant</author>
         <year>1998</year>
         <price>21.00</price>
      </magazine>
   </lost>
   <unknown>
      <book cover="soft">
         <title>Discipline</title>
         <alt>
            <title>Discipline: Way of freedom</title>
         </alt>
         <price>120.00</price>
      </book>
      <book cover="hard">
         <title>Discipline II</title>
         <price>125.00</price>
      </book>
      <book cover="hard">
         <title language="en">Heavy matter</title>
         <year>1854</year>
         <price>99.00</price>
      </book>
      <palimpsest>
         <title>Codex Nitriensis</title>
         <price>999.00</price>
      </palimpsest>
      <palimpsest>
         <title>Codex Zacynthius</title>
         <price>999.00</price>
      </palimpsest>
      <palimpsest>
         <title>Codex X</title>
         <alt>
            <title>Codex 10</title>
         </alt>
         <price>999.00</price>
      </palimpsest>
   </unknown>
</bookstore>

Zadanie 0 – jak przykładowo wykonywać zadanie

Załóżmy że masz za zadanie wyszukać elementy danego typu na przykład: year.

Otwórz w nowej zakładce XPath Playground.

Zobaczmy z czego się składa strona do testów:

  1. To miejsce gdzie wrzucamy strukturę XML – specjalnie dla Ciebie już umieściliśmy kod na którym masz wykonywać przykłady 🙂
  2. Tutaj wpisujemy wyrażenia XPath. Szczęśliwie fraza, którą mieliśmy wyszukać jest wpisana jako przykład ;). Naciskamy przycisk Go! po wpisaniu wymyślonego przez nas XPatha.
  3. W tym oknie podziwiamy znalezione elementy. Ale nie tylko – w tytule okna widzimy ile danych elementów zostało odnalezionych 😀

Wracamy do naszego zadania i rozwijamy pierwszą podpowiedź klikając w nią:

Oczekiwany wynik
1965,
1954,
1986,
2004,
2000,
1987,
1982,
1991,
1977,
1992,
2005,
1994,
1998,
1854

No tak to się zgadza z naszym wynikiem

Sprawdźmy więc czy nasz XPath //year zgadza się z tym co jest ukryte w rozwiązaniu:

Rozwiązanie
//year

Ok czyli się udało – XPath w narzędziu okazał się poprawny 🙂 Teraz po tym niezbyt wyczerpującym zadaniu czas przejść do realnych wyzwań 😀

3, 2, 1…

Czyli wiesz na czym będziemy przeprowadzać nasze XPathowe eksperymenty. Nie bój się nawet najbardziej szalonych operacji gdyż nie zrobisz krzywdy temu słodkiemu XMLowi 🙂

Każda z kolejnych lekcji będzie zawierała w sobie zadania poświęcone danemu zagadnieniu.

No to co? Nie czekamy i zaczynamy 😀

Dodaj komentarz

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