Przegląd specyfikacji związanych z wykorzystaniem usług sieciowych (Web Services)



Podobne dokumenty
LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT

Słowem wstępu. Część rodziny języków XSL. Standard: W3C XSLT razem XPath 1.0 XSLT Trwają prace nad XSLT 3.0

XQuery. XQuery. Przykład. dokument XML. XQuery (XML Query Language) XQuery 1.0: An XML Query Language. W3C Recommendation

Prezentacja i transformacja

Wprowadzenie do arkuszy stylistycznych XSL i transformacji XSLT

Plan prezentacji. Krótko o XML Arkusze stylów XSLT XSL XSL Path Przegląd konstrukcji języka i przykłady Narzędzia Podsumowanie Literatura

Plan dzisiejszego wykładu. Narzędzia informatyczne w językoznawstwie. XML - Definicja. Zalety XML

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Wprowadzenie do technologii XML

XML i nowoczesne technologie zarządzania treścią

Programowanie obiektowe

Model semistrukturalny

Aplikacje internetowe laboratorium XML, DTD, XSL

Rola języka XML narzędziem

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

XPath XML Path Language. XPath. XSLT część 1. XPath data model. Wyrażenia XPath. Location paths. Osie (axes)

29. Poprawność składniowa i strukturalna dokumentu XML

Podstawy XML-a. Zaawansowane techniki programowania

Wykorzystywanie parsera DOM w programach Java i PL/SQL

XML extensible Markup Language 3

5.14 JSP - Przykład z obiektami sesji Podsumowanie Słownik Zadanie... 86

Przykładowy dokument XML

Przykładowy dokument XML

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

XML extensible Markup Language. Paweł Chodkiewicz

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Języki formatowania dokumentów strukturalnych. XSL przekształcenia XML-a. XSL a XSLT. XSL części składowe. Zasada działania przekształcenia XSLT

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Perl a XML. Narzędzia informatyczne w językoznawstwie. Generowanie danych XML - Przykład. Generowanie danych XML. Perl - Przetwarzanie XML

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

1 Podstawy c++ w pigułce.

Język XSLT. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Extensible Markup Language III

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Podstawowe konstrukcje Podstawowymi konstrukcjami są wzorce element oraz attribute:

Zaawansowane aplikacje WWW - laboratorium

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL

Rozdział 4 KLASY, OBIEKTY, METODY

Dlaczego GML? Gdańsk r. Karol Stachura

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Języki programowania zasady ich tworzenia

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

DTD - encje ogólne i parametryczne, przestrzenie nazw

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

extensible Markup Language, cz. 1 Marcin Gryszkalis, mg@fork.pl

Pakiety i interfejsy. Tomasz Borzyszkowski

Dokumentacja do API Javy.

Podstawy programowania skrót z wykładów:

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Podstawy JavaScript ćwiczenia

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Rodzaje przetwarzania XSLT (1)

PHP: bloki kodu, tablice, obiekty i formularze

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

GML w praktyce geodezyjnej

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

2 Podstawy tworzenia stron internetowych

Język XML Query. Czym jest XML Query? Po co XML Query? Tomasz Traczyk. Czym jest XML Query? Wprowadzenie do składni języka.

Wykład 8: klasy cz. 4

Java EE produkcja oprogramowania

Procesy biznesowe w praktyce. Przykłady użycia z wykorzystaniem jbpm 4.4

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

XML w bazach danych i bezpieczeństwie

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Języki skryptowe w programie Plans

Javadoc. Piotr Dąbrowiecki Sławomir Pawlewicz Alan Pilawa Joanna Sobczyk Alina Strachocka

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Przetwarzanie dokumentów XML za pomocą XSLT ( r.)

XML Path Language (XPath)

Po zakończeniu rozważań na temat World Wide Web, poznaniu zasad organizacji witryn WWW, przeczytaniu kilkudziesięciu stron i poznaniu wielu nowych

Programowanie internetowe

Cw.12 JAVAScript w dokumentach HTML

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Metody Kompilacji Wykład 1 Wstęp

Wprowadzenie do XML. Joanna Jędrzejowicz. Instytut Informatyki

Dokument poprawnie sformułowany jest zgodny z ogólnymi zasadami składniowymi:

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

Paradygmaty programowania

Programowanie Komponentowe WebAPI

XML Schema. Bartłomiej Świercz. Łódź, 19 listopada 2005 roku. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz XML Schema

Tworzenie raportów XML Publisher przy użyciu Data Templates

Komunikacja i wymiana danych

PHP: bazy danych, SQL, AJAX i JSON

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Podstawy i języki programowania

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Diagramy klas. dr Jarosław Skaruz

Zasady budowy i przekazywania komunikatów XML w systemie kdpw_otc

Transkrypt:

Przegląd specyfikacji związanych z wykorzystaniem usług sieciowych (Web Services)

Spis treści 1. XPDL... 3 2. XML... 7 3. XSL Transformations [XSLT]... 10 4. XML Path Language [XPath]... 19 5. XML Linking Language [XLink]... 22 6. XML Pointer Language [XPointer]... 23 7. XQuery... 25 8. XML Schema Definition Language [XML Schema]... 30 9. StAX (Streaming API for XML)... 34 10. DTD... 46 11. Binary XML... 50 12. SAX... 51 13. DOM... 58 14. WSDL... 65 15. SOAP... 74 16. UDDI... 95 17. WSIL... 111 18. WS-Addressing... 140 19. WS-Routing... 158 20. WS-Referral... 192 21. WS-Attachment... 197 22. MTOM... 206 23. WSIF... 218 24. AMQP... 253 25. REST... 274 26. XML Signature Syntax and Processing [XML Signature]... 278 27. XML Encryption Syntax and Processing [XML Encryption]... 279 28. XML Key Management Specification [XKMS]... 279 29. The Security Assertion Markup Language [SAML]... 280 30. Web Services Security [WS-Security]... 280

31. WS-Coordiantion... 281 32. WS-Transaction... 305 33. WS-Reliability... 346 1. XPDL XPDL 2.0 (ang. XML Process Definition Language) Document WFMC-TC-1025 - http://www.wfmc.org/standards/docs.htm#interface_1 Organizacja standaryzująca to Workflow Management Coalition, www.wfmc.org - międzynarodowa koalicja stowarzyszająca producentów oprogramowania do zarządzania procesami pracy. W ramach swoich działań wypracowała ok. 15 standardów, takich jak standard architektury systemów zarządzania procesami pracy lub język do definiowania procesów. Opis XPDL oparty na XML język umożliwiający opis definicji procesu pracy. Wg WfMC termin workflow oznacza automatyzację procesów biznesowych, w całości lub w części, podczas której dokumenty, informacje lub zadania są przekazywane od jednego uczestnika do następnego, według odpowiednich procedur zarządczych. W 1995 roku koalicja WfMC opublikowała model odniesienia systemu do obsługi procesów pracy (ang. workflow reference model v.1.1). Model ten składa się z jądra systemu w postaci usług wykonawczych oraz z pięciu funkcjonalnych podsystemów:

Schemat poglądowy procesu pracy XPDL Wraz z pojęciem podsystemu Narzędzi do definiowania procesów pracy koalicja WfMC wprowadziła pojęcie meta-modelu (ang. process meta-model). Zasadniczo, według meta-modelu, proces składa się z czynności i przejść między nimi. Czynność to logicznie wydzielony etap prac nad danym obiektem (np. dokumentem). Zakończenie wykonywania jednej czynności wiąże się z przejściem do innej (lub innych) czynności. Dodatkowo z każdą czynnością skojarzona jest rola. Rola określa, który podmiot ma prawo wykonać daną czynność. Podmiotem może być pracownik danej instytucji, jednostka organizacyjna lub ich grupy. Czynność może być automatyczna (wykonywana przez system bez interakcji z podmiotem) lub manualna (gdy pewne dane muszą zostać wpisane bądź zaakceptowane przez podmiot). Z punktu widzenia ziarnistości działań, czynność może być atomowa lub złożona stanowiąca wywołanie grupy czynności tworzących podproces. Czynność może wywoływać aplikację zewnętrzną bądź funkcję biblioteczną. Kolejność wykonywania czynności jest określona poprzez przejścia między czynnościami. Najważniejszą cechą przejścia jest warunek przejścia, który wyznacza w jakim wypadku sterowanie może zostać przekazane z jednej czynności do drugiej. Warunek jest wyrażeniem logicznym zależnym od danych istotnych w procesie. Czynności mogą być wykonywane sekwencyjnie i/lub równolegle. Rozdzielanie sterowania jest wyrażane za pomocą operacji SPLIT. Dopuszcza się dwa rodzaje tej operacji: SPLIT-XOR, która przekazuje sterowanie do jednej z N czynności będących następnikami oraz SPLIT-AND przekazująca sterowanie do wszystkich czynności będących następnikami. Łączenie sterowania jest wyrażane przez operację JOIN występującą w dwóch formach: JOIN-XOR (przynajmniej jedna czynność poprzedzająca zakończyła się) oraz JOIN-AND (wszystkie czynności poprzedzające zakończyły się).

Schemat pogladowy procesu XPDL Wraz z wprowadzeniem pojęcia meta-modelu koalicja WfMC zaproponowała język umożliwiający opis definicji procesu pracy. Język ten jest rozszerzoną wersją języka PDL (ang. Process Definition Language) zorientowaną na tworzenie opisu procesów pracy WPDL (ang. Workflow PDL). WPDL umożliwia wyrażenie wszystkich wyżej wymienionych elementów meta-modelu w postaci sformatowanego tekstu. WPDL stał się podstawą dla utworzenia XPDL, który został wymyślony jako język oparty na strukturze grafu skierowanego z dodatkowymi możliwościami prezentacji bloków. Kwestia zasięgu jest związana z poziomem pakietu i procesu. Definicja procesu nie może być zagnieżdżona. Kierunek przepływu jest oparty na przejściach pomiędzy czynnościami. Czynności w procesie możemy sobie wyobrazić jako wierzchołki grafu z przejściami jako krawędziami grafu. Różnice pomiędzy poprzednimi wersjami XPDL 2.0 wprowadzono notację graficzną i kilka elementów BPMN (Business Process Modeling Notation konsorcjum OMG), które mocno odróżniały XPDL 1.0 od BPMN. Przykłady zastosowań - OfficeObjects DocMan. firmy Rodan Systems S.A. - Unity Workflow Manager - system zarządzania obiegiem pracy i dokumentów firmy Contium S.A. Prosty przykład:

Przykład zastosowania XPDL <Activities> <Activity Id="3" Name="a1"/> <Activity Id="4" Name="g1"> <Route GatewayType="XOR" XORType="Data" MarkerVisible="TRUE"/> <TransitionRestrictions> <TransitionRestriction> <Split Type="XOR"> <TransitionRefs> <TransitionRef Id="9"/> <TransitionRef Id="10"/> <TransitionRef Id="11"/> </TransitionRefs> </Split> </TransitionRestriction> </TransitionRestrictions> </Activity> <Activity Id="5" Name="a2"/> <Activity Id="6" Name="a3"/>

<Activity Id="7" Name="a4"/> </Activities> <Transitions> <Transition Id="8" Name="" From="3" To="4" FlowType="SequenceFlow"/> <Transition Id="9" Name="" From="4" To="5" FlowType="SequenceFlow"> <Condition Type="CONDITION">a<b</Condition> </Transition> <Transition Id="10" Name="" From="4" To="6" FlowType="SequenceFlow"> <Condition Type="CONDITION">a>b</Condition> </Transition> <Transition Id="11" Name="" From="4" To="7" FlowType="SequenceFlow"> <Condition Type="OTHERWISE"/> </Transition> </Transitions> Narzędzia wykorzystujące standard: OFBiz Workflow engine produkt firmy OFBiz.org (Oper For Business), Fujitsu Interstage Business Process Manager Studio, TIBCO Business Studio, WfmOpen, OBE, Together Workflow Editor. 2. XML XML 1.0 (Third Edition) (rekomendacja), XML 1.1 (nadal w fazie propozycji) (ang. Extensible Markup Language)

http://www.w3.org/tr/2004/rec-xml-20040204 http://www.w3.org/tr/2004/rec-xml11-20040204/ Organizacja standaryzująca to World Wide Web Consortium (W3C), www.w3.org Opis Wzorowany na SGML-u sposób opisu znacznikami, umożliwiający wygodniejsze, szybsze i mniej sformalizowane przygotowywanie wszelkich dokumentów tekstowo-graficznych, które można bez większych problemów przenosić i adaptować do różnych form przekazu elektronicznego. XML to język znaczników umożliwiający, podobnie jak SGML, tworzenie swoich własnych znaczników formatujących, definiowanych w DTD dokumentu lub w tzw. schematach XML. W odróżnieniu od SGML-a możliwe jest jednak także stosowanie w XML-u kaskadowych arkuszy stylów CSS, programowalnych arkuszy stylów specjalnie zaprojektowanych dla XML-a o nazwie XSL i innych interaktywnych elementów często stosowanych przy pisaniu stron WWW. XML wymaga znacznie większej dyscypliny przy pisaniu dokumentów niż HTML, gdyż zasadą interpretacji XML-a jest najpierw kontrola poprawności składniowej, a dopiero później ew. wyświetlenie/wykonanie dokumentu, tak więc błędnie napisane dokumenty XML nie będą w ogóle wyświetlane przez przeglądarki. Z drugiej jednak strony, dzięki restrykcyjnej składni, dokumenty XML mogą być automatycznie przekształcane na inne formaty języków, przez programy zwane parserami. XML i jego zastosowania prawdopodobnie w przyszłości zastąpią całkowicie HTML. Jego rozwój jest silnie wspierany przez prawie wszystkie najważniejsze firmy produkujące oprogramowanie, takie jak: Microsoft, Oracle, Silicon Graphics, Sun Microsystems, Netscape i wiele innych. XML jest jednak czymś znacznie więcej niż HTML, gdyż umożliwia pisanie dokumentów, które będą mogły być obsługiwane przez najróżniejsze urządzenia i programy. Różnice pomiędzy wersjami XML 1.1 w stosunku do XML 1.0 jest bardziej elastyczny pod względem stosowania różnych znaków standardu Unicode Przykłady zastosowań W oparciu o XML powstały inne istotne specyfikacje:

XML umożliwia też tworzenie tzw. aplikacji - czyli zestawów znaczników do konkretnych zastosowań, z których obecnie najbardziej znane są: XHTML, MathML, SVG, ChemXL. Technologia XML związana jest nieodłącznie ze sposobem przetwarzania dokumentu parserami dokumentów XML. Obecenie stosuje się dwie techniki parsowania DOM i SAX. Zostaną one opisane w dalszej części dokumentu. Narzędzia wykorzystujące standard (według popularności stosowania - open source i płatne) Edytory: XML infox - prosty polski edytor, który oferuje tekstowy tryb pracy, walidację, nawigację, wsparcie dla przekształceń XSLT i import danych, XML Spy shareware, Stylus Studio, XML Editor. Parsery: Microsoft XML Parser (MSXML), Apache Xerces, DOM4J biblioteka open source dla Javy, SAX, CookXml XML - parser dla Javy, TinyXml - parser dla C++, XimpleWare's VTD-XML XML dla C I Javy, Stefan Heymann's free XML dla Delphi.

Zalety standardu - możliwość dowolnego mieszania /włączania fragmentów np. MathML czy SVG w dokumenty napisane w XHTML-u, i tworzenie w ten sposób jednego, poprawnego składniowo dokumentu XML, - wbudowany mechanizm przestrzeni nazw zapewnia łatwość rozbudowy istniejących dokumentów, - proste zastosowanie w Internecie, - możliwość wykorzystania w wielu aplikacjach, - kompatybilność z SGML, - prostota implementacji aplikacji korzystających z XML, - minimum opcjonalnych funkcji XML, - możliwość bezpośredniej edycji przez człowieka, - obsługa standardu UNICODE. Wady standardu - konieczność stosowania parserów tekstu podczas pracy z dokumentami (w zależności od wielkości i stopnia skomplikowania może to powodować zmniejszenie wydajności pracy z danymi). 3. XSL Transformations [XSLT] Organizacja standaryzująca to W3C. Obecna wersja standardu to 1.0 Opis XSLT to język określający sposób transformacji dokumentu XML w inny dokument XML. XSLT pozwala na tłumaczenie dokumentów z jednego formatu XML na dokumenty w innym formacie XML, a nawet w dokumenty w zupełnie innych formatach np. HTML. XSLT jest przeznaczony do wykorzystania jako część XSL, który jest językiem arkuszy stylów dla XML. XSL specyfikuje style dokumentu XML, posługując się XSLT do opisu sposobu przekształcania dokumentu w inny dokument XML, bazując na słownictwie określającym formatowanie.

XSLT został stworzony w sposób umożliwiający jego wykorzystanie niezależnie od XSL. Jednakże głównym zadaniem XSLT nie jest pełnienie funkcji niezależnego języka transformacji, lecz specyfikacja sposobu transformacji niezbędnej wówczas, gdy XSLT jest wykorzystywany jako część rodziny XSL. XSLT oparty jest na zasadzie dopasowania wzorców. Za pomocą wyrażeń XPath określana jest ścieżka nawigująca poprzez drzewo XML. Jeżeli jakiś węzeł znajduje się na końcu tej ścieżki jest on dopasowywany i przetwarzany przez odpowiednio zdefiniowany wzorzec. Struktura Dokument XSLT składa się z elementu głównego o dwóch możliwych równoważnych nazwach definiujących przestrzeń XSLT. Poniżej przedstawiono obie możliwe prawidłowe wersje głównego elementu. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> Element główny może zawierać dowolną ilość elementów <xsl:template>. Każdy element <xsl:template> może posiadać jeden z kilku atrybutów. Najczęściej stosowane są atrybuty name i match. Atrybut match, za pomocą wyrażenia XPath definiuje wzorzec, definiujący dla jakich elementów stosować transformację. Atrybut name, definiuje nazwę szablonu do której można odwoływać się z innych elementów xsl:template>. Wewnątrz elementu <xsl:template> może się znajdować dowolny ciąg znaków (w skład którego mogą wchodzić także znaczniki elementy XML), który zostanie przekopiowany na wyjście procesora XSLT. Prosty przykładowy dokumentu XSLT przedstawia poniższy listing. Arkusz ten konwertuje dowolny dokument XML na dokument HTML zawierający napis Hello World!.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <html> <body> Hello World! </body> </html> </xsl:template> </xsl:stylesheet> Jak wspomniano wcześniej cały tekst wewnątrz elementu <xsl:template> jest kopiowany na wyjście procesora XSLT. Wyjątek od tej reguły stanowią znacznik pochodzące z przestrzeni nazw xsl, które definiują instrukcje sterujące transformacją. Znaczniki sterujące transformacją <xsl:value-of> Znacznik <xsl:value-of select= xpath /> powoduje wstawienie w tekst wynikowy wartości węzła określonego ścieżką xpath w miejsce wystąpienia znacznika. Poniżej przedstawiono przykład zastosowania. <xsl:template match="/">

<html> <body> <h2>my CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>title</th> <th>artist</th> </tr> <tr> <td><xsl:value-of select="catalog/cd/title"/></td> <td><xsl:value-of select="catalog/cd/artist"/></td> </tr> </table> </body> </html> </xsl:template> <xsl:for-each> Element <xsl:for-each selekt= xpath > służy do tworzenia pętli. Ciało znacznika zostanie przetworzone i wysłane na wyjście procesora tyle razy ile elementów będzie z przeważanym dokumencie będzie pasowało do ścieżki xpath. W ciele tego elementu mogą być zagnieżdżone inne instrukcje sterujące XSLT. Poniżej przedstawiono krótki przykład użycia. <xsl:template match="/"> <html> <body>

<h2>my CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>title</th> <th>artist</th> </tr> <xsl:for-each select="catalog/cd"> Hello! </xsl:for-each> </table> </body> </html> </xsl:template> <xsl:if> Element <xsl:if test= warunek > powoduje warunkowe przetworzenie ciała znacznika w zależności od wartości warunku logicznego będącego wartością atrybutu test. Warunek zapisuje się za pomocą ścieżek XPath, operatorów porównania (znanych z klasycznych języków programowania) i stałych. Należy zauważyć, iż nie istnieje element sterujący <xsl:else>. Poniżej przedstawiono przykład użycia elementu <xsl:if>. <xsl:template match="/"> <html> <body>

<h2>my CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>title</th> <th>artist</th> </tr> <xsl:for-each select="catalog/cd"> <xsl:if test="price > 10"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:if> </xsl:for-each> </table> </body> </html> </xsl:template> <xsl:choose> Element <xsl:choose> jest odpowiednikiem znanej z języka C instrukcji switch. Może on zawierać dowolną ilość elementów <xslt:when test= warunek > oraz jeden element <xsl:otherwise>. Przykład ilustruje użycie omawianego znacznika. <xsl:template match="/">

<html> <body> <h2>my CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>title</th> <th>artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <xsl:choose> <xsl:when test="price > 10"> <td bgcolor="#ff00ff"> <xsl:value-of select="artist"/></td> </xsl:when> <xsl:otherwise> <td><xsl:value-of select="artist"/></td> </xsl:otherwise> </xsl:choose> </tr> </xsl:for-each> </table> </body>

</html> </xsl:template> <xsl:apply-templetes> Znacznik <xsl:apply-templates selekt= xpath /> powoduje wywołanie przetwarzania wszystkich wzorców pasujących do wyszczególnionej ścieżki xpath. Wynik działania wywołanych wzorców wstawiany jest w miejsce wystąpienia znacznika tekście wyjściowym. Poniżej przedstawiono sposób modularyzacji arkusza stylów z zastosowaniem znacznika <xsl:applytempletes>. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <html> <body> <h2>my CD Collection</h2> <xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="cd"> <p> <xsl:apply-templates select="title"/> <xsl:apply-templates select="artist"/> </p>

</xsl:template> <xsl:template match="title"> Title: <span style="color:#ff0000"> <xsl:value-of select="."/></span> <br /> </xsl:template> <xsl:template match="artist"> Artist: <span style="color:#00ff00"> <xsl:value-of select="."/></span> <br /> </xsl:template> </xsl:stylesheet> Przykłady zastosowań - Xalan - http://xml.apache.org/xalan-j/index.html, - Saxon - http://saxon.sourceforge.net/, - XT - http://www.blnz.com/xt/index.html, - 4suite - http://4suite.org/index.xhtml, - TransforMiiX - http://www.mozilla.org/projects/xslt/, - Unicorn - http://www.unicorn-enterprises.com/products_uxt.html, - libxslt - http://xmlsoft.org/xslt/.

Zalety standardu - elastyczność posiadając procesor XSLT można wygenerować każdy dokument, - możliwość automatycznej wizualizacji danych XML. Wady standardu - niska wydajność. 4. XML Path Language [XPath] XPath 1.0 (ang.) http://www.w3.org/tr/xpath Organizacja standaryzująca to World Wide Web Consortium (W3C), www.w3.org Opis XPath jest językiem pozwalającym na wyszukiwanie i wskazywanie elementów dokumentu XML. Za pomocą wyrażenia XPath można np. wybra z dokumentu wszystkie elementy o określonej nazwie. Możliwości XPath są znacznie większe.. XPath jest częścią transformacji XSLT. XPath używa wyrażeń w postaci ścieżek do wybierania węzła lub grupy węzłów w dokumencie XML. Wyrażenia te ( ścieżki ) wyglądają jak tradycyjne odwołania do plików w systemie komputerowym. XPath zawiera ponad sto wbudowanych funkcji. Funkcje te służą do manipulacji ciągami znaków, wartości numerycznych, porównywania daty i czasu, operacji na węzłach dokumentu oraz dostarcza funkcji do obsługi wartości logicznych. XPath rozróżnia siedem typów węzłów: Element, Atrybut, Tekst, Przestrzeń nazw, Instrukcję przetwarzania, Komentarz,

Węzeł dokumentu. Typy węzłów: <katalog> węzeł dokumentu (root), <tytul> węzeł element, id węzeł atrybut. Relacje pomiędzy węzłami: Rodzic każdy element i atrybut ma jednego przodka, Dziecko każdy element ma zero lub więcej dzieci, Rodzeństwo węzły ktore mają tego samego rodzica, Przodek rodzic, rodzic rodzica, itd.., Potomek dziecko, dziecko dziecka, itd. XPath używa pojęcia ścieżki do określenia węzła lub grupy węzłów zgodnie z poniższymi regułami:

XPath posiada dodatkową konstrukcję pozwalającą na określenie konkretnego węzła lub jego wartości: //katalog/dvd[1], //katalog/dvd[last()], //katalog/dvd[position()<3], //dvd[@id], //dvd[@id= 1 ], //dvd[sztuk>3]. Oznaczanie nieznanych węzłów:

Dodatkowo można użyć operatora w celu wybrania kilku ścieżek (AND). Przykłady zastosowań Przykładowe narzędzia wykorzystujące standard: XML Spy Stylus Studio. 5. XML Linking Language [XLink] Obecna wersja standardu to 1.0 [z dnia 2001.06.27]. Organizacja standaryzująca to World Wide Web Consortium [W3C]. Informacje dodatkowe pod adresem http://www.w3.org/ Opis XML Linking Language to specyfikacja, która definiuje język, którego elementy mogą być umieszczane w dokumentach XML, tworząc i opisując łącza pomiędzy zasobami. Język ten wykorzystuje składnię XML ową w celu tworzenia struktur, które pozwalają opisywać łącza podobnie jak opisuje się proste, jednokierunkowe hiperłącza w HTML. XLink pozwala opisywać także bardziej skomplikowane łącza. XLink określa zatem ramy tworzenia podstawowych, jednokierunkowych łączy oraz bardziej skomplikowanych struktur łączących. XLink pozwala: - tworzyć relacje łączące pomiędzy więcej niż dwoma zasobami, - kojarzyć metadane z łączem, - tworzyć i opisywać łącza, które są zlokalizowane poza łączonymi za ich pomocą zasobami.

Istotnym zastosowaniem XLink są systemy hipermedialne, które bazują na hiperłączach. Model zdefiniowany w specyfikacji XLink, podobnie jak HTML, wykorzystuje technologię URI, jednak oferuje dużo szerszy wachlarz możliwości w zakresie funkcji posiadanych przez hiperłącza. XLink rozszerza zakres dostępnych funkcji o takie, które wcześniej dostępne były jedynie w dedykowanych systemach hipermedialnych, a które powodują, że hiperłącze jest bardziej skalowane i elastyczne. XLink określa struktury danych pozwalające na tworzenie i opisywanie łączy, jednocześnie jedynie w minimalnym stopniu definiuje model zachowania się łącza. W związku z tym bardziej zaawansowane aplikacje bazujące na XLink dysponują własnymi alternatywnymi lub bardziej skomplikowanymi, modelami. 6. XML Pointer Language [XPointer] XPointer (ang.)- nie jest jeszcze zatwierdzonym standardem http://www.w3.org/tr/xptr/ Organizacja standaryzująca to World Wide Web Consortium (W3C), www.w3.org Opis XPointer jest rozszerzeniem XPath. Obydwie specyfikacje korzystają z tych samych pojęć i terminologii. Jest to język do adresowania fragmentów dokumentów XML. Został przewidziany do stosowania w adresach URL wykorzystujących protokół HTTP, np. http://example.org/doc.xml#xpointer(//para[2]). Specyfikacja XPointer składa się z dwóch mało związanych ze sobą części, pierwsza dotyczy XPointer Parts, druga to uogólnienie XPath. XPointer Parts XPointer Parts określa ogólną formę zapytań. Całe wyrażenie XPointer składa się z wielu części, każda część to oddzielne zapytanie należące do jakiegoś schematu. xmlns(a = http://example.org/ns) xpointer(/document/title[@a:lang= pl ]) xpointer(/document/title)

Powyższe zapytanie składa się z trzech części: pierwsza ma schemat xmlns, a dwie następne używają schematu xpointer. Specyfikacja definiuje, że części przetwarzane są od lewej do prawej, aż do momentu, kiedy zapytanie w jednej z części przekaże wynik. Zapytania ze schematu xmlns nigdy nie przekazują wyniku, więc po ich przetworzeniu parser zawsze czyta kolejną część. Są one używane do definiowania przestrzeni nazw dla zapytań ze schematu xpointer, które następują po nich. W powyższym przykładzie, występują dwa zapytania ze schematu xpointer. Dzięki regule przetwarzania części, gdy pierwsze z nich się nie powiedzie, to zostanie wykorzystane drugie. Specyfikacja XPointer definiuje semantykę dwóch schematów. XPointer Parts daje także możliwość używania innych schematów, tworzonych na potrzeby konkretnych zastosowań. Każdy parser musi interpretować schematy xmlns i xpointer oraz jest zobowiązany do ignorowania zapytań w schematach, których nie zna. Oprócz definicji części, specyfikacja podaje jeszcze dwie skrócone formy zapytań XPointer. Pierwsza z nich to nazwy podstawowe (ang. bare-names). Nazwa podstawowa to zapytanie składające się z jednego napisu, np. chapter1. Takie zapytanie jest równoważne zapytaniu xpointer(id(chapter1)), gdzie id() jest funkcją przekazującą element dokumentu o zadanym identyfikatorze. Nazwy podstawowe zostały wprowadzone dla zgodności z adresowaniem przy pomocy kotwic znanym z HTML. Druga skrócona forma zapytań to sekwencja dzieci, np. content/3/12, które tłumaczy się do xpointer(id(content)/*[3]/*[12]). Uogólnienie XPath Druga, ważniejsza część specyfikacji XPointer, to opis języka zapytań opartego na XPath. Choć standard XPointer obejmuje zarówno XPointer Parts, jak i uogólnienie XPath, to często używa się nazwy XPointer tylko do drugiej części specyfikacji. XPointer rozszerza model XPath o dwa nowe pojęcia: punkt i zakres (ang. range). Punkt to dowolne miejsce w dokumencie XML-owym. Jest on jednoznacznie zdefiniowany przez parę węzeł-kontener i liczba-indeks. W każdym węźle tekstowym istnieją punkty między poszczególnymi literami oraz punkt na początku (z indeksem 0) i na końcu węzła (z indeksem równym długości tekstu zawartego w węźle). W elementach punkty istnieją między dziećmi oraz na początku i końcu.

Przykłady zastosowań Przegląd możliwości języka XPointer: xpointer(/document/chapter[1]/range-to(/document/chapter[3])) wybierze przedział od początku pierwszego rozdziału do końca trzeciego, xpointer(//start-mark/range-to(following-sibling::end-mark[1]) wybierze z dokumentu wszystkie przedziały zawarte między odpowiednimi parami znaczników <start-mark/> i <endmark/>; warto; zauważyć, że kontekst wyrażenia po range-to zmienia się podobnie jak kontekst predykatów XPath, xpointer(string-range(/, "XML")) tworzy zbiór zawierający przedziały reprezentujące napis "XML", np. <para>msxml4 is a new XML processor.</para>, xpointer(string-range(//chapter/title, "Big")) przekazuje przedziały ze słowem Big z tytułów rozdziałów. Funkcja string-range() może mieć dodatkowe parametry, które rozszerzają/zwężają znalezione zakresy, np. string-range(/, "XML", 2, 5)[1] znajdzie pierwsze wystąpienie XML i przekaże "ML???" gdzie znaki? to kolejne litery po tym wystąpieniu (czyli "ML4 i" z poprzedniego przykładu), xpointer(//para[string-range(./title, XML )]) przekaże te elementy-paragrafy, których tytuł zawiera tekst XML. Przykładowe narzędzia wykorzystujące standard: XML Spy, Stylus Studio. Wady standardu: brak powszechnego zastosowania [dość trudny w implementacji]. 7. XQuery XQuery 1.0 (ang. XML Query Language) nie jest jeszcze zatwierdzonym standardem

http://www.w3.org/tr/xquery/ Organizacja standaryzująca to World Wide Web Consortium (W3C), www.w3.org Opis XQuery to język służący do tworzenia zapytań do dokumentów XML za pomocą XPath. Skonstruowano go na bazie języka XPath 2.0. Ścieżki XPath obudowano w sposób dość typowy dla języków zapytań, dodając zmienne pomocnicze oraz klauzule służące do przeszukiwania wyników wyrażeń ścieżkowych, podstawiania wyników obliczeń i przekształceń, filtrowania wyników oraz sortowania. Składnia XQuery nie jest składnią XML Istnieje reprezentacja XQuery w XML - XQueryX Prace nad językami zapytań dla XML rozpoczęły się wkrótce po pojawieniu się samego XML. Powstało wiele propozycji (XQL, XML-QL, Lorel, Quilt); równolegle opracowano język XPath, początkowo związany głównie z XSL. Opracowaniem standardu języka zapytań dla XML zajęła się XML Query Working Group, działająca w ramach World Wide Web Consortium; ta sama grupa pracuje także nad specyfikacją języka XPath 2.0. Przy konstrukcji języka XQuery wykorzystano intensywnie XPath 2.0 oraz elementy wcześniejszych propozycji. Wpływ na postać języka miały też oczywiście znane języki zapytań SQL i OQL. Prace nad językiem XQuery nie są jeszcze zakończone. Opracowano aż 12 dokumentów (patrz http://www.w3.org/xml/query), opisujących w sposób sformalizowany m.in. założenia języka, przypadki użycia języka, model danych oraz składnię i semantykę, a także rozszerzenia do przetwarzania pełnotekstowego. Propozycje specyfikacji języków XQuery 1.0 oraz XPath 2.0 zawarto w dokumentach [W3q04, W3p04]; mają one wciąż jednak status Working Draft, co oznacza, że prace nad standardami trwają i możliwe są jeszcze daleko idące zmiany. Wymagania stawiane XQuery: przynajmniej jedna ze składni języka powinna być czytelna dla człowieka,, język musi być deklaratywny (tzn. w zapytaniu nie trzeba kodować algorytmu jego wykonania),, język musi być niezależny od protokołów i środowisk użycia,, język powinien uwzględniać model danych XML, przestrzenie nazw i schematy,, zapytania muszą działać nawet jeśli schematy przeszukiwanych dokumentów nie są dostępne,,

język musi być typowany, typowanie musi obejmować typy proste i złożone,, niezbędne jest istnienie kwantyfikatorów (ogólnego i szczegółowego),, wymagana jest możliwość operowania na hierarchiach i sekwencjach struktur dokumentów,, musi istnieć możliwość łączenia informacji z wielu źródeł,, niezbędna jest możliwość wykonywania agregacji,, język musi umożliwiać transformacje dokumentów XML i możliwość tworzenia wynikowych struktur XML,, potrzebna jest możliwość nawigowania po odwołaniach (referencjach) do identyfikatorów. Język XQuery jest konsekwentnie zaprojektowanym językiem funkcyjnym. Konstrukcje języka składają się zatem z wyrażeń przyjmujących pewne wartości. Wszystkie wyrażenia XQuery zwracają tzw. sekwencje. Podstawowym wyrażeniem dostającym się do danych jest ścieżka XPath w wersji 2.0 tego języka wynikiem ścieżki jest właśnie sekwencja (por.[tra03]). W XQuery dostępna jest niemal pełna składnia ścieżek XPath 2.0, z nielicznymi wyjątkami. Podstawowe elementy języka: Sekwencje Sekwencja jest to uporządkowany ciąg węzłów lub wartości atomowych (prostych). Pojedyncza wartość atomowa jest utożsamiana z jednoelementową sekwencją; oznacza to, że nie są tu potrzebne jawne konwersje. Sekwencje nie mogą być zagnieżdżane. Porządek w sekwencji zwracanej przez wyrażenie jest inaczej niż w SQL ściśle określony; jest to tzw. porządek dokumentu, tzn. elementy występują w takiej kolejności, w jakiej były w przetwarzanym dokumencie. Kolejność tę można zmienić żądając sortowania za pomocą klauzuli order by. Sekwencje mogą być wynikiem wyrażeń, można je też zapisać jawnie ujmując elementy, oddzielone przecinkami, w nawiasy zwykłe. Pustą sekwencję zapisuje się w postaci pary nawiasów:().

Wyrażenia Wszystkie konstrukcje języka XQuery składają się z wyrażeń. Wyrażenia zwracają sekwencje i mogą być zagnieżdżane. Wyrażenia mogą zawierać stałe, jawnie zapisane sekwencje, odwołania do zmiennych, wywołania funkcji wbudowanych i funkcji użytkownika, ścieżki XPath, tzw. wyrażenia FLWOR i warunkowe oraz operatory. Zmienne Nazwy zmiennych poprzedzane są znakiem dolara. Zmienne mogą być deklarowane, ale nie jest to obowiązkowe. Operatory i porównania XQuery dostarcza zestawu typowych operatorów arytmetycznych i logicznych. Nietypowe są natomiast operatory porównania. Operatory porównujące proste wartości zapisuje się eq, ne, lt, le, gt, ge. Jeśli operandem jest jednoelementowa sekwencja, to następuje niejawnie tzw. atomizacja, tj. konwersja na wartość atomową. Ogólne operatory porównań, zapisywane =,!=, <, <=, >, >=, porównują całe sekwencje stanowiąc kombinację zwykłego porównania wartości z kwantyfikatorem szczegółowym (exists). Oznacza to, że wynik ogólnego porównania sekwencji jest prawdą, jeśli tylko istnieją takie elementy porównywanych sekwencji, które spełniają żądane porównanie. Operatory porównywania węzłów: is, <<, >>, badają identyczność (w sensie tożsamości) węzłów oraz ich porządek w dokumencie. Do porównywania całych gałęzi (sekwencji wraz z węzłami podrzędnymi) służy funkcja wbudowana deep-equal(). Funkcje wbudowane W XQuery można korzystać z wielkiej liczby funkcji wbudowanych. Funkcje te obejmują m.in. operacje na sekwencjach, węzłach i wartościach, operacje arytmetyczne, agregacje, operacje na tekstach, wyrażenia regularne, operacje na datach i czasie oraz obsługę błędów i śledzenie.