XPath, XSLT, (and XSL:FO)

Slides:



Advertisements
Podobne prezentacje
Przekształcanie dokumentów XML - XSL
Advertisements

Rafał Hryniów Tomasz Pieciukiewicz
Implementacja procesora XSLT w języku Ocaml
Wprowadzenie do C++ Zajęcia 2.
Programowanie w Internecie (Internet Programming) Krystyna Dziubich p. 521 XSL Formatting Objects.
Polsko-Japońska Wyższa Szkoła Technik Komputerowych
XPath XSLT – część XPath. XSLT – część 12 XPath – XML Path Language Problem: –jednoznaczne adresowanie fragmentów struktury dokumentu XML.
XSL – przekształcenia XML-a
XSLT – część XSLT – część 22 Rodzaje przetwarzania XSLT (1) Przetwarzanie sterowane strukturą dokumentu źródłowego (ang. push): –przechodzimy.
XPath. XSLT – część XPath. XSLT – część 12 XPath – XML Path Language Problem: –jednoznaczne adresowanie fragmentów struktury dokumentu XML.
11 XML a SGML. Standardy pokrewne.. 22 SGML a XML – różnice Deklaracja SGML: konfiguracja wyglądu znaczników, ich maksymalnej długości, itp., definicja.
Definiowanie typów dokumentów Część 2: XML Schema 16 października 2003.
XSL – część 2.
XSL Extensible Stylesheet Language 6 listopada 2003.
XSLT – część XSLT – część 22 Rodzaje przetwarzania XSLT (1) Przetwarzanie sterowane strukturą dokumentu źródłowego: –przechodzimy po strukturze.
XPath. XSL – część 1..
Maciej Zabielski 15 stycznia 2003
Generyczne Repozytorium Dokumentów w XML
Aplikacje ASP.NET Arkadiusz Twardoń ZTiPSK
Dokumentowanie wymagań w języku XML
XML, DTD, Schema Zaawansowane Aplikacje Internetowe Dawid Weiss.
Promotor: prof. dr hab. Włodzisław Duch
Standardy tworzenia dokumentów [Michał Kuciapski ]

Algorytmy Marek Pudełko
XML jako standard służący do efektywnej wymiany dokumentów niezależnie od platformy sprzętowej.
Bibliotekarz – odkrywca. Agenda Proces tworzenia informacji Indeksy wyszukiwawcze Budowa rekordu w Promaxie Zapytania.
Programowanie w Internecie 2 Ćwiczenie 4 – Transformacja danych Prowadzący: Rajmund Pączkowski.
ZASOBY KOMPUTERA I PRACA W SYSTEMIE OPERACYJNYM WINDOWS XP
XML eXtensible Markup Language. 2 Prowadzący Michał Kozielski p. 413 mail:
Podstawy programowania
HTML DOM, XHTML – cel, charakterystyka
XML – eXtensible Markup Language 4. XSL transformations (XSLT) XSLT (ang. eXtensible Stylesheet Language Transformations) jest opartym na XML językiem.
Generatory dokumentacji kodu źródłowego
XML - podstawy Szymon Bohdanowicz. Pierwszy przykład Marek Szymon Przypomnienie Pamiętaj o spotkaniu w piątek.
Tworzenie strony internetowej krok po kroku.
Bazy danych.
Autor: Kamil Szafranek
Technologie internetowe II
XML – eXtensible Markup Language
Programowanie w języku C++
Projektowanie stron WWW
W W W Łukasz Stochniał.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
URZĄDZENIA TECHNIKI KOMPUTEROWEJ
Projektowanie Aplikacji Internetowych
HTML (ang. HyperText Markup Language ) – język do tworzenia stron internetowych opierający się na znacznikach, czy inaczej je nazywając – tagach. Język.
Metody reprezentacji wiedzy – cz. 4. Andrzej Macioł.
DOM Ewa Dukała Piotr Muszyński. DOM DocumentBuilder Factory Document Builder XML Data object obiectobject DocumentDOM.
Treści multimedialne - kodowanie, przetwarzanie, prezentacjaOdtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
HTML Hyper Text Markup Language komputerowe Esperanto cz. I historia, struktura dokumentu.
JQuery.
Adresowanie elementów struktury dokumentów - XPath.
XML w bazach danych.
Obiektowe metody projektowania systemów XML eXtensible Markup Language.
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
I TY ZOSTAŃ WEBMASTEREM! CZĘŚĆ 2 – „STRUKTURA STRONY” STWORZYŁ GABRIEL ŚLAWSKI.
1. Podaj definicję kartografii internetowej. 2. Geographic Markup Language: a) Jest schematem XML a) Opisuje obiekty w fizycznej przestrzeni a) Jest formatem.
Tryby adresowania i formaty rozkazów mikroprocesora
Dokumentacja programu komputerowego i etapy tworzenia programów.
The Poznan University of Economics Department of Management Information Systems XML - wprowadzenie.
Aplikacje internetowe XML Paweł Lenkiewicz. Aplikacje internetowe – XML2 eXtensible Markup Language Uniwersalny język opisu danych Często używany we współpracy.
Formatowanie tabel w Excelu w tym formatowanie warunkowe Prezentację przygotował: Cieplucha Maciej.
Języki i technologie wytwarzania stron WWW Autor: Michał Walkowski Referat.
Dominik Benduski Michał Mandecki Podstawy Visual Basic w Excelu.
HTML + CSS = strony internetowe Krzysztof Geras. FAKTY I MITY Czym nie jest HTML: ● programem do tworzenia stron internetowych, ● interpreterem skryptów.
Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
Podstawy tworzenia skryptów
Czym są i jak służą społeczeństwu?
Zapis prezentacji:

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

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.

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

Xpath – XML jako drzewo XPath traktuje XML jako drzewo elementów Każ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

Przykład reprezentacji w postaci drzewa <?xml version="1.0" ?> <topics> <politics> <leaders> <person id="shussein" country="iraq"> <name>Saddam</name></person> <person id="gbush" country="us"> <name>George</name></person> </leaders> </politics> <movies> <directors> <person id="pgreeneway"> <name>Peter</name></person> <person id="slee"> <name>Spike</name></person> </directors> <movie director="pgreeneway" rank="great">Prospero's books</movie> <movie>Ghost Dog</movie> </movies> </topics>

Proste ścieżki dostępu <?xml version="1.0" ?> <topics> <politics> <leaders> <person id="shussein" country="iraq"> <name>Saddam</name></person> <person id="gbush" country="us"> <name>George</name></person> </leaders> </politics> <movies> <directors> <person id="pgreeneway"> <name>Peter</name></person> <person id="slee"> <name>Spike</name></person> </directors> <movie director="pgreeneway" rank="great">Prospero's books</movie> <movie>Ghost Dog</movie> </movies> </topics> /topics/politics/leaders/person /topics/movies/directors /topics/movies/movie/@director /topics/movies/movie/text()

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::

Ścieżki dostępu, c.d. //person/ancestor::leaders/person <?xml version="1.0" ?> <topics> <politics> <leaders> <person id="shussein" country="iraq"> <name>Saddam</name></person> <person id="gbush" country="us"> <name>George</name></person> </leaders> </politics> <movies> <directors> <person id="pgreeneway"> <name>Peter</name></person> <person id="slee"> <name>Spike</name></person> </directors> <movie director="pgreeneway" rank="great">Prospero's books</movie> <movie>Ghost Dog</movie> </movies> </topics> //person/ancestor::leaders/person //leaders/person

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

Operatory

Funkcje

Funkcje i predykaty w praktyce <?xml version="1.0" ?> <topics> <politics> <leaders> <person id="shussein" country="iraq"> <name>Saddam</name></person> <person id="gbush" country="us"> <name>George</name></person> </leaders> </politics> <movies> <directors> <person id="pgreeneway"> <name>Peter</name></person> <person id="slee"> <name>Spike</name></person> </directors> <movie director="pgreeneway" rank="great">Prospero's books</movie> <movie>Ghost Dog</movie> </movies> </topics> //person[position() = 1]

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 count(//document[@id = current()/@refid]/preceding::document)+1

XSLT XSLT = Extensible Stylesheet Language Transformations Reguł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

Prosty plik XSLT i reguły <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> This template lists all persons: <xsl:apply-templates select="//person" /> </xsl:template> <xsl:template match="person"> Person (id=<xsl:value-of select="@id" />): <xsl:value-of select="name" /> <xsl:template match="*" /> </xsl:stylesheet>

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

XSLT – przetwarzanie <?xml version="1.0" ?> <topics> <politics> <leaders> <person id="shussein" country="iraq"> <name>Saddam</name></person> <person id="gbush" country="us"> <name>George</name></person> </leaders> </politics> <movies> <directors> <person id="pgreeneway"> <name>Peter</name></person> <person id="slee"> <name>Spike</name></person> </directors> <movie director="pgreeneway" rank="great">Prospero's books</movie> <movie>Ghost Dog</movie> </movies> </topics> <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> This template lists all persons: <xsl:apply-templates select="//person" /> </xsl:template> <xsl:template match="person"> Person (id=<xsl:value-of select="@id" />): <xsl:value-of select="name" /> <xsl:template match="*" /> </xsl:stylesheet>

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

<name>Dawid</name> <?xml version="1.0" encoding="Cp852"?> <departments> <department name="Computer Science"> <person> <name>Dawid</name> </person> <name>Krzysztof</name> </department> <department name="Agriculture"> <department name="Spacecrafting"> <department name="Hyperactive Forestry"> <name>Boguś</name> </departments> <?xml version="1.0" ?> <people> <person> <name>Dawid</name> <dept>Computer Science</dept> <dept>Agriculture</dept> </person> <name>Krzysztof</name> <dept>Spacecrafting</dept> <name>Boguś</name> <dept>Hyperactive Forestry</dept> </people>

<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output encoding="Cp852" method="xml" indent="yes" /> <xsl:template match="/"> <departments> <xsl:apply-templates select="//dept" /> </departments> </xsl:template> <xsl:template match="dept"> <xsl:if test="count(.//preceding::dept[./text() = current()/text()]) = 0"> <department> <xsl:attribute name="name"> <xsl:value-of select="./text()" /> </xsl:attribute> <xsl:variable name="currentDept" select="./text()" /> <xsl:for-each select="//person[./dept/text() = $currentDept]"> <person> <name><xsl:value-of select="name" /></name> </person> </xsl:for-each> </department> </xsl:if> </xsl:stylesheet>

Zad. domowe! Napisz arkusz XSLT, który wykona transformację odwrotną! <?xml version="1.0" encoding="Cp852"?> <departments> <department name="Computer Science"> <person> <name>Dawid</name> </person> <name>Krzysztof</name> </department> <department name="Agriculture"> <department name="Spacecrafting"> <department name="Hyperactive Forestry"> <name>Boguś</name> </departments> <?xml version="1.0" ?> <people> <person> <name>Dawid</name> <dept>Computer Science</dept> <dept>Agriculture</dept> </person> <name>Krzysztof</name> <dept>Spacecrafting</dept> <name>Boguś</name> <dept>Hyperactive Forestry</dept> </people>

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…. <xsl:template match="/"> <PeopleFromComputerScienceInstitute> <xsl:copy-of select="//person[./dept/text() = 'Computer Science']/name" /> </PeopleFromComputerScienceInstitute> </xsl:template> <PeopleFromComputerScienceInstitute> <name>Dawid</name> <name>Krzysztof</name> </PeopleFromComputerScienceInstitute>

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

Example of XML – HTML conversion

<xsl:template match="download"><xsl:if test="not(@lng) or $lang=@lng"> <table class="download"> <xsl:attribute name="style"> <xsl:choose> <xsl:when test="@float='right'">float: right; margin-right: 0em; clear: both;</xsl:when> <xsl:when test="@float='inline'">display: inline;</xsl:when> <xsl:otherwise>float: left; margin-left: 0em; clear: both;</xsl:otherwise> </xsl:choose> </xsl:attribute> <tr> <td class="pic" align="center" valign="middle" rowspan="2"> <img> <xsl:attribute name="src"> <xsl:call-template name="rewriteImgURL"> <xsl:with-param name="href" select="concat('/gfx/icons/',substring(@src,stringength(@src)-2),'.gif')" /> </xsl:call-template> </img> </td> <td class="link" align="left" valign="top"> <a> <xsl:attribute name="href"> <xsl:call-template name="rewriteURL"> <xsl:with-param name="href" select="@src" /> <xsl:apply-templates /> </a> </td> </tr> <tr> <td class="desc" align="left" valign="top"> Download file </table> </xsl:if></xsl:template>

Za i przeciw XSLT XSLT jest bardzo wszechstronnym językiem Styl 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)

XSL:FO – język opisu graficznego XSL: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!)

Przykład pliku XSL:FO file <?xml version="1.0" encoding="UTF-8"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="my-page"> <fo:region-body margin="1in"/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="my-page"> <fo:flow flow-name="xsl-region-body"> <fo:block>Hello, world!</fo:block> </fo:flow> </fo:page-sequence> </fo:root>

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