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