04 xml xslid 5313 ppt

background image

Bazy danych XML

Wydział Informatyki EWSIE

Wykład: Bazy danych II – XSL

background image

XSL - eXtensible Stylesheet

Language

• XSL – aplikacja XML, została podzielona na dwie części:

– XSL Transformations, w skrócie XSLT oraz
– XSL Formatting Objects, w skrócie XSL-FO.

• XLST jest funkcjonalnym językiem programowania

(realizowanym przez procesor XSLT), używanym do

określenia sposobu, w jaki wejściowy dokument XML jest

konwertowany na dokument tekstowy (niekoniecznie

będący innym dokumentem XML) w oparciu o arkusz

styli będący dokumentem XML.

• Można przyjąć, że XSL-FO jest odpowiednikiem XSLT, z tą

jednak różnicą, że konwertowany dokument wejściowy,

daje na wyjściu dokument klasy DOM (Dokument Object

Model).

• Pomocniczymi rozwiązaniami dla XSL, są: XPath, XLinks

oraz XPointer. Ten ostatni, nie jest aplikacją XML.

background image

XSL Transformations

• XSLT jest aplikacją XML określającą reguły, w

oparciu o które realizowana jest transformacja
dokumentu XML w inny dokument.

• XSLT posługuje się w procesie transformacji

dokumentu XML – szablonem lub szablonami
transformacji napisanymi w języku XSL.

• Procesor XSLT porównuje elementy zawarte w

wejściowym dokumencie XML z szablonami w
arkuszach stylów, a kiedy znajdzie odpowiedni
szablon do czytanego elementu wejściowego,
tworzy na podstawie dokumentu wejściowego,
korzystając z dobranego szablonu – odpowiedni
tekst wynikowy, który nie musi być dokumentem
XML.

background image

Arkusz styli XSLT

• Arkusz styli XSLT jest dokumentem XML. Może posiadać

deklarację typu dokumentu, ale większość arkuszy styli

deklaracji typu dokumentu nie posiada.

• Elementem bazowym arkusza styli jest stylesheet albo

transform. Są to synonimy i dla procesora XSLT niema

pomiędzy nimi żadnej różnicy.

• Elementy stylesheet i transform, podobnie jak wszystkie

elementy XSLT, znajdują się w przestrzeni nazw

http://www.w3.org/XSL/Transform

.

• Minimalny arkusz styli ma postać:

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

background image

Przykład dokumentów XML

<?xml version=”1.0”?>
<people>
<person born=”1912” died=”1954”>
<name>
<first_name>Alan</first_name>
<last_name>Turing</last_name>
</name>
<profession> informatyk</profession>
<profession>matematyk </profession>
<profession> kryptograf</profession>
</person>
<person born=”1918” died=”1988”>
<name>
<first_name>Richard</first_name>
<middle_initial>M</middle_initial>
<last_name>Feyname</last_name>
</name>
<profession>fizyk</profession>
<hobby>gra na bongo</hobby>
</person>
</people>

Przykład wyniku

<?xml version=”1.0” encoding=”utf-8”?>

A Person

A Person

background image

Polecenie przetwarzania

• Dokumenty XML, które będą przekazywane

przeglądarkom WWW bezpośrednio, mogą
posiadać w swoim prologu polecenie
przetwarzania xml-stylesheet, informujące
przeglądarkę, gdzie ma szukać arkusza styli
skojarzonego z dokumentem.

• Jeżeli arkusz styli jest arkuszem XSLT, wtedy

pseudo-atrybut type powinien mieć wartość
text/xml.

• Przykład:

<?xml version=”1.0” ?>
<?xml-stylsheet type=”text/xml” href=

http://

www.oreilly.com/stylesheet/people.xsl

”?>

background image

XSL - eXtensible Style Sheet

Language

• XSL jest rozszerzalnym językiem stylów, aplikacją

języka XML, przeznaczonym do transformacji

dokumentów XML do innej postaci.

• Język XML wykorzystuje procesor XSLT do wykonywania

transformacji i formatowania. Wynikiem transformacji,

może być zwykły tekst, XHTML, lub wyrażenia w innym

języku formalnym.

• Specyfikacja dla XSLT to język do tworzenia arkuszy

stylów, mających postać dokumentów XML. Bogactwo

możliwości arkuszy stylów pisanych w XSL – znacznie

przekracza możliwości oferowane przez CSS2.

• Język XSL operuje wieloma typami obiektów

formatujących, tzw. szablonów, które znaleźć można w

obszarze nazwy „fo”.

background image

Szablony

• Aby móc kontrolować sposób, w jaki z dokumentu

wejściowego tworzony jest dokument wyjściowy,

umieszczamy w arkuszu stylów XSLT szablony.

• Każdy szablon reprezentuje element xsl:template.
• Element ten posiada atrybut match, który zawiera

wzorzec XPath identyfikujący dokument wejściowy,

któremu odpowiada. Najprostrzym wzorcem jest

nazwa elementu.

• Poniższy szablon poleca, aby procesor w oparciu o

arkusz styli emitował tekst „A Person”, za każdym

razem kiedy napotka element person w dokumencie

wejściowym:

<xsl:template match=”person”>A

Person</xsl:template>

• Tekst „A Person” jest nazywany znakami danych

literowych, czyli zwykłym tekstem

background image

xsl:value-of

• Opcja wylicza wartość elementu wejściowego i

umieszcza wynik w dokumencie wyjściowym.

• Przykład arkusza styli wykorzystującego

xml:value-of:

<?xml version=”1.0”?>

<xsl:stylesheet version=”1.0”

xmlns:xsl=”html://www.w3.org/1999/XSL/Transform”>

<xsl:temlate match=”person”>

<xsl:value-of select=”name”/>

</xsl:temlate>

</xsl:stylesheet>

• Zastosowanie powyższego arkusza styli do

przykładu XML da w wyniku:

Alan

Turing

Richard

M

Feynman

background image

xsl:apply-templates

• xsl:apply-temlates może zmieniać kolejność czytania

dokumentu wejściowego przez procesor XSLT, czyli

aktywować szablon elementów potomnych przed

szablonem elementu rodzicielskiego.

• Przypuśćmy, że chcemy zmienić kolejność

wyprowadzania danych (np. nazwisk i imion) w

stosunku do kolejności występowania tych danych w

dokumencie wejściowym.

• Przykład szablonu (fragment arkusza styli)

zmieniający kolejność:

<xsl:template mach=”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>

background image

Wbudowane reguły szablonów

W dokumencie XML występuje siedem rodzajów
węzłów:

– Węzeł bazowy,
– Węzły elementów,
– Węzły atrybutów,
– Węzły tekstu,
– Węzły komentarzy,
– Węzły poleceń przetwarzania,
– Węzły przestrzeni nazw.

Dla każdego z tych siedmiu typów węzłów XSLT
oferuje wbudowane reguły szablonów informujące,
co należy zrobić z danym węzłem w przypadku, gdy
autor arkusza styli nie napisał instrukcji
postępowania dla danego przypadku.

background image

Domyślna reguła szablonów

dla węzłów tekstu i atrybutów

• Podstawowa wbudowana reguła szablonów

kopiuje do dokumentu wyjściowego wartości
węzłów tekstu i atrybutów.
<xsl:template match=”text() | @*”>
<xsl:value-of select=” . ”/>
</xsl:template>

• Funkcja text() jest wyrażeniem XPath,

dopasowującym do wszystkich węzłów tekstu.

• Natomiast @* jest wyrażeniem XPath,

dopasowującym do wszystkich węzłów atrybutu.

background image

Domyślna reguła szablonów

dla węzłów elementów i elementu

bazowego

• Najważniejsza reguła szablonów gwarantuje

przetwarzania elementów potomnych. Jest ona

następująca:

<xsl:temlate match=”*|/”>

<xsl:apply-templates/>

</xsl:template>

• Gwiazdka jest wieloznacznym wyrażeniem XPath,

które dopasowuje wszystkie węzły elementów,

niezależnie od tego, jaką mają nazwę i w jakiej

przestrzeni nazw się znajdują.

• Ukośnik prawy / jest wyrażeniem XPath, które

dopasowuje węzeł bazowy. Węzeł bazowy jest

pierwszym węzłem jaki jest wybierany do

przetwarzania przez procesor; dlatego procesor

wykonuje ten szablon jako pierwszy.

background image

Domyślny szablon

dla węzłów komentarzy i poleceń

przetwarzania

• Domyślna reguła szablonu dla komentarzy i

poleceń przetwarzania wygląda następująco:

<xsl:template match=”processing-instruction() |

comment()”>

• Ta reguła dopasowuje wszystkie komentarze i

polecenia przetwarzania. Jednak nie wyprowadza

ona niczego do drzewa wynikowego.

• Jeśli nie wprowadzimy specjalnych reguł

dopasowujących komentarze lub polecenia

przetwarzania, żadna część tych pozycji nie

zostanie skopiowana z dokumentu wejściowego

do dokumentu wyjściowego.

background image

Domyślny szablon

dla węzłów przestrzeni nazw

Podobnie do opisanej wcześniej reguła szablonu

dopasowuje węzły przestrzeni nazw i poleca

procesorowi, aby nie kopiował do dokumentu

wyjściowego żadnej części węzła przestrzeni nazw.

Ta reguła, jest wbudowana i musi być

imlementowana w kodzie źródłowym procesora

XSLT; nie może być nawet zapisana w arkuszu styli

XSLT, ponieważ nie ma czegoś takiego, jak

wyrażenie XPath dopasowujące węzeł przestrzeni

nazw.

Oznacza to, że w XPath nie istnieje funkcja

namespace().

XSLT automatycznie wstawia niezbędne deklaracje

przestrzeni nazw w dokumencie wyjściowym, nie

korzystając z pomocy szablonów przestrzeni nazw.

background image

Tryby

Czasami koniecznym jest, aby ta sama zawartość wejściowa

występowała w dokumencie wyjściowym wielokrotnie i za

każdym razem żeby była formatowana zgodnie z innym

szablonem. Na przykład tytuły rozdziałów książki mogą być

formatowane w spisie treści w jeden sposób, a w rozdziałach

w inny.

Zarówno element xsl:apply-templates, jak i xsl:template

mogą mieć opcjonalnie atrybut mode, który łączy różne

szablony w poszczególnych zastosowaniach.

Atrybut mode elementu xsl:temlate identyfikuje tryb w jakim

szablon powinien być aktywizowany.

W przypadku każdego trybu wykorzystywanego w danym

arkuszu styli – procesor XSLT dodaje do każdego własnego

zbioru wbudowanych reguł jedną domyślną regułę szablonów.

Ta reguła dotyczy wszystkich węzłów elementów oraz węzła

bazowego położonego w określonym węźle i stosuje szablony

wobec swych potomków, w takim samym trybie.

background image

Szablony wartości atrybutów

• Znane wartości atrybutów można łatwo dołączyć do

dokumentu wejściowego jako literową zawartość
literowego elementu wynikowego. Przykładowo,
poniższa reguła szablonu umieszcza każdy wejściowy
element person w elemencie HTML span, który ma
atrybut class o wartości person:
<xsl:template match=”person”>
<span class=”person”><xsl:apply-
templates/></span>
</xsl:template>

• Proces ten jest jednak bardziej skomplikowany, gdyż

wartości atrybutów nie są znane i wobec tego muszą
być odczytane z dokumentu wejściowego. Rozwiązanie
tego problemu polega na użyciu tzw. szablonu wartości
atrybutów

background image

Szablony wartości atrybutów

• Przypuśćmy np., że chcemy napisać szablon nazw

zmieniający wejściowe elementy name na puste
elementy z atrybutami first_name, middele_initial i
last_name, jak poniżej:
<name first=”Richard” initial=”M” last=”Feyneman”/>

• Szablon ten realizuje następujące zadanie:

<xsl:template match=”name”>
<name first=”(first_name)” initial=”(middle_initial)”
last=”(last_name)” />
</xsl:template>

• Wartość atrybutu first jest zastępowana w arkuszu styli

wartością elementu first_name z dokumentu
wejściowego, itd.

background image

XSLT i przestrzenie nazw

• Wyrażenia XPath, które dopasowują i wybierają

elementy, identyfikują je w oparciu o ich nazwę
lokalną oraz identyfikator URI przestrzeni nazw. Nie
zwracają uwagi na przedrostek przestrzeni nazw.

• Najczęściej przedrostek tej samej przestrzeni nazw

jest odwzorowany na taki sam URI.

• Z wyjątkiem szablonów wbudowanych, żaden z

omawianych dotychczas szablonów nie będzie
działał.

• Rozważmy przykład, gdzie wszystkie definicje

elementów są umieszczone w domyślnej przestrzeni
nazw:
http://namespaces.oreilly.com/people

background image

Arkusz styli XSLT dla

dokumentów korzystających z

przestrzeni nazw

<?xml version=”1.0”?>
<xsl:stylesheet version=”1.0”
xmlns:xsl=”http//www.w3.org/1999/XSL/Transform”
xmlns:pe=”

http://namespaces.oreilly.com/people

”>

<xsl:template match=”pe:people”>
<html>
<head><title>Znani naukowcy</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>

background image

Inne elementy XSLT

• XSLT ma znacznie większe możliwości niż te, które

zostały dotychczas przedstawione. A mianowicie:

Szablony z nazwami,

Numerowanie i porządkowanie elementów wyjściowych,

Przetwarzanie warunkowe,

Iteracja,

Elementy i funkcje rozszerzające,

Importowanie innych arkuszy styli.

• XSLT jest kompletny pod względem obliczeniowym

oraz może wywoływać rozszerzenia napisane w
innych językach, np. Java

• Przedstawione dotychczas własności XSLT stanowią

fundament dla bardziej zaawansowanych metod.

background image

Leksykon XSLT

• Wszystkie standardowe elementy XSLT znajdują się w

przestrzeni nazw

http://www.w3.org/xsl/Transform

.

• Założymy dalej, że ten identyfikator URI jest

odwzorowany na przedrostek xsl (za pomocą
deklaracji xmlns:xsl).

• Elementy XSLT:

– Dwa elementy bazowe: xsl:stylesheet, xsl:transform
– Trzynaście elementów najwyższego poziomu, które mogą się

tylko pojawić jako bezpośrednie elementy potomne
elementu bazowego: xsl:apply-imports, xsl:attribute-set,
xsl:decimal-format, xsl:import, xsl:include, xsl:key,
xsl:namespace-alias, xsl:output, xsl:param, xsl:preserve-
space, xsl:temlate, xsl:variable.

– Dwadzieścia elementów instrukcji. Te elementy pojawiają się

w treści elementów, które zawierają szablony.

background image

Elementy instrukcji XSLT

• xsl:apply-imports,
• xsl:apply-templates,
• xsl:attribute,
• xsl:call-template,
• xsl:choose,
• xsl:comment,
• xsl:copy,
• xsl:copy-of,
• xsl:element,
• xsl:fallback,

• xsl:for-each,
• xsl:if,
• xsl:message,
• xsl:number,
• xsl:otherwise,
• xsl:processing-

instruction

• xsl:text,
• xsl:value-of,
• xsl:variable,
• xsl:when.

background image

Elementy XSLT w sekcji

• Elementy są uporządkowane alfabetycznie od

xsl:apply-imports do xsl:param. Każdy element
zaczyna się od streszczenia o następującej
postaci:
<xsl:nazwa_Elementu
attribut1=”dopuszczalne wartości atrybutu”
attribut2=”dopuszczalna wartość atrybutu”
>
<!– model zawartości -- >
</xsl:nazwa_Elementu>

• Większość wartości atrybutów należy do jednego

z dalej omawianych typów.

background image

Podstawowe typy atrybutów

expression – wyrażenie typu XPath. W przypadku gdy

oczekujemy zwrócenia wyrażenia wartości określonego

typu, takiego jak zbiór węzłów lub liczba, jest on

poprzedzony typem lub łącznikiem, np. not-set-

expression

qualifiedName – nazwa XML, taka jak set lub mathml:set
pattern – wyrażenie typu „ścieżka położeń XPath”
langcode – kod języka wg RFC 1766, np. en lub fr-CA
string – dowolny ciąg tekstowy
char – pojedyńczy znak standardu Uniccode
typ – wartość pochodząca z listy wartości, czyli typ

wyliczeniowy

URI – względny lub bezwzględny identyfikator URI.

Względne identyfikatory URI są względne wobec

lokalizacji arkusza styli.

background image

xsl:apply-imports

• Składnia: <xsl:apply-imports />
• Opis: instrukcja przetwarza bieżący węzeł,

używając tych szablonów, które zostały
zaimportowane do arkusza styli za pomocą
xsl:import. Reguła szablonu, która przesłania
w regułę szablonu w importowanym arkuszu
styli, może wywołać przesłanianą regułę za
pomocą instrukcji xsl:apply-imports.

• Atrybuty: brak
• Zawartość: brak

background image

xsl:apply-templates

• Składnia:

<xsl:apply-templates

select = ”wyrażenie_typu_zbiór_węzłów”

mode = ”nazwaKwalifikowana”>

<! --(xsl:sort | xsl:with-param) * -- >

</xsl:apply-templates>

• Opis: nakazuje procesorowi wyszukanie i

zastosowanie szablonu o najwyższym priorytecie w

arkuszu styli (szablon, który pasuje do każdego

węzła wskazanego przez atrybut select).

• Atrybuty: select (opcionalny), mode (opcionalny)
• Zawartość: może zawierać elementy potomne

xsl:sort, xsl:withparam

background image

xsl:attribute

• Składnia:

<xsl:attribute
name = ”nazwaKwalifikowana”
namespace = ”URI”>
<!– szablon dla wartośći atrybutu -- >
</xsl:attribute>

• Opis: dodaje atrybut do elementu znajdującego się

w drzewie wynikowym. Ten element może być
potomkiem elementu xsl:attribute-set, instrukcji
xsl:element, lub literałowego elementu wynikowego.

• Atrybuty: name (wymagany), namespace

(opcionalny)

• Zawartość: szablon.

background image

xsl:attribute-set

• Składnia:

<xsl:attribute-set
name = ”nazwaKwalifikowana”
namespace = ”URI”>
<! - - xsl:attribute* -- >
</xsl:attribute-set>

• Opis: definiuje grupę atrybutów, które mogą być

zastosowane względem elementów znajdujących się w
arkuszu styli.

• Atrybuty: name (wymagany), use-attribute-set

(opcionalny).

• Zawartość: zawiera zero lub więcej elementów

xsl:attribute. Każdy z tych elementów dodaje do zbioru
jeden atrybut.

background image

xsl:call-template

• Składnia:

<xsl:call-template

name = ”nazwaKwalifikowana”

namespace = ”URI”>

<!- - xsl:with-param* -- >

</xsl:call-template>

• Opis: wywołuje szablon, wykorzystując jego nazwę. Lista

węzła bieżącego i węzła kontekstu jest taka sama zaróno

dla szablonu wywołanego, jak i wywołującego. Szablony

muszą być wywoływane rekurencyjnie, element

xsl:template może zawierać w sobie kolejny element

xsl:template.

• Atrybuty: name (wymagany) – nazwa wywoływanego

elementu.

• Zawartość: zawiera zero lub więcej elementów xsl:with-

param, które zwracają parametry do szablonu o

określonej nazwie.

background image

xsl:choose

• Składnia:

<xsl:choose>
<!- - (xsl:when*, xsl:otherwith?) -- >
</xsl:choose>

• Opis: wybiera zero lub jedną sekwencje alternatywy.
• Atrybuty: brak
• Zawartość: zawiera jeden element xsl:when oraz

opcjonalnie xsl:otherwise; obydwa te elementy
posiadają kryterium testowe. W danych wyjściowych
podawana jest zawartość pierwszego potomka
xsl:when, którego kryterium testowe przyjmuje
wartość true. Zawartość xsl:otherwise pojawia się w
danych wyjściowych tylko wtedy, gdy żadne
kryterium testowe xsl:when nie jest true.

background image

xsl:comment

• Składnia:

<xsl:comment>

<!- - szablon -- >

</xsl:comment>

• Opis: wstawia do drzewa wynikowego komentarz.
• Atrybuty: brak
• Zawartość: zawartością elementu jest szablon,

który zostaje skonkretyzowany w celu utworzenia

tekstu komentarza. Wynikiem konkretyzacji tego

szablonu muszą być wyłącznie węzły tekstowe,

nie zawierające podwójnego znaku --, który

sygnalizuje koniec komentarza.

background image

xsl:copy

• Składnia:

<xsl:copy

use-attribute-set = ”nazwaKwalifikowana1

nazwaKwalifikowana2 …” >

<!- - szablon -- >

</xsl:copy>

• Opis: kopiuje bieżący węzeł z dokumentu źródłowego

do dokumentu wynikowego, oraz wszystkie węzły

przestrzeni nazw, do których ten węzeł się odwołuje.

Nie kopiuje jednak potomków węzła ani jego

atrybutów.

• Atrybuty: use-attribute-set (opcjonalny)
• Zawartość: jeśli jest to węzeł elementu, to atrybuty

mogą być dodane poprzez elementy potomne

xsl:attribute.

background image

xsl:copy-of

• Składnia:

<xsl:copy-of
select = ”wyrażenie” />

• Opis: wstawia do dokumentu wyjściowego

fragment drzewa wynikowego identyfikowany
przez atrybut select. Kopiuje identyfikowane przez
wyrażenie konkretne węzły - wraz ze wszystkimi
elementami pochodnymi tych węzłów, ich
atrybuty, przestrzenie nazw oraz potomków. Ta
cecha odróżnia tą instrukcję od xsl:copy.

• Atrybuty: select (wymagany)
• Zawartość: brak

background image

xsl:decimal-format

• Składnia:

<xsl:decimal-format name = ”nazwaKwalifikowana”

decimal-separator = ”znak” groupin-separator = ”znak”

infinity = ”ciąg znaków” minus-sign = ”znak” NaN =

”ciąg znaków” percent = ”znak” per-mille = ”znak” zero-

digit = ”znak” digit = ”znak”

patern-separator = ”znak”/>

• Opis: element najwyższego poziomu xsl:decimal-format

definiuje wzór, według którego funkcja format-number( )

konwertuje liczby zmiennoprzecinkowe na ciągi

tekstowe.

• Atrybuty: name (opcional), decimal-separator (opcional),

groupin-separator (opcinal), infinity (opcional), minus-

sign (opcional), NaN (opcional), percent (opcional),

permille (opcional), zero-digit (opcional) – domyśnie 0,

digit (opcional) – domyślnie #, pattern-separator

(opcional) – domyślnie ;.

• Zawartość: brak

background image

xsl:element

• Składnia:

<xsl:element

name = ”nazwaKwalifikowana”

namespace = ”URI”

use-attribute-set = ”nazwaKwalifikowana1

nazwaKwalifikowana2 … „>

<!- - szablon -- >

</xsl:element>

• Opis: wstawia element do drzewa wynikowego.

Nazwa jest podana przez atrybut name. Atrybuty

mogą być dodawane przez elementy potomne

xsl:attribute lub przez odwołanie z atrybutu use-

attribute-sets do instrukcji xsl:attribute-set,

zadeklarowanej w arkuszu styli.

• Atrybuty: name (wymagany), name-space

(opcjonalny) use-attribute-set (opcjonalny)

• Zawartość: zawartością jest szablon.

background image

xsl:fallback

Składnia:

<xsl:fallback>

<!- - szablon -- >

</xsl:fallback>

Opis: występuje jako element potomny elementu

rozszerzenia. Jeśli procesor nie rozpoznaje elementu

rozszerzenia, wtedy konkretyzuje zawartość

wszystkich potomków elementu xsl:fallback, według

ich kolejności. Jeżeli natomiast rozpozna element – w

którym pojawia się xsl:fallback, wtedy zawartość

xsl:fallback nie pojawi się w danych wyjściowych.

Atrybuty: brak

Zawartość: zawartością jest szablon, który jest

konkretyzowany i wyprowadzany wtedy i tylko wtedy,

gdy procesor XSLT nie rozpozna elementu rodzica

elementu xsl:fallback.

background image

xsl:for-each

• Składnia:

<xsl:for-each

select = ”wyrażenie_typu_zbioru_węzłów”>

<!- - (xsl:sort*, szablon) - ->

</xsl:for-each>

• Opis: „przechodzi” kolejno przez węzły identyfikowane

przez atrybut select i stosuje wobec każdego z nich

szablon.

• Atrybuty: select (wymagany)
• Zawartość: kolejność w jakiej są przetwarzane wybrane

węzły zwykle jest zgodna z kolejnością z jaką występują

w dokumencie. Jednak węzły mogą być porządkowane

za pomocą elementów potomnych xsl:sort. Pierwszym

takim elementem jest klucz sortowania, drugim wtórny

klucz sortowania, itd. xsl:for-each musi zawierać

szablon, który zostaje skonkretyzowany.

background image

xsl:if

• Składnia:

<xsl:if
test = ”wyrażenie_logiczne”>
<!- - szablon - ->
</xsl:if>

• Opis: zawiera szablon, który jest

konkretyzowany wtedy i tylko wtedy, gdy
zawarte w atrybucie test wyrażenie XPath ma
wartość true.

• Atrybuty: test (wymagany)
• Zawartość: szablon jest konkretyzowany tylko

wtedy, gdy atrybut test zwraca wartość true.

background image

xsl:import

• Składnia:

<xsl:import

href = ”URI” />

• Opis: element najwyższego poziomu xsl:import

importuje arkusz styli XSLT, znajdujący się w miejscu

wskazanym przez identyfikator URI, podany w

atrybucie href. Dokumenty źródłowe są przetwarzane

za pomocą kombinacji szablonów pochodzących z

arkuszy styli importującego i importowanego. Jeśli w

tych dwóch arkuszach wystąpi konflikt między

szablonami, wtedy pierszeń-stwo mają szablony z

arkusza importującego. Wszystkie elementy xsl:import

muszą być bezpośrednimi potomkami elementu

bazowego xsl:stylesheet. Ponadto, muszą występować

przed wszystkimi pozostałymi elementami

najwyższego poziomu.

• Atrybuty: href (wymagalny)

• Zawartość: brak

background image

xsl:include

• Składnia:

<xsl:include
href = ”URI” />

• Opis: Element najwyższego poziomu xsl:include

kopiuje zawartość elementu xsl:stylesheet lub
xsl:transform, znajdujących się w miejscu
wskazanym przez identyfikator URI. W
przeciwieństwie do xsl:import, niezależnie od tego
czy szablon lub inna reguła pochodzi z dołączonego
lub z dołączającego arkusza styli, niema żadnego
wpływu na pierwszeństwo reguł.

• Atrybuty: href (wymagany)
• Zawartość: brak

background image

xsl:key

• Składnia:

<xsl:key name = ”nazwaKwalifikowana”
match = ”wzorzec” use = ”wyrażenie”/>

• Opis: definiuje jeden lub więcej kluczy,

najwyższego poziomu, które mogą być
wywołane z dowolnego miejsca arkusza styli, za
pomocą funkcji key(). Każdy klucz ma nazwę,
wartość ciągu znaków oraz węzeł.

• Atrybuty: name (wymagany), match

(wymagany) use (wymagany)

• Zawartość: brak

background image

xsl:message

Składnia:

<xsl:message

terminate = ”yes” | ”no”>

<!- - szablon - ->

</xsl:message>

Opis: wysyła komunikat do procesora XSLT. Od

procesora zależy jak rozumie komunikat i co robi z

wiadomościami które rozumie. Typowym

zastosowaniem jest drukowanie informacji

diagnostycz-nych na stderr (standardowym wyjściu

błędów) lub stdout (standardowym wyjściu).

Atrybuty: terminate (opcjonalny)

Zawartość: szablon konkretyzowany w celu utworzenia

fragmentu dokumentu XML. Rezultat jest następnie

przekazywany do procesora XSLT jako komunikat.

background image

xsl:namespace-alias

• Składnia:

<xsl:namespace-alias stylesheet-prefix = ”przedrostek”

result-prefix = ”przedrostek” />

• Opis: element najwyższego poziomu deklarujący, że

pewien identyfikator URI przestrzeni nazw w arkuszu

styli powinien być zastąpiony przez inny identyfikator

URI przestrzeni nazw w drzewie wynikowym. Nadawanie

nazwy zastępczej (alias), jest szczególnie przydatne

przy transformowaniu za pomocą XSLT jednego

dokumentu XML na inny, w rezultacie transformacji nie

jest oczywiste, które nazwy należą do dokumentu

wejściowego, które do wyjściowego, a które do arkusza

styli.

• Atrybuty: stylesheet-prefix (wymagany), result-prefix

(wymagany)

• Zawartość: brak

background image

xsl:number

• Składnia:

<xsl:number value = ”wyrażenie_liczbowe” count =

”wzorzec” from = ”wzorzec” level = ”single” | ”multiple”

| ”any”

format = ”litera lub cyfra” lang = ”kod_języka” letter-

value = ”alphabetic” | ”traditional” grouping-separator

= ”znak”

grouping-size = ”liczba” />

• Opis: wstawia sformatowaną liczbę całkowitą do drzewa

wynikowego

• Atrybuty: value (obcja), count (opcja), from (opcja),

format – szablon wartośći atrybutu (opcja), level (opcja),

lang (opcja) – kod języka RFC 1766, letter-value (opcja),

grouping-separator (opcja), grouping-size (opcja)

• Zawartość: brak.

background image

xsl:otherwise

• Składnia:

<xsl:otherwise>
<!- - szablon -- >
</xsl:otherwise>

• Opis: występuje tylko jako ostatni element

potomny elementu xsl:choose. W przypadku gdy
nie skonkretyzowano elementu potomnego
xsl:when, działa jako element domyślny.

• Atrybuty: brak
• Zawartość: zawartością jest szablon, który jest

konkretyzowany tylko w przypadku, gdy żaden z
elementów potomnych xsl:when elementu
xsl:choose nie jest true.

background image

xsl:output

• Składnia:

<xsl:output method = ”xml” | ”html” | ”text” version =

”NMTOCKEN”

encoding = ”nazwa_kodowania” omit-xml-declaration = ”yes” | ”no”

standalone = ”yes” | ”no” doctype-public = ”PUBLIC_ID” doctype-

system = ”SYSTEM_ID” cdata-section-element =

”nazwa_elementu_1 nazwa_elementu_2 …” ident = ”yes” | ”no”

media-type = ”ciąg_znaków” />

• Opis: element najwyższego poziomu pomaga w określeniu

dokładnego formatowania dokumentu XML, generowanego

w przypadkach, kiedy drzewo wynikowe jest zapisane w

pliku, zapisywane do strumienia lub inaczej szeregowane

w sekwencji bajtów. Nie wpływa na generowanie samego

drzewa wynikowego.

• Atrybuty: method, version, encoding, omit-xml-

declaration, standalone, doctype-public, doctype-system,

cdata-section-element, ident media-type (wszystkie

opcjonalne).

background image

xsl:param

• Składnia:

<xsl:param

name = ”nazwaKwalifikowana”

select = ”wyrażenie” >

<!- - szablon - ->

</xsl:param>

• Opis: wiąże nazwę z wartością. Element

najwyższego poziomu zapewnia domyślną

wartość, która zostaje użyta, gdy podczas

wywołania szablonu nie zostanie podany parametr

o danej nazwie.

• Atrybuty: name (wymagany), select (opcjonalny)
• Zawartość: zawartością elementu jest szablon,

który jest konkretyzowany celem generowania

fragmentu drzewa wynikowego. Ten fragment

drzewa staje się następnie wartością parametru.

background image

xsl:preserve-space

Składnia:

< xsl:preserve-space elements =

”nazwaKwalifikowana_1 nazwaKwalifikowana_2

…” />

Opis: element najwyższego poziomu, określa w

dokumencie źródłowym te elementy, które przed

transformacją nie zostaną pozbawione białych

znaków. Proces polega na usunięciu wszystkich

węzłów tekstowych, które zawierają białe znaki. Białe

znaki są domyślnie zachowywane w elemencie, pod

warunkiem, że jego nazwa nie została wymieniona w

atrybucie liście elementu xsl:strip-space. Jeśli jednak

nazwy elementu wystąpią na obu listach, to białe

znaki zostają zachowane.

Atrybuty: elements (wymagany)

Zawartość: brak

background image

xsl:processing-instruction

• Składnia:

<xsl:processing-instruction
name = ”obiekt_docelowy” >
<!- - szablon - ->
</xsl:processing-instruction>

• Opis: wstawia polecenie przetwarzania do drzewa

wynikowego.

• Atrybuty: name (wymagany)
• Zawartość: zawartością jest szablon, który jest

konkretyzowany w celu wygenerowania danych
poleceń przetwarzania. Szablon może zawierać
instrukcje XSLT, pod warunkiem, że wynikiem
skonkretyzowania tego szablonu będą dane
polecenia przetwarzania o właściwej konstrukcji.

background image

xsl:sort

• Składnia:

<xsl:sort select = ”wyrażenie_typu_ciąg_znaków”

data-type = ”text” | ”number” lang = ”kod_języka”

order = ”ascending” | ”descending” case-order =

”upper-first” | ”lower-first” />

• Opis: występuje jako element potomny xsl:apply-

tempaltes albo xsl:for-each. Zmienia ona sposób

uprządkowania listy węzłów kontekstu, z porządku

narzuconego przez dokument na inny porządek np.

alfanumeryczny. Można ustawić wiele kluczy

sortowania, wykorzystując do tego kolejne

elementy xsl:sort. Sortowanie nastąpi według

kolejności kluczy.

• Atrybuty: select (wymagany), data-type (opcja),

lang (opcja), order (opcja), case-order (opcja).

background image

xsl:strip-space

• Składnia:

< xsl:strip-space elements = ”nazwaKwalifikowana_1

nazwaKwalifikowana_2 …” />

• Opis: element najwyższego poziomu wskazuje w

dokumencie źródłowym elementy, z których przed

transformacją zostaną usunięte białe znaki. Proces

polega na usunięciu wszystkich węzłów tekstowych,

które zawierają tylko białe znaki. Domyślnie białe

znaki nie są usuwane z elementu, jeśli jego nazwa nie

figuruje na liście atrybutu elements xsl:strip-space.

Ten element nie powoduje usunięcia poprzedzających

lub kończących białych znaków, ani nie normalizuje w

inny sposób białych znaków w elementach, które

zawierają przynajmniej jeden znak widoczny.

• Atrybuty: elements (wymagany)

background image

xsl:stylesheet

• Składnia:

<xsl:stylesheet

xmlns:xsl = ”http://www.w3.org/1999/XSL/Transform id =
”ID”
extension-element-prefix = ”przedrostek1 przedrostek2 …”
exclude-result-prefix = ”przedrostek1 przedrostek2 …”
version = ”1.0” name = ”obiekt_docelowy” >
<!- - (xsl:import*, elementy-najwyższego-poziomu) - ->
</xsl:stylesheet>

• Opis: jest podstawowym elementem arkusza styli XSLT.
• Atrybuty: xmlns:xsl, version, (obydwa wyamagane) id,

extension-element-prefix, exclude-result-prefix (trzy
opcjonalne)

• Zawartość: dowolne elementy xsl:import, za którymi

następują dowolne elementy najwyższego poziomu w
dowolnej kolejności.

background image

xsl:template

• Składnia:

< xsl:template

match = ”wzorzec” priority = ”liczba”

name = ”nazwaKwalifikowana” mode =

”nazwaKwalifikowana” >

< /xsl:template>

• Opis: jest kluczowym elementem najwyższego poziomu

dla całego XSLT. Atrybut mach zawiera wzorzec, z

którym porównywane są węzły, w kolejności

przetwarzania. Jeżeli węzeł pasuje do wzorca, wtedy

szablon jest konkretyzowany i wstawiany do drzewa

wyjściowego.

• Atrybuty: match, mode, name, priority (wszystkie

opcjonalne)

• Zawartość: szablon, który powinien być

konkretyzowany, kiedy wystąpi dopasowanie lub gdy

element zostanie wywołany przez nazwę.

background image

xsl:text

• Składnia:

<xsl:text
disable-output-escaping = ”yes” | ”no” >
<!- - #PCDATA - ->
</xsl:text>

• Opis: instrukcja używana jest wewnątrz

szablonów, w celu wskazania, że ich zawartość
powinna być przesłana do danych wyjściowych
jako tekst.

• Atrybuty: disable-output-escaping (opcjonalny)
• Zawartość: zawartością nie są elementy, ale

zwykły tekst.

background image

xsl:transform

• Składnia:

<xsl:transform

xmlns:xsl = ”http://www.w3.org/1999/XSL/Transform id = ”ID”

extension-element-prefix = ”przedrostek1 przedrostek2 …”

exclude-result-prefix = ”przedrostek1 przedrostek2 …”

version = ”1.0” name = ”obiekt_docelowy”

<!- - (xsl:import*, elementy-najwyższego-poziomu) - ->

</xsl:transform>

• Opis: jest rzadko używanym elementem równoważnym

xsl:stylesheet - podstawowym elementem arkusza styli

XSLT.

• Atrybuty: xmlns:xsl, version, (obydwa wyamagane) id,

extension-element-prefix, exclude-result-prefix (trzy

opcjonalne)

• Zawartość: dowolne elementy xsl:import, za którymi

następują dowolne elementy najwyższego poziomu w

dowolnej kolejności.

background image

xsl:value-of

Składnia:
<xsl:value-of
select = ”wyrażenie”
disable-output-escaping = ”yes” | ”no” />

Opis: liczy wartości ciągu znaków wyrażenia XPath i
wstawia je do drzewa wynikowego. Wartościami
siedmiu różnych typów węzłów są: element
(zawartość tekstowa bez znaczników), text (tekst
węzła), atrybut (wartość znormalizowana), element
podstawowy
(wartość elementu), polecenie
przetwarzania
(dane polecenia), komentarz (tekst),
przestrzeń nazw (identyfikator URI).

Atrybuty: select (wymagany), disable-output-
escaping (opcja)

background image

xsl:variable

• Składnia:

<xsl:variable

name = ”nazwaKwalifikowana”

select = ”wyrażenie”>

<!- - szablon - ->

</xsl:variable>

• Opis: Łączy nazwę z wartością dowolnego typu

ciągu znaków, liczba zbiór węzłów itp. Do zmienne

można odwołać się z dowolnego miejsca,

używając w szablonie wartość atrybutu $name.

• Atrybuty: name (wymagany), select (opcja)
• Zawartość: szablon stosowany celem utworzenia

wartości zmiennej jako fragmentu drzewa

wynikowego.

background image

xsl:when

• Składnia:

<xsl:when
test = ”wyrażenie_logiczne”>
<!- - szablon - ->
</xsl:when>

• Opis: element xsl:when pojawia się jedynie jako

element potomny xsl:choose.

• Atrybuty: test (wymagany)
• Zawartość: szablon, który ma być

skonkretyzowany i wstawiony do drzewa
wynikowego, jeśli atrybut test ma wartość true.

background image

xsl:with-param

• Składnia:

<xsl:with-param

name = ”nazwaKwalifikowana”

select = ”wyrażenie”>

<!- - szablon - ->

</xsl:with-param>

• Opis:przekazuje parametr o podanej nazwie do

szablonu, który go oczekuje. Może być potomkiem

xsl:apply-templates, jak i xsl:call-template.

• Atrybuty: name (wymagany), select (opcja)
• Zawartość: szablon jest konkretyzowany i

przekazywany jako wartość parametru. Jeśli

xsl:with-param nie jest elementem pustym, nie

może posiadać atrybutu select.

background image

Funkcje XSLT

current( ) – zwraca zbiór węzłów, zawierający węzeł bieżący
document( ) – ładuje dokument XML spod URI
element-available( ) – zwraca wartość true jeśli

zidentyfikuje

format-number( ) – konwertuje liczbę x na ciąg znaków
function-available( ) – zwraca true jeśli znajdzie funkcję

biblioteczną procesora XSLT

generate-id( ) – zwraca ciąg znaków, który jest atrybutem

typu IT

key( ) – zwraca pełny zbiór węzłów, dokumentu źródłowego
system-property( ) – zwraca wartość wskazanej

właściwości

vendor-url – identyfikuje producenta procesora XSLT
unparsed-entity-uri( ) – zwraca identyfikator URI nie

analizowanej encji o określonej nazwie, zadeklarowanej w

DTD dokumentu źródłowego, lub pusty ciąg znaków, jeśli nie

istnieje encja o danej nazwie


Document Outline


Wyszukiwarka

Podobne podstrony:
04 Zabezpieczenia silnikówid 5252 ppt
05 xml domid 5979 ppt
10 XML appsid 11206 ppt
04 E Model wzorcowyid 5290 ppt
04 03 Konfliktyid 4910 ppt
04 The Reformationid 5200 ppt
2009 03 04 POZ 01id 26786 ppt
04 Prezentacja Samobojstwaid 5156 ppt
04 Prezentacja STRESid 5157 ppt
04 jama brzusznaid 5039 ppt
04 Zagadnienie prawdyid 4878 ppt
04 Najlepsze pomysłyid 5107 ppt
04 Materiały stykoweid 5079 ppt
04 Reakcje redoksid 5176 ppt
04 Prąd sinusoidalnyid 5153 ppt
04 Tworzywa sztuczneid 4872 ppt

więcej podobnych podstron