• Nie Znaleziono Wyników

Ćwiczenie 11: Transformacje XSL Dołączanie dokumentu z transformacjami do pliku XML

N/A
N/A
Protected

Academic year: 2021

Share "Ćwiczenie 11: Transformacje XSL Dołączanie dokumentu z transformacjami do pliku XML"

Copied!
1
0
0

Pełen tekst

(1)

Ćwiczenie 11: Transformacje XSL

Dołączanie dokumentu z transformacjami do pliku XML

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

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

Tworzenie szablonów

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>

(2)

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

Przetwarzanie elementów

► 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).

(3)

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

- zauważ, że nie każdy element „procesor” posiada element „link”. Jeżeli element

„procesor” nie posiada elementu „link” należy wypisać stosowny komunikat. Użyj do tego tagó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:

 Ponumerowaną listę Państw posortowanych według liczby mieszkańców

 W ramach każdego państwa : nazwę, stolicę, obszar, ludność

(4)

 Główne miasto i główne rzeki tylko w przypadku gdy istnieją, jeżeli nie ma głównych rzek należy wypisać odpowiednią informację

 Na końcu sumaryczną liczbę mieszkańców oraz sumaryczny obszar:

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')"/>.

Cytaty

Powiązane dokumenty

Tych przypadków wydaje się być bardzo wiele, ale najczęściej jest tak, że jedno dziecko ma.. kilka

BIOS posiadający funkcję update BIOS z opcją automatycznego update BIOS przez sieć włączaną na poziomie BIOS przez użytkownika bez potrzeby uruchamiania systemu operacyjnego z

Podana cena, obejmująca cenę fabrycznie nowego modelu bazowego wraz z wyposażeniem fabrycznym i/lub cenę zabudowy specjalnej i/lub cenę akcesoriów i/lub usług dodatkowych

Ceny na warunkach ogólnych nie mają zastosowania do nabywania sprzętu przez Abonentów (w rozumieniu Regulaminu świadczenia usług telekomunikacyjnych przez POLKOMTEL

Waga produktu: 2,2 kg Wysokość produktu: 24,9 mm Głębokość produktu: 249,6 mm Szerokość produktu: 359 mm Ochrona. Moduł TPM (Trusted Platform

Wady sprzętu ujawnione w okresie gwarancji usuwane będą bezpłatnie w terminie 14 dni roboczych od daty dostarczenia sprzętu do serwisu.. Termin może ulec wydłużeniu w

Dla przyjętych przez nas danych uzyskuje się następujący liniowy model zależności cen jednostkowej od powierzchni użytkowej postaci:.. y 12.963,65 80,85

Wszelkie zmiany i wpisy dokonane w karcie gwarancyjnej przez osoby nieupoważnione oraz naruszenie plomb gwarancyjnych sprzętu powodują utratę gwarancji.. Zaleca się zamontowanie