XPath, XSLT, (and XSL:FO)

1 XPath, XSLT, (and XSL:FO)Zaawansowane Aplikacje Interne...
Author: Natasza Wojtalik
0 downloads 2 Views

1 XPath, XSLT, (and XSL:FO)Zaawansowane Aplikacje Internetowe XPath, XSLT, (and XSL:FO) Dawid Weiss

2 Wykład XPath – „adresy” do elementów XML Czemu służy XPath?Ścieżki (ang. access paths) Osie (ang. axes) Warunki (ang. node tests) Predykaty (ang. predicates) Wyrażenia (ang. expressions) XSLT – transformacje plików XML XSL:FO – prawdziwy raj dla smakoszy Presentation outline.

3 Czemu służy XPath? Gdy XML zyskał popularność, powstały technologie pochodne, potrzebny był jednoznaczny opis adresu elementu w pliku XML XPath przypomina ścieżki w systemie plików, z paroma dodatkowymi elementami Może adresować więcej niż jeden element Posiada warunki Posiada wyrażenia

4 Xpath – XML jako drzewo XPath traktuje XML jako drzewo elementówKażdy z „liści” może być: tagiem, atrybutem, instrukcją sterującą, komentarzem, tekstem, elementem namespace Liście są ze sobą powiązane „gałęziami”, które nazywamy osiami

5 Przykład reprezentacji w postaci drzewa country="iraq"> Saddam country="us"> George Peter Spike rank="great">Prospero's books Ghost Dog

6 Proste ścieżki dostępu country="iraq"> Saddam country="us"> George Peter Spike rank="great">Prospero's books Ghost Dog /topics/politics/leaders/person /topics/movies/directors /topics/movies/movie/text()

7 Nazwy ścieżek dostępu (osi)Parent:: Child:: Ancestor:: Ancestor-or-self:: Descendant:: Descendant-or-self:: Preceding:: Preceding-sibling:: Following:: Following-sibling:: Self:: Attribute:: Namespace::

8 Ścieżki dostępu, c.d. //person/ancestor::leaders/person country="iraq"> Saddam country="us"> George Peter Spike rank="great">Prospero's books Ghost Dog //person/ancestor::leaders/person //leaders/person

9 Predykaty Predykaty umożliwiają funkcjonalne wyeliminowanie niektórych węzłów /path[predicate] Predykaty mogą zawierać funkcje i operatory Tylko węzły dla których predykat jest prawdziwy zostają włączone do wyniku

10 Operatory

11 Funkcje

12 Funkcje i predykaty w praktyce country="iraq"> Saddam country="us"> George Peter Spike rank="great">Prospero's books Ghost Dog //person[position() = 1]

13 XPath – za i przeciw Czy łatwo się nauczyć XPath?Tak, choć czasem nie jest łatwo… Czy XPath jest użyteczny? Jak najbardziej, ma wiele zastosowań, ale głównie używany jest w XSLT =

14 XSLT XSLT = Extensible Stylesheet Language TransformationsRegułowy język przetwarzania dokumentów XML w inne dokumenty XML (lub w dokumenty tekstowe) Język sam jest zapisany oczywiście w… XML! Używa języka XPath do adresowania elementów pliku źródłowego Podsumowując: XSLT jest językiem programowania

15 Prosty plik XSLT i reguły version="1.0"> This template lists all persons: Person (id=):

16 Przetwarzanie w XSLT Zawsze zaczyna się w tagu głównym (ang. root node) – '/' Pasujące reguły są dopasowywane i uruchamiane Zmienia się węzeł kontekstu (ang. context node) w zależności od odpalonych reguł Procedura jest powtarzana rekurencyjnie dla nowych węzłów kontekstowych

17 XSLT – przetwarzanie country="iraq"> Saddam country="us"> George Peter Spike rank="great">Prospero's books Ghost Dog xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> This template lists all persons: select="//person" /> Person (id= />): select="name" />

18 Ale po co jest XSLT?! Aby zmienić strukturę pliku XML!

19 Dawid Dawid Krzysztof Boguś Dawid Computer Science Agriculture Krzysztof Spacecrafting Boguś Hyperactive Forestry

20

21 Zad. domowe! Napisz arkusz XSLT, który wykona transformację odwrotną! Dawid Krzysztof Boguś Dawid Computer Science Agriculture Krzysztof Spacecrafting Boguś Hyperactive Forestry

22 Tylko po to jest ten XSLT?XSLT jest również językiem zapytań do plików XML, podobnie jak SQL jest językiem zapytań do baz danych XQuery…. select="//person[./dept/text() = 'Computer Science']/name" /> Dawid Krzysztof

23 Tylko po to jest ten XSLT?Język, który umożliwia konwersję z XML do HTML! Umożliwia skupienie się na treści strony, a nie jej wyglądzie

24 Example of XML – HTML conversion

25

26

27

float: left; margin-left: 0em; clear: both;
Download file

28 Za i przeciw XSLT XSLT jest bardzo wszechstronnym językiemStyl programowania deklaratywnego nie jest dla każdego… Łatwo osiągnąć separację treści od prezentacji (XML->HTML)! XSLT nie jest najszybszy… XSLT nie jest przystosowany do produkowania formatów binarnych (PDF)

29 XSL:FO – język opisu graficznegoXSL:FO opisuje w postaci pliku XML graficzny rozkład elementów strony na pewnym nośniku (papier, WWW…) Procesory XSL:FO mogą produkować pliki PDF, PS i inne Apache FOP RenderX XEP XSL:FO jest dość skomplikowany, ale dzięki XSLT można osiągnąć separację treści od formatowania (format DocBook tak działa!)

30 Przykład pliku XSL:FO file Hello, world!

31 Dziękuję NA ZAJĘCIA PROSZĘ SIĘ PRZYGOTOWAĆ!ZADANIA DOMOWE MUSZĄ BYĆ ODROBIONE!