cwiczenie11, PJWSTK, 0sem, TIN


Ćwiczenie 11: Transformacje XSL

<?xml-stylesheet type="text/xsl" href="nazwa pliku xsl"?>

XSL jest językiem opartym na składni XML

Definicja pliku XSL

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

xmlns:fo="http://www.w3.org/1999/XSL/Format">

Tu wstawić deklaracje stylów

</xsl:stylesheet>

Szablony są podstawowym elementem budulcowym transformat XSL. Deklaracja szablonu wygląda następująco:

<xsl:template match=”…”>

</xsl:template>

gdzie wartość match może być następująca:

match=”/” - główny element dokumentu

match=”nazwa” - element o nazwie węzła =”nazwa”

match=”przodek/nazwa” - element o nazwie węzła =”nazwa” posiadający ojca o nazwie=”przodek”

match=”przodek//nazwa” - element o nazwie węzła =”nazwa” posiadający węzeł o nazwie=”przodek” gdziekolwiek nad sobą w strukturze dokumentu

match=”nazwa1 | nazwa 2 | nazwa3 …” -element pasujący do którejkolwiek z nazw

match=”nazwa-elementu[@nazwa-atrybutu=”wartość”]” - element o danej nazwie posiadający atrybut o danej nazwie i wartości=”wartość”.

match=”nazwa-elementu[@nazwa-atrybutu]” - element posiadający atrybut o danej nazwie

match=”nazwa-elementu[nazwa-elementu]” - element o danej nazwie posiadający dziecko o danej nazwie

match=”id(aaa)” -element o ID=”aaa”

► Zacznijmy od zbudowania prostej transformacji wyświetlającej prosty plik html wyświetlający tytuł dokumentu „Procesory z dnia: data” gdzie data będzie pobierana z pliku „procesory.xml”.

do pustego pliku procesory1.xsl dopisz

<xsl:template match="/">

<html>

<head>

<title>Procesory!!!</title>

</head>

<body bgcolor="white" vlink="blue" alinku="blue" link="blue">

<font color="black">

<h1> <center>Cennik procesorow z dnia:

<xsl:value-of select="procesory/@data"/>

</center>

</h1>

</font>

</body>

</html>

</xsl:template>

► Aby obejrzeć wynik podłącz plik ze stylami do pliku „procesory1.xml” i uruchom ten plik w IE.

-wstaw wiersz <?xml-stylesheet type="text/xsl" href="procesory1.xsl"?> do pliku „procesory1.xml”

- uruchom IE

► Włącz przetwarzanie pozostałych elementów.

- wstaw wiersz <xsl:apply-templates/> przed znacznikiem </body>

<xsl:apply-templates/> pozwala na przetwarzanie wszystkich elementów dla których zdefiniowane są wzorce. Aby w danym miejscu przetwarzać tylko wybrany element należy użyć <xsl:apply-templates select=”scieżka do elementu”/>

np. <xsl:apply-templates select=”procesory/procesor/cena”/>

- uruchom IE

► Dodaj własną obsługę elementów.

- dodaj do pliku z transformacjami następujące wiersze wprowadzające obsługę elementu o nazwie „typ”

<xsl:template match="typ">

Procesor: <xsl:value-of select="."/>

<br/>

</xsl:template>

- dodaj obsługę węzłów dla elementów „cena” oraz „link”

- uruchom IE

► Dodaj wyświetlanie atrybutów .

-odwołanie do atrybutu poprzedzone jest znakiem @

<xsl:value-of - select=”@typ”/> wyświetla atrybut typ aktualnego węzła.

- uruchom IE

►Wyświetl pogrupowane dane procesora (typ wraz z ceną i linkami).

-stwórz wzorzec dla elementu „procesor” i w nim zawrzyj obsługę elementów typ, cena i link w taki sposób aby wyświetlane były one zawsze w tej samej kolejności (typ , potem cena potem link)

►Dodaj obsługę wielu elementów typu cena (o ile jeszcze nie działa).

- wstaw w odpowiednie miejsce - przy elemencie procesor

<xsl:for-each select="./cena">

Cena (<xsl:value-of select="@typ"/>): <xsl:value-of select="."/> <br/>

</xsl:for-each>

►Dodaj warunkową obsługę linków.

<xsl:choose>

<xsl:when test=”warunek”>

</xsl:when>

<xsl:otherwise>

</xsl:otherwise>

</xsl:choose>

►Wprowadź sortowanie procesorów.

-posortuj elementy o nazwie „procesor” według typu. Zamień <xsl:apply-templates/>

<xsl:apply-templates select="procesory/procesor">

<xsl:sort select="typ"/>

</xsl:apply-templates>

►Wprowadź sortowanie cen - najpierw detaliczna potem hurtowa.

►Wprowadź numerowanie procesorów.

-użyj elementu <xsl:number value="pozycja" format="1. "/> aby wprowadzić numerowanie elementów. Należy wstawić to w template dla elementu „procesora”. Do aktualnej pozycji można odwołać się poprzez metodę „position()”

►Formatowanie liczb.

W celu sformatowania liczb należy określi właściwości formatowania (jaki znak rozdziela tysiące itp.). Używa się do tego deklaracji globalnej <xsl:decimal-format>

<xsl:decimal-format grouping-separator=" " name="polskie"/>

Formatowanie odbywa się poprzez wywołanie operacji format-number(co formatujemy,'format','nazwa formatu)

Np.

<xsl:value-of select="format-number (current(),'### ### ###.00','polskie')"/>

W celu dokładnego zapoznania się z dostępnymi formatami wejdź na stronę:

http://java.sun.com/j2se/1.4.1/docs/api/java/text/DecimalFormat.html

►Zadania.

Stwórz plik xsl dla pliku sasiedzi.xml wyświetlający następujące informacje:

Użyj operacji sum podając jako argument które węzły chcesz sumować

Np.:

<xsl:value-of select="format-number(sum(procesory/procesor/cena),'### ###.00','polskie')"/>.



Wyszukiwarka

Podobne podstrony:
cwiczenia12, PJWSTK, 0sem, TIN
DTD i XML Schema, PJWSTK, 0sem, TIN
TIN - opracowane, PJWSTK, 0sem, TIN
TIN e 26.06.2006, PJWSTK, 0sem, TIN
cw dpu, PJWSTK, 0sem, PRI, PRI
Ark-pyta, PJWSTK, 0sem, TAK
HTML, PJWSTK, 0sem, MUL
MAD k2 2001-2002, PJWSTK, 0sem, MAD, kolokwia, kolokwium 2
sciaga-ARK, PJWSTK, 0sem, TAK
BYT zestaw7, PJWSTK, 0sem, BYT, egzaminy
Erwinkil, PJWSTK, 0sem, RBD
ark111, PJWSTK, 0sem, TAK

więcej podobnych podstron