XSL – przekształcenia XML-a

Slides:



Advertisements
Podobne prezentacje
I część 1.
Advertisements

Przekształcanie dokumentów XML - XSL
Piotr Szwed Katedra Automatyki AGH
Rafał Hryniów Tomasz Pieciukiewicz
Łódź, 29 października 2012 roku
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.
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
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.
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.
XSLT – część 2. Inne standardy związane z XML-em
Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema
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.
XML w integracji aplikacji
Definiowanie typów dokumentów Część 2: XML Schema 16 października 2003.
XSL – część 2.
XML w zarządzaniu formularzami ubezpieczeniowymi ZUS
Inne standardy związane z XML-em XSLT – część 22 XPath 2.0 / XSLT 2.0 / XQuery 1.0 XML Schema system typów XQuery 1.0 and XPath 2.0 Data Model.
11 RDF Wertykalne zastosowania XML-a. 22 RDF - Wprowadzenie Problemy Sieć jest nieczytelna dla programów komputerowych. Sieć zawiera zbyt wiele informacji.
Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema.
XSL Extensible Stylesheet Language 6 listopada 2003.
Zaawansowana składnia XML XML Schema
XSLT – część XSLT – część 22 Rodzaje przetwarzania XSLT (1) Przetwarzanie sterowane strukturą dokumentu źródłowego: –przechodzimy po strukturze.
11 Dowiązania w XML-u. Formy architektoniczne.. 22 XLink – dowiązania w XML-u Linki jakie znamy (HTML): łączą dwa dokumenty: źródło i cel linku, źródłem.
11 Definiowanie typów dokumentów. 22 Jak wygląda XML? st. asp. Jan Łapówka Dołowice Górne Wypadek dnia r o godzinie 13:13 ( piątek ) miał miejsce.
XPath. XSL – część 1..
11 Przypomnienie: zaliczenie ćwiczeń Kolokwium zaliczeniowe na ćwiczeniach 16 maja: zadania z technik omawianych na ćwiczeniach, można korzystać z notatek.
XML Schema XML Schema2 Definiowanie języków XML, SGML – metajęzyki. Definiowanie języków (zastosowań, typów dokumentów, schematów): –określanie.
Bazy danych II Instrukcja INSERT Piotr Górczyński 25/08/2001.
Technologie XML Mgr inż. Michał Jaros Technologie XML wykład 3.
Maciej Zabielski 15 stycznia 2003
Aplikacje w sieciach Internet/Intranet
Aplikacje ASP.NET Arkadiusz Twardoń ZTiPSK
PySBQL Język zapytań dla obiektowych baz danych. Aplikacje bazodanowe Główny nurt budowania aplikacji opiera się na połączeniu: SQL JDBC Java Jak wyświetlić
KONKURS WIEDZY O SZTUCE
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Dokumentowanie wymagań w języku XML
XPath, XSLT, (and XSL:FO)
XML, DTD, Schema Zaawansowane Aplikacje Internetowe Dawid Weiss.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 2: Język bazy danych - SQL Proste zapytania.
Standardy tworzenia dokumentów [Michał Kuciapski ]
Tablice jednowymiarowe 1

Resource Description Framework
XML jako standard służący do efektywnej wymiany dokumentów niezależnie od platformy sprzętowej.
FP-Growth Adam Pieśkiewicz Kamil Niezręcki Krzysztof Grześkowiak
Programowanie w Internecie 2 Ćwiczenie 4 – Transformacja danych Prowadzący: Rajmund Pączkowski.
Wprowadzenie do JSP Copyright © Politecnico di Milano September 2003 Translation: Kamil Żyła, Politechnika Lubelska.
XML eXtensible Markup Language. 2 Prowadzący Michał Kozielski p. 413 mail:
XML – eXtensible Markup Language 4. XSL transformations (XSLT) XSLT (ang. eXtensible Stylesheet Language Transformations) jest opartym na XML językiem.
Arkadiusz Twardoń ZTiPSK
ŻYWE JĘZYKI PROGRAMOWANIA LIVING IT UP WITH A LIVE PROGRAMMING LANGUAGE Sean McDirmid Ecole Polytechnique Fédérale de Lausanne (EPFL)
Programowanie obiektowe – zastosowanie języka Java SE
XML – eXtensible Markup Language
PL/SQL – dalsza wędrówka
Specjalizacja "Dziennikarstwo On-line„ HTML – XHTML część 1 Prowadzący: Dariusz Jaruga
XML Publisher Przedmiot i zakres szkolenia Przedmiot i zakres szkolenia Przeznaczenie XML Publisher Przeznaczenie XML Publisher Definiowanie Definiowanie.
HTML Hyper Text Markup Language komputerowe Esperanto cz. I historia, struktura dokumentu.
Piotr Czapiewski Wydział Informatyki ZUT. Web Services Description Language.
Adresowanie elementów struktury dokumentów - XPath.
XML w bazach danych.
Obiektowe metody projektowania systemów XML eXtensible Markup Language.
XML i nowoczesne technologie zarządzania treścią Michał Kuciapski
I TY ZOSTAŃ WEBMASTEREM! CZĘŚĆ 2 – „STRUKTURA STRONY” STWORZYŁ GABRIEL ŚLAWSKI.
Aplikacje internetowe XML Paweł Lenkiewicz. Aplikacje internetowe – XML2 eXtensible Markup Language Uniwersalny język opisu danych Często używany we współpracy.
Języki i technologie wytwarzania stron WWW Autor: Michał Walkowski Referat.
Podstawy tworzenia skryptów
Zapis prezentacji:

XSL – przekształcenia XML-a

Języki formatowania dokumentów strukturalnych SGML: FOSI (Formatting Output Specification Instance): specyfikacja MIL-PRF-28001, zbyt małe możliwości dla ogólnych zastosowań. DSSSL (Document Style Semantics and Specification Language): ISO/IEC 10179:1996 oparty na podzbiorze języka Scheme bez efektów ubocznych. XML: CSS (Cascading Style Sheets), stosowane m. in. w HTML-u, XSL (Extensible Stylesheet Language): język wysokopoziomowy, deklaratywny, bez efektów ubocznych.

XSL – części składowe XSLT (XSL Transformations): język opisu przekształceń dokumentów XML, składnia XML, oparty na dopasowywaniu wzorców, przestrzeń nazw: http://www.w3.org/1999/XSL/Transform, rekomendacja W3C z 16 listopada 1999 r. XPath (XML Path Language): język opisu referencji do fragmentów dokumentu XML. XSL:FO (XSL Formatting Objects): słownik XML-owy pozwalający definiować formatowanie, przestrzeń nazw: http://www.w3.org/1999/XSL/Format, opisany w rekomendacji XSL 1.0 z 15 października 2001 r.

XSL a XSLT Źródło: Extensible Stylesheet Language (XSL) Version 1.0, W3C Recommendation 15 October 2001 (http://www.w3.org/TR/xsl/)

Arkusze stylów a przekształcenia XSL faktura  PDF przekształcenia arkusze stylów XSLT zamówienie  faktura FOSI XSLT faktura  HTML Omnimark ustawa (RTF)  ustawa (XML) CSS DSSSL

Zasada działania przekształcenia XSLT Reguła XSLT: ścieżka XPath określająca węzły, dla których reguła obowiązuje, treść "wykonywana" w przypadku uruchomienia reguły: tekst i elementy wypisywane na wyjście, instrukcje XSLT. Sposób przetwarzania: wykonaj regułę dla węzła /, reguła może rekurencyjnie wywołać reguły dla innych węzłów.

Arkusz stylów/przekształcenie XSLT Element główny: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:import href="..."/> <xsl:output-method="html"/> <xsl:param name="...">...</xsl:param> ... </xsl:stylesheet> Output methods: xml, html, text. Określanie arkusza stylów dla dokumentu: <?xml-stylesheet type="text/xsl" href="..."?>

Podstawy składni – przykład <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="wiersz"> <poemat> <tytul><xsl:value-of select="@tytul"/></tytul> <xsl:apply-templates/> </poemat> </xsl:template> <xsl:template match="zwrotka"> <xsl:apply-templates/><odstęp/> </xsl:template> <xsl:template match="wers"> <p><xsl:apply-templates/></p> </xsl:template> </xsl:stylesheet>

Przekształcenie – przykład <wiersz tytul="***"> <zwrotka> <wers>aaa</wers> <wers>bbb</wers> </zwrotka> <zwrotka> <wers>ccc</wers> <wers>ddd</wers> </zwrotka> </wiersz> <poemat><tytul>***</tytul> <p>aaa</p> <p>bbb</p> <odstęp/> <p>ccc</p> <p>ddd</p> <odstęp/> </poemat>

Wbudowane reguły <xsl:template match="*|/"> <xsl:apply-templates/> </xsl:template> <xsl:template match="text()|@*"> <xsl:value-of select="."/> </xsl:template> <xsl:template match="processing-instruction()|comment()"/>

Wybór reguły spośród wielu pasujących Atrybut priority elementu xsl:template. Wybór pomiędzy regułami o najwyższym prorytecie – wg rodzaju testu: węzeł określonego typu o określonej nazwie: 0, węzeł określonego typu należący do określonej przestrzeni nazw: -0.25, węzeł określonego typu: -0.5, inne (bardziej specyficzne): 0.5.

Generowanie dokumentu wyjściowego Elementy i tekst literalnie podane w przekształceniu. Instrukcje generujące: <xsl:value-of select=string-expression/> <xsl:element name=.../> <xsl:attribute name=.../> <xsl:text/> <xsl:processing-instruction name=.../> <xsl:comment/> <xsl:copy/>

Rodzaje przetwarzania XSLT (1) Przetwarzanie sterowane strukturą dokumentu źródłowego: przechodzimy po strukturze dokumentu źródłowego, generujemy fragmenty struktury dokumentu wyjściowego. <xsl:template match="..."> ... <xsl:apply-templates/> ... </xsl:template>

Rodzaje przetwarzania XSLT (2) Przetwarzanie sterowane strukturą dokumentu wyjściowego: jedna duża reguła dla węzła root, generujemy strukturę dokumentu docelowego, wyciągamy odpowiednie wartości z dokumentu źródłowego. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/xhtml1/strict"> <xsl:template match="/"> <html><head><title>Expense Report Summary</title></head> <body> <h1>Company: <xsl:value-of select="company/name"/></h1> <p>Total Amount: <xsl:value-of select="expense-report/total"/></p> </body> </html> </xsl:template> </xsl:stylesheet>

Przetwarzanie warunkowe: if <xsl:template match="item"> <tr> <xsl:if test="position() mod 2 = 0"> <xsl:attribute name="bgcolor">yellow</xsl:attribute> </xsl:if> <xsl:apply-templates/> </tr> </xsl:template>

Przetwarzanie warunkowe: choose <xsl:template match="orderedlist/item"> <xsl:variable name="level" select="count(ancestor::orderedlist) mod 3"/> <xsl:choose> <xsl:when test='$level=1'> <xsl:number format="i"/> </xsl:when> <xsl:when test='$level=2'> <xsl:number format="a"/> </xsl:when> <xsl:otherwise> <xsl:number format="1"/> </xsl:otherwise> </xsl:choose> <xsl:text>. </xsl:text> <xsl:apply-templates> </xsl:template>

Pętle <xsl:template match="index"> <h1>Index</h1> <xsl:for-each select="//keyword"> <p><xsl:value-of select="text()"/></p> </xsl:for-each> </xsl:template>

Sortowanie Instrukcja sortowania: <xsl:sort select=... data-type=["text"|"number"] order=["ascending"|"descending"]/> może występować wewnątrz apply-templates i for-each. <table> <row><cell>3000</cell><cell>xyz</cell></row> <row><cell>2500</cell><cell>abc</cell></row> ... </table> <xsl:template match="table"> <table> <xsl:apply-templates select="row"> <xsl:sort data-type="number" select="./cell[1]"/> </xsl:apply-templates> </table> </xsl:template>

Zmienne Jak w funkcyjnych językach programowania: brak instrukcji przypisania, brak efektów ubocznych. Deklaracja: <xsl:variable name=.../> wartość: atrybut select  wyrażenie odpowiedniego typu, zawartość elementu  fragment drzewa wynikowego, Użycie: w wyrażeniach: $name, <xsl:copy-of select=expression/>

Nazwane wzorce i parametry <xsl:template name="tablerow"> <xsl:param name="color">#000000</xsl:param> <tr> <td> <xsl:attribute name="bgcolor"> <xsl:value-of select="$color"/> </xsl:attribute> <xsl:apply-templates/> </td> </tr> </xsl:template> ... <xsl:call-template name="tablerow"> <xsl:with-param name="color">#FFFFFF"</xsl:with-param> </xsl:call-template> ...

Użycie zmiennych w wyrażeniach Element XSLT Atrybut apply-templates select value-of number value for-each if test when sort

Użycie wyrażeń w atrybutach Szablony wartości atrybutów: mogą zawierać wyrażenia pomiędzy nawiasami {}. Element XSLT Atrybuty literalny element dokumentu wyjściowego dowolny atrybut element name, namespace attribute number level, count, from, format, lang, grouping-separator, grouping-size sort order, lang, data-type, case-order processing-instruction name

Modes Atrybut mode elementów: template (tylko z atrybutem match), apply-templates. Możliwość implementacji niezależnych trybów przetwarzania.

Wybrane funkcje Node-set reprezentujący inny dokument: document(URI) <xsl:variable name="bledy" select="document('slownik_bledow.xml')"/> Unikalny identyfikator węzła: generate-id(node-set) Bieżący węzeł: current() uwaga: różnica między węzłem bieżącym a węzłem kontekstowym: <xsl:apply-templates select="item[@name=current()/@ref]"/> <xsl:apply-templates select="item[@name=./@ref]"/>

Formatting Objects – przykład drzewa wynikowego <?xml version="1.0" encoding="utf-8"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> ... <fo:page-sequence> <fo:flow> <fo:block font-size="18pt" font-weight="bold" text-align="centered">Preface</fo:block> <fo:block font-size="12pt" space-before="1pc" text-align="justified"> This is a simple test document. It shows a <fo:inline font-style="italic">partial</fo:inline> fo-result tree (page layout missing).</fo:block> </fo:flow> </fo:page-sequence> ... </fo:root>

Formatting Objects – przykłady reguł <xsl:template match="chapter"> <fo:flow><xsl:apply-templates/></fo:flow> </xsl:template> <xsl:template match="chapter/title"> <fo:block font-size="18pt" font-weight="bold" text-align="centered"> <xsl:apply-templates/> </fo:block> </xsl:template> <xsl:template match="para"> <fo:block font-size="12pt" space-before="1pc" text-align="justified"> <xsl:apply-templates/> </fo:block> </xsl:template> <xsl:template match="emphasis"> <fo:inline font-style="italic"><xsl:apply-templates/> </fo:inline> </xsl:template>

Narzędzia Procesory XSLT: XT Jamesa Clark’a, Oracle XML Parser for Java / C / PL-SQL LotusXSL (IBM alphaWorks), Microsoft XML Core Services (MSXML 4.0), XML::XSLT (Perl), Procesor XSL:FO: FOP (open source; generuje dokumenty w formacie PDF). Edytory XSLT: IBM XSL Editor (IBM alphaWorks), Inso XSL/CSS Editor, XSL Authoring Studio, Homesite XSL Authoring Toolbar.

Rozwój XSL-a XSLT 2.0 Working Draft: wsparcie dla XML Schema, grupowanie węzłów (for-each-group), definiowanie i wywoływanie własnych funkcji, generowanie wielu dokumentów wyjściowych, ...