Składnia i semantyka XSL Transformations

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

Ten artykuł opisuje składnię i semantykę XSLT - języka przekształceń dokumentów XML.

Elementy języka[edytuj | edytuj kod]

Szablony ze wzorcem: xsl:template z atrybutem match[edytuj | edytuj kod]

Szablony są podstawowym elementem języka. Stanowią reguły określające, w jaki sposób zamienić elementy źródłowego XML-a pasujące do wzorca match (będącego ścieżką XPath).

<xsl:template match="samochod[@rocznik < 1980]">
zabytek rocznik poniżej 1980: <xsl:apply-templates/>
</xsl:template>

W szablonach często spotyka się polecenie xsl:apply-templates wstawiające w danym miejscu wynik przetwarzania elementów określonych parametrem select będącym ścieżką XPath (a jeśli go brak - dzieci aktualnego elementu).

Szablony nazwane: xsl:template z parametrem name[edytuj | edytuj kod]

Szablony nazwane przypominają funkcje z innych języków programowania. Mogą być wywołane z dowolnego miejsca szablonu poleceniem xsl:call-template. Elementy xsl:param pozwalają na ich parametryzowanie.

Używając szablonów nazwanych można uzyskać efekt pętli (tak samo, jak w językach funkcyjnych). Poniższy szablon nazwany

<xsl:template name="petla">
  <xsl:param name="i"/>
 
  <xsl:value-of select="$i"/>
 
  <xsl:if test="$i &gt; 0">
    <xsl:call-template name="petla">
      <xsl:with-param name="i" select="$i - 1"/>
    </xsl:call-template>
  </xsl:if>
</xsl:template>

wywołany przez

<xsl:call-template name="petla">
	<xsl:with-param name="i" select="10"/>
</xsl:call-template>

wyświetli liczby od 10 do 1.

Wstawianie wartości: xsl:value-of[edytuj | edytuj kod]

xsl:value-of wstawia w danym miejscu zawartość elementu określonego przez atrybut select. W poniższym przykładzie wstawiona jest wartość atrybutu kolor aktualnego elementu.

kolor: <xsl:value-of select="@kolor">

XSLT umożliwia również wygodne wstawianie wartości wewnątrz znaczników, przy użyciu nawiasów klamrowych:

<span style="color: {@kolor}">kolor</span>

Zobacz też[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]