Implementacja procesora XSLT w języku Ocaml

Slides:



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

Rafał Hryniów Tomasz Pieciukiewicz
Programowanie w Internecie (Internet Programming) Krystyna Dziubich p. 521 XSL Formatting Objects.
XHTML Podstawowe różnice.
XPath XSLT – część XPath. XSLT – część 12 XPath – XML Path Language Problem: –jednoznaczne adresowanie fragmentów struktury dokumentu XML.
Definiowanie typów dokumentów Część 1: DTD 9 października 2003.
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.
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.
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.
Definiowanie typów dokumentów Część 1. DTD, XML Schema.
Definiowanie typów dokumentów Część 2: XML Schema 16 października 2003.
XSL – część 2.
XML w zarządzaniu formularzami ubezpieczeniowymi ZUS
Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema.
Definiowanie typów dokumentów Część 1. DTD, 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 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..
SAX i DOM wykorzystanie XML-a we własnych aplikacjach
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.
Technologie XML Mgr inż. Michał Jaros Technologie XML wykład 3.
Generyczne Repozytorium Dokumentów w XML
Aplikacje ASP.NET Arkadiusz Twardoń ZTiPSK
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
XPath, XSLT, (and XSL:FO)
XML, DTD, Schema Zaawansowane Aplikacje Internetowe Dawid Weiss.
Standardy tworzenia dokumentów [Michał Kuciapski ]

(ang. Hypertext Markup Language) - język znaczników hipertekstowych.
Kurs HTML.
Projektowanie warstwy serwera Współpraca z XML. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Programowanie w Internecie 2 Ćwiczenie 4 – Transformacja danych Prowadzący: Rajmund Pączkowski.
PODSTAWY <HTML>
XML eXtensible Markup Language. 2 Prowadzący Michał Kozielski p. 413 mail:
Instytut Tele- i Radiotechniczny WARSZAWA
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.
Wprowadzenie do HTML, CSS, JavaScript, PHP
Uniwersytet Mikołaja Kopernika Wydział Fizyki, Astronomii i Informatyki Stosowanej Podyplomowe Studium Programowania i Zastosowań Komputerów Marcin Hankiewicz.
Arkadiusz Twardoń ZTiPSK
Programowanie obiektowe – zastosowanie języka Java SE
XML – eXtensible Markup Language
Programowanie obiektowe 2013/2014
Wprowadzenie do HTML Informatyka Cele lekcji: Wiadomości:
Temat 12: Formularze.
Wprowadzenie do CSS Okiełznać style.
Projektowanie Aplikacji Internetowych
DOM Ewa Dukała Piotr Muszyński. DOM DocumentBuilder Factory Document Builder XML Data object obiectobject DocumentDOM.
Informatyka – szkoła gimnazjalna – Scholaris - © DC Edukacja Wprowadzenie do kaskadowych arkuszy stylów Informatyka.
Treści multimedialne - kodowanie, przetwarzanie, prezentacjaOdtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Temat 4: Klasy i identyfikatory
Temat 1: CSS Dołączanie stylów do dokumentu
Obiekty DOM.
Iga Lewandowska I EMII MU
Adresowanie elementów struktury dokumentów - XPath.
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.
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Wykład 2 Programowanie obiektowe. Programowanie obiektowe wymaga dobrego zrozumienia działania funkcji definiowanych przez użytkownika, w ten sposób będziemy.
Aplikacje internetowe XML Paweł Lenkiewicz. Aplikacje internetowe – XML2 eXtensible Markup Language Uniwersalny język opisu danych Często używany we współpracy.
HTML + CSS = strony internetowe Krzysztof Geras. FAKTY I MITY Czym nie jest HTML: ● programem do tworzenia stron internetowych, ● interpreterem skryptów.
Język html Julia Cudak. Wykorzystanie Język html wykorzystuje się obecnie do tworzenia stron internetowych. Pozwala on opisać strukturę informacji zawartych.
Programowanie obiektowe – zastosowanie języka Java SE
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

Implementacja procesora XSLT w języku Ocaml Patryk Czarnik Implementacja procesora XSLT w języku Ocaml Prezentacja tematu pracy magisterskiej

Plan prezentacji Omówienie tematyki Co ja chcę zrobić XML DOM XSLT i XPath Co ja chcę zrobić Ocaml Części składowe mojego projektu

XML - Extensible Markup Language XML to sposób zapisywania w plikach tekstowych różnorakich danych z zachowaniem ich struktury XML jest podzbiorem standardu SGML prostszym w parsowaniu, przetwarzaniu

Przykładowy dokument XML <?xml version="1.0" encoding="UTF-8"?> <dokument data-wydania="2002.10.12"> <tytuł>Przykładowy dokument XML</tytuł> <treść>Największym miastem w <kraj sym='pl'>Polsce</kraj> jest <miasto>Warszawa</miasto>. </treść> </dokument>

Przykładowy dokument XML <?xml version="1.0" encoding="UTF-8"?> <dokument data-wydania="2002.10.12"> <tytuł>Przykładowy dokument XML</tytuł> <treść>Największym miastem w <kraj sym='pl'>Polsce</kraj> jest <miasto>Warszawa</miasto>. </treść> </dokument> deklaracja XML

Przykładowy dokument XML <?xml version="1.0" encoding="UTF-8"?> <dokument data-wydania="2002.10.12"> <tytuł>Przykładowy dokument XML</tytuł> <treść>Największym miastem w <kraj sym='pl'>Polsce</kraj> jest <miasto>Warszawa</miasto>. </treść> </dokument> element główny dokument

Przykładowy dokument XML <?xml version="1.0" encoding="UTF-8"?> <dokument data-wydania="2002.10.12"> <tytuł>Przykładowy dokument XML</tytuł> <treść>Największym miastem w <kraj sym='pl'>Polsce</kraj> jest <miasto>Warszawa</miasto>. </treść> </dokument> elementy tytuł, treść

Przykładowy dokument XML <?xml version="1.0" encoding="UTF-8"?> <dokument data-wydania="2002.10.12"> <tytuł>Przykładowy dokument XML</tytuł> <treść>Największym miastem w <kraj sym='pl'>Polsce</kraj> jest <miasto>Warszawa</miasto>. </treść> </dokument> atrybuty data-wydania, sym

Inne przykłady ustawienia programów ... <position-x>120</position-x> <position-y>213</position-y> <show-window-content/> <stylesheet href="default.css"/> ustawienia programów

Inne przykłady dane z bazy danych ... <row><id>63982</id><name>Smith</name>...</row> <row><id>63987</id><name>Morgan</name>...</row> <row><id>63988</id><name>Morgan</name>...</row> dane z bazy danych

Dowolna struktura - zaleta czy wada? Dowolność w nazywaniu elementów, atrybutów oraz ich strukturze, zagnieżdżaniu... Łatwo pisać, trudniej analizować Do konkretnego zastosowania warto ustalić strukturę dokumentu XML, stworzyć pewną klasę dokumentów ("zastosowanie XML")

DTD - Document Type Definition określa dopuszczalne nazwy elementów określa typ zawartości elementów dla danego elementu określa atrybuty, ich typ zawartości, wartość domyślną, ... definiuje encje, które można wstawiać w dokumencie

Przykład DTD <!DOCTYPE dokument [ <!ELEMENT dokument (tytuł?, autor?, treść)> <!ATTLIST dokument data-wydania CDATA #IMPLIED> <!ELEMENT tytuł #PCDATA> <!ELEMENT treść (#PCDATA|miasto|kraj|br)*> <!ELEMENT miasto #PCDATA> <!ELEMENT kraj #PCDATA> <!ATTLIST kraj sym CDATA "pl"> <!ELEMENT br EMPTY> <!ENTITY RP "Rzeczpospolita Polska"> ]>

DOM - Document Object Model O dokumencie można myśleć jak o drzewie, którego węzłami są elementy, atrybuty, węzły tekstowe Formalnie określa to DOM - rekomendacja W3C (IDL i opis działania) Najnowsza obowiązująca wersja DOM level 2 (13.11.2001) składa się z jądra i niezależnych modułów

DOM - fragment IDL interface Node { const unsigned short ELEMENT_NODE = 1; readonly attribute DOMString nodeName; attribute DOMString nodeValue raises(DOMException) on setting; readonly attribute unsigned short nodeType; readonly attribute Node parentNode; readonly attribute NodeList childNodes; readonly attribute Node firstChild; readonly attribute Node previousSibling; readonly attribute NamedNodeMap attributes; Node insertBefore(in Node newChild, in Node refChild) raises(DOMException); ... };

Prezentacja danych XML Często XML zawiera dane, które chcielibyśmy prezentować ludziom. XML sam w sobie to tylko struktura, a nie znaczenie czy wygląd. Tą samą treść można chcieć prezentować na wiele różnych sposobów. Dobrze by było móc dodawać informację o prezentacji "obok" dokumentów XML.

CSS - Cascading Style Sheets Dość prosty system przypisujący elementom dokumentu obiekty wizualne i dający duże możliwości ich formatowania. Nie pozwala na zmianę kolejności, wielokrotne używanie tych samych fragmentów dokumentu itp. Składnia różna od XML utrudnia parsowanie. Zaimplementowany w większości przeglądarek internetowych.

Transformacje dokumentów B C d b e c D E

XSL = XSLT + FO Extensible Stylesheet Language został zaprojektowany z myślą o prezentacji danych z dowolnych dokumentów XML. Formating Objects to zastosowanie XML stworzone z myślą o prezentacji. Zawiera elementy typu "blok", "tabela", ... XSL Transformation - język transformacji umożliwiający przekształcenie dowolnego dokumentu XML do FO.

XSLT XSLT pozwala na przekształcenia nie tylko do FO, ale do dowolnego dokumentu XML. Wynik przekształcenia można zapisywać jako XML, HTML lub płaski tekst. Arkusz XSLT jest dokumentem XML, nie trzeba specjalnych parserów. XSLT jest językiem deklaratywnym.

Budowa arkusza XSLT Arkusz XSLT składa się z szablonów. Każdy szablon mówi jak zamieniać jakiś węzeł (węzły) dokumentu wejściowego na fragment dokumentu wyjściowego. Predefiniowany szablon przepisuje na wyjście zawartość tekstową elementu i wywołuje szablony dla podelementów. Tranformacja polega na wywołaniu szablonu dla elementu głównego.

Budowa arkusza XSLT <xsl:stylesheet> <xsl:output method="html"/> <xsl:template match="bold"> <b> <xsl:apply-templates/> </b> </xsl:template> <xsl:template match="/*/@id"> ID: <xsl:value-of select="."/> </xsl:stylesheet>

Tworzenie węzłów wyjściowych wpisanie ich po prostu w treść szablonu elementy tworzące dokument wyjściowy <xsl:element name="elem"> wartość </xsl:element> <xsl:attribute name="att"> wartość </xsl:attribute> <xsl:text> tekst </xsl:text>

Sterowanie Warunkowe generowanie zawartości: <xsl:if test="warunek"> zawartość </xsl:if> <xsl:choose> <xsl:when test="warunek1">...</xsl:when> <xsl:when test="warunek2">...</xsl:when> <xsl:otherwise>...</xsl:otherwise> </xsl:choose> Dla wszystkich węzłów określonych przez ścieżkę: <xsl:for-each select="ścieżka"> zawartość </xsl:for-each>

XPath - podstawy XPath to język wyrażeń służący do adresowania części dokumentu XML. Wynikiem wyrażenia XPath jest grupa węzłów (np. jeden element, jeden węzeł tekstowy, lista elementów, lista atrybutów...).

XPath - podstawy Oś, adresowanie wezłów w drzewie dokumentu podobne do adresowania plików w drzewie katalogów, rodzaj węzła. following::/doc/section/para attribute::style descesant-or-self::node() Możliwe są skróty i napisy wieloznaczne: //miasto section/*/@id ../para

XPath - arytmetyka W wyrażeniach mogą być zapisane warunki logiczne: section[position()=3] section[3] a[@href] XPath zawiera w sobie arytmetykę: /par[position() = (count(/par) div 2)] Możliwe są skomplikowane wyrażenia: /*/table[@id < 10]//td[@t='a' or @t='b']/@*

"Funkcje" w XSLT W arkuszach XSLT można deklarować "zmienne": <xsl:variable name="x"> wartość </xsl:variable> <xsl:if test="$x > 7">...</xsl:if> Szablony mogą mieć nazwy i parametry: <xsl:template name="tem1"> <xsl:param name="x" select="0"/> ... </xsl:template>

"Funkcje" w XSLT Można wywołać szablon z określonymi parametrami: <xsl:call-template name="tem1"> <xsl:with-param name="x" select="0"/> </xsl:call-template> Dopuszczalna jest rekurencja.

Silnia w XSLT <xsl:template name="silnia"> <xsl:param name="n"/> <xsl:param name="res" select="1"/> <xsl:choose> <xsl:when test="$n > 1"> <xsl:call-template name="silnia"> <xsl:with-param name="n" select="$n-1"/> <xsl:with-param name="res" select="$n * $res"/> </xsl:call-template> </xsl:when> <xsl:otherwise> $res </xsl:otherwise> </xsl:choose> </xsl:template>

Ocaml Język programowania funkcyjnego, składniowo podobny do SML, gorliwy. Rozbudowany system modułów (sygnatury, struktury, funktory), rozłączna kompilacja. Efektywny kompilator i optymalizator. Imperatywne i obiektowe rozszerzenia.

Podział na moduły Unicode DOM Parser XML XPath XSLT

Unicode Międzynarodowy standard kodowania znaków. Brak wsparcia w Ocamlu. W moim module: 16 bitowe znaki i wybrane pary, int ? napisy - tablice lub listy tablic funkcje potrzebne do pracy z napisami odczyt i zapis do UTF-16, UTF-8 i jednobajtowych standardów ISO-8859-X

DOM Implementacja DOM level2 Core jak najbliższa rekomendacji. Model obiektowy - wykorzystam obiektowe rozszerzenia Ocamla

Parser Oparty o napisy Unicodowe, implementacja od podstaw. Tworzy obiekt dokumetu DOM (drzewo). Należy pamiętać o DTD (inna składnia od prostej zawartości XML).

XPath typy dla wartości wyrażeń (bool, number, text, node-set) parser wyrażeń i obliczanie... (ścieżki, warunki logiczne, arytmetyka)

Procesor XSLT Korzystając z implementacji DOM i XPath dokonuje tranformacji dokumentów. dopasowywanie szablonów parametry i szablony (funkcje) serializer (do XML, HTML, tekstu)