1 / 27

XML – e X tensible M arkup L anguage 4

XML – e X tensible M arkup L anguage 4. dokument XML. plik wyjściowy (dokument XML, HTML, PDF etc.). procesor XSLT. arkusz XSLT. XSL transformations (XSLT). XSLT (ang. e X tensible S tylesheet L anguage T ransformations) jest opartym na XML językiem transformacji dokumentów XML.

halle
Download Presentation

XML – e X tensible M arkup L anguage 4

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. XML – eXtensible Markup Language 4

  2. dokument XML plik wyjściowy (dokument XML, HTML, PDF etc.) procesor XSLT arkusz XSLT XSL transformations (XSLT) XSLT(ang. eXtensible Stylesheet Language Transformations) jest opartym na XML językiem transformacji dokumentów XML XSLT umożliwia przetłumaczenie dokumentów z jednego formatu XML na inny format XML, ale również na HTML, PDF i inne. Arkusze XSLT określają w jaki sposób przekształcić poszczególne elementy wejściowe pliku XML.

  3. XSL transformations (XSLT) Arkusz XSLT ma następującą strukturę <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> INSTRUKCJE OKREŚLAJĄCE PRZEKSZTAŁCENIA ELEMENTÓW </xsl:stylesheet> Zapisujemy go w pliku z rozszerzeniem xsl np. people.xsl. W dokumencie XML, który ma być przekształcamy umieszczamy <?xml-stylesheet type="application/xml" href="people.xsl"?>

  4. XSL transformations (XSLT) Rozważmy następujący dokument XML <?xml version="1.0"?> <?xml-stylesheet type="application/xml" href="people.xsl"?> <people> <person born="1912" died="1954"> <name> <first_name>Alan</first_name> <last_name>Turing</last_name> </name> <profession>computer scientist</profession> <profession>mathematician</profession> <profession>cryptographer</profession> </person> <person born="1918" died="1988"> <name> <first_name>Richard</first_name> <last_name>Feynman</last_name> </name> <profession>physicist</profession> </person> </people>

  5. XSL transformations (XSLT) Przykład 1 <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> </xsl:stylesheet> Wynik AlanTuringcomputer scientistmathematiciancryptographerRichardFeynmanphysicist Jeżeli chcemy dokonać transformacji wybranego elementu z dokumentu XML musimy się do niego odwołać w arkuszu XSL przez element <xsl:template match="nazwa_elementu"> … </xsl:template>

  6. XSL transformations (XSLT) Przykład 2 <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="person">A Person</xsl:template> </xsl:stylesheet> Wynik A PersonA Person W dokumencie wejściowym są dwa elementy person. Procesor napotykając te elementy zamienia je na APerson.

  7. XSL transformations (XSLT) Przykład 3 <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="person"><p>A Person</p></xsl:template> </xsl:stylesheet> Wynik A Person A Person W dokumencie wejściowym są dwa elementy person. Procesor napotykając te elementy zamienia je na A Person umieszczone w oddzielnych akapitach.

  8. XSL transformations (XSLT) Arkusz XSLT musi być (jako dokument XML)prawidłowo sformatowany (ang. well formed). Musi zatem spełniać wszystkie wymagania związane z prawidłowym formatowaniem. Przykład 4 Poniższy arkusz XML nie jestpoprawnie sformatowany. <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="person"><p>A Person</xsl:template> </xsl:stylesheet>

  9. XSL transformations (XSLT) Jeżeli chcemy wybrać z wejściowego dokumentu XML pewien element w arkuszu XSLT stosujemy element <xsl:value-of select="element"/> Przykład 5 <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="person"> <p> <xsl:value-of select="name"/> </p> </xsl:template> </xsl:stylesheet>

  10. XSL transformations (XSLT) Wynik Alan Turing Richard Feynman Procesor napotykając elementy personpobiera z nich wartości elementów name i umieszcza w oddzielnych akapitach. Procesor XSLT przechodzi przez elementy dokumentu XML metodą PREORDER. Atrybututem match elementu template wybieramy węzły przetwarzanego dokumentu XML. Z wyselekcjonowanych w ten sposób węzłów już można pobrać (i wstawić do wyniku) dane, można je także skierować do dalszego przetwarzania, poprzez umieszczenie dyrektywy xsl:apply-templates.

  11. XSL transformations (XSLT) Przykład 6 W poniższym przykładzie wybieramy wartości elementów last_name i first_namebędących dziećmi elementu name. <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="name"> <xsl:value-of select="last_name"/> <xsl:value-of select="first_name"/> </xsl:template> </xsl:stylesheet> Zauważmy, że procesor najpierw przetwarza nazwisko a później imię.

  12. XSL transformations (XSLT) Wynik Turing Alan computer scientistmathematiciancryptographer Feynman Richard physicist Jeżeli chcemy aby w dokumencie wynikowym były tylko wartości elementów last_name i first_name musimy wyraźnie to zapisać. Musimy zapisać, że procesor ma przetwarzaćelement name.

  13. W tym miejscu rozpoczyna się przetwarzanie elementu name. XSL transformations (XSLT) Przykład 7 <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="name"> <xsl:value-of select="last_name"/> <xsl:value-of select="first_name"/> </xsl:template> <xsl:template match="person"> <xsl:apply-templates select="name"/> </xsl:template> </xsl:stylesheet> Procesor zaczyna szukać elementu templatez wartością match=”name”.

  14. XSL transformations (XSLT) Wynik Turing Alan Feynman Richard Kolejność elementów w arkuszu XSLTnie ma znaczenia. Ważna jest tylko kolejność elementów w dokumencie XML. Załóżmy teraz, że chcemy zawartość elementu people umieścić w dokumencie HTML o tytule Famous Scientists. Musimy zatem w odpowiednim miejscu umieścić instrukcję przetwarzania dzieci korzenia (people)

  15. XSL transformations (XSLT) Przykład 8 <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="people"> <html> <head> <title>Famous Scientists</title> </head> <body> <xsl:apply-templates select="person"/> </body> </html> </xsl:template>

  16. XSL transformations (XSLT) Przykład 8 cd <xsl:template match="name"> <p> <xsl:value-of select="last_name"/> <xsl:value-of select="first_name"/> </p> </xsl:template> <xsl:template match="person"> <xsl:apply-templates select="name"/> </xsl:template> </xsl:stylesheet>

  17. XSL transformations (XSLT) W arkuszach XSLT możemy transformować nie tylko wartości elementów. Możliwe jest także odwoływanie się do atrybutów. Wykorzystujemy w tym celu element <xsl:template match="@nazwa_atrybutu"> … </xsl:template> Jeżeli chcemy odwołać się do wszystkich atrybutów jako nazwe_atrybutu podajemy *. <xsl:template match="@*"> … </xsl:template>

  18. XSL transformations (XSLT) Przykład 9 <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="person"> <p> <xsl:apply-templates select="name"/> <br/>Born: <xsl:apply-templates select="@born"/> </p> </xsl:template> </xsl:stylesheet> Element <xsl:apply-templates select="@born"/> „zwraca” wartość atrybutu born.

  19. XSL transformations (XSLT) Wynik AlanTuringBorn: 1912 RichardFeynmanBorn: 1918 Jeżeli chcemy odwołać się do dowolnego elementu w dokumencie XML w arkuszu XSLT stosujemy element <xsl:template match="*|/"> <xsl:apply-templates/> </xsl:template> * - dowolny element, / - korzeń, | - alternatywa. Powyższy element spowoduje, że procesor dotrze do wszystkich elementów i korzeniaz wyjątkiematrybutów i elementów z przestrzeni nazw które nie są dziećmi swoich rodziców.

  20. XSL transformations (XSLT) Dodajmy do rozważanego przykładu przestrzeń nazw: <?xml version="1.0"?> <?xml-stylesheet type="application/xml" href="people.xsl"?> <people xmlns="http://www.cafeconleche.org/namespaces/people"> <person born="1912" died="1954"> <name> <first_name>Alan</first_name> <last_name>Turing</last_name> </name> <profession>computer scientist</profession> <profession>mathematician</profession> <profession>cryptographer</profession> </person> <person born="1918" died="1988"> <name> <first_name>Richard</first_name> <last_name>Feynman</last_name> </name> <profession>physicist</profession> </person> </people>

  21. XSL transformations (XSLT) Rozważane wcześniej arkusze XSLTnie mają zastosowania do tak zmodyfikowanego dokumentu XML. Informację o przestrzeni nazw musimy dodać do arkusza XSLT. <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:pe="http://www.cafeconleche.org/namespaces/people"> ... </xsl:stylesheet> Ponadto do elementów w dokumencie XML pochodzących z tej przestrzeni nazw musimy odwoływać się za pomocą zdefiniowanych prefixów.

  22. XSL transformations (XSLT) <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:pe="http://www.cafeconleche.org/namespaces/people"> <xsl:template match="pe:people"> <html> <head> <title>Famous Scientists</title> </head> <body> <xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="pe:name"> <p> <xsl:value-of select="pe:last_name"/> <xsl:value-of select="pe:first_name"/> </p> </xsl:template> <xsl:template match="pe:person"> <xsl:apply-templates select="pe:name"/> </xsl:template> </xsl:stylesheet> Przykład 10

  23. XPath XPath to język służący do adresowania części dokumentu XML. Dzięki XPath potrafimy odwoływać się do różnych elementów dokumentu XML. Rozważmy przykładowy dokument XML dla którego zapiszemy przykładowe adresowania.

  24. XPath <?xml version="1.0"?> <?xml-stylesheet type="application/xml" href="people.xsl"?> <people> <person born="1912" died="1954"> <name> <first_name>Alan</first_name> <last_name>Turing</last_name> </name> <profession>computer scientist</profession> <profession>mathematician</profession> </person> <person born="1918" died="1988"> <name> <first_name>Richard</first_name> <last_name>Feynman</last_name> </name> <profession>physicist</profession> </person> </people>

  25. XPath Przykładowe adresowania: 1. Wszystkie elementy person będące dziećmi elementu people /people/person Ogólnie /t1/t2/t3/…/tn 2. Wszystkie elementy person znajdujące się w dokumencie //person W przypadku rozważanego dokumentu XML wyniki powyższych adresowań będą identyczne.

  26. XPath 3. Atrybut @born znajdujący się w elemencie person /person/@born 4. Atrybut @born znajdujący się w elemencie person i mający wartość"1912" /person/@born="1912" 5. Wszystkie osoby urodzone w roku"1912" //person[@born="1912"] 6. Pierwszy element person z dokumentu XML //person[1]

  27. XPath 7. Ostatnia profesja (profession) z pierwszego elementu person //person[1]/profession[last()] 8. Wszystkie elementy person nie posiadające daty urodzenia //person[not @born]

More Related