XSLT

References for subject 9

Generation 1.0:

Generation 2.0:

Parametry, XSLT zwracające XML

Task 1.

Do arkusza sklep.xsl prezentującego zawartość sklepu dodaj parametr kat, który ma taki wpływ na działanie:

  • jeśli podany, prezentowane są jedynie towary o określonym id-kategorii,
  • jeśli nie podany, prezentowane są wszystkie towary.

Task 2.

Stwórz arkusz filtrujący towary ze względu na kategorie zgodnie z parametrem kat, jak w powyższym zadaniu, i wypisujący wynik w postaci XML o takiej samej strukturze (element sklep, w nim elementy towar). Użyj instrukcji do kopiowania węzłów (copy, copy-of).

Task 3.

Stwórz arkusz tworzący w wyniku XML o takiej samej strukturze jak wejściowy, ale zmieniający ceny towarów ze wskazanej kategorii o wskazaną różnicę procentową (arkusz może mieć np. parametry kat i zmiana).

XSLT → XSLT

XSLT jest też XML-em, a więc może być wyprodukowany jako wynik XSLT. Trzeba zrobić coś, żeby odróżnić elementy XSLT, ktróre mają być interpretowane teraz, od elementów XSLT, które mają być wynikiem transformacji. Umożliwia to deklaracja namespace-alias.

Example 1.

Przykład z rekomendacji.

<xsl:stylesheet  version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:fo="http://www.w3.org/1999/XSL/Format"
  xmlns:axsl="http://www.w3.org/1999/XSL/TransformAlias">

  <xsl:namespace-alias stylesheet-prefix="axsl" result-prefix="xsl"/>
	
  <xsl:template match="/">
    <axsl:stylesheet>
    <xsl:apply-templates/>
    </axsl:stylesheet>
  </xsl:template>
		
  <xsl:template match="block">
    <axsl:template match="{.}">
    <fo:block><axsl:apply-templates/></fo:block>
    </axsl:template>
  </xsl:template>
</xsl:stylesheet>

Task 4.

(Wyobrażamy sobie że) Baza danych eksportuje dane (pojedyncze tabele) w postaci XML. Każdy wiersz wyniku jest umieszczony w elemencie wiersz, a poszczególne pola w wierszu mają nazwy takie jak kolumny tabeli. Przykłady dokumentów: tabela1.xml tabela1a.xml tabela2.xml.

W dokumentach takich jak schemat1.xml i schemat2.xml (DTD) opisane są „schematy” tabeli wraz z metadanymi do wykorzystania przy prezentacji (etykiety kolumn, czy pokazywać kolumnę, czy i jak sortować po podanej kolumnie, sortujemy w takiej kolejności, w jakiej podano kolumny).

Należy napisać arkusz XSLT, który na podstawie schematu tabeli utworzy w wyniku arkusz XSLT, służący do prezentacji tabel zgodnych z tym schematem. Wynikowy arkusz powinien prezentować tabele w postaci tabel HTML, uwzględniając dodatkowe informacje podane w schemacie.

Programowanie w XSLT

Example 2. Silnia

Files: arkusz v. 1.0, dokument uruchamiający, arkusz v. 2.0 - funkcja.

 <xsl:template name="silnia">
  <xsl:param name="n"/>
  <xsl:param name="res" select="1"/>
  <xsl:choose>
  <xsl:when test="$n &gt; 1">
   <xsl:call-template name="silnia">
    <xsl:with-param name="n" select="$n - 1"/>
    <xsl:with-param name="res"
         select="$n * $res"/>
   </xsl:call-template>
   </xsl:when>
   <xsl:otherwise> <xsl:value-of select="$res"/> </xsl:otherwise>
   </xsl:choose>
 </xsl:template>

Task 5.

Analogicznie jak w przykładzie z silnią zaimplementuj liczby Fibonacciego (albo coś trudniejszego, jeśli masz ochotę).


Valid XHTML 1.1Valid CSS