Professional Documents
Culture Documents
Wykald 17
Wykald 17
XSLT 2
Szablony: Elementy Wymagane
Element template musi posiadać jeden z atrybutów:
●
atrybut match – definiuje transformację dla
elementu opisanego przez ten atrybut
<xsl:template match="...">...</xsl:template>
●
atrybut name – wynik produkowany na wyjście za
każdym razem gdy szablon jest wykonywany
<xsl:template name="...">...</xsl:template>
Wykonanie Szablonu: Nazwa
Definicja szablonu z nazwą:
<xsl:template name="nazwa">...</xsl:template>
Wywołanie szablonu:
<xsl:template ...>
<xsl:call-template name="nazwa"/>
</xsl:template>
Wykonanie Szablonu: Przykład
<xsl:template match="root">
<xsl:call-template name="nazwa"/>
<xsl:call-template name="nazwa"/>
</xsl:template>
<xsl:template name="nazwa">
<xsl:text>text</xsl:text>
</xsl:template>
Wykonanie Szablonu: Wzorzec
Definicja szablonu z wzorcem:
<xsl:template match="elem">...</xsl:template>
Wywołanie szablonu:
●
stosuje się do wszystkich dzieci bieżącego węzła:
<xsl:apply-templates/>
●
wybiera węzły do których szablon się stosuje:
<xsl:apply-templates select="..."/>
Wykonanie Szablonu: Przykład
<xsl:template match="root">
<xsl:apply-templates/>
<xsl:apply-templates select="@att"/>
</xsl:template>
<xsl:template match="elem">
<xsl:text>elementy</xsl:text>
</xsl:template>
<xsl:template name="@att">
<xsl:text>atrybuty</xsl:text>
</xsl:template>
Szablony z Trybem
Element template może posiadać atrybut mode –
pozwala przetworzyć ten sam zbiór węzłów wiele razy.
<xsl:template match="root">...</xsl:template>
<xsl:template match="sub">...</xsl:template>
<root att="wartosc">
<elem><sub>text1</sub></elem>
</root>
<xsl:template match="root">...</xsl:template>
<xsl:template match="elem">...</xsl:template>
<root att="wartosc">
<elem><sub>text1</sub></elem>
</root>
<xsl:template match="root">...</xsl:template>
<xsl:template match="sub">...</xsl:template>
<xsl:template match="elem/sub">...</xsl:template>
<root att="wartosc">
<elem><sub>text1</sub></elem>
</root>
<xsl:call-template name="pole">
<xsl:with-param name="wysokosc" select="10"/>
<xsl:with-param name="szerokosc" select="20"/>
</xsl:call-template>
Parametry Domyślne
Szablon z parametrami o wartościach domyślnych:
<xsl:template name="pole">
<xsl:param name="wysokosc">10</xsl:param>
<xsl:param name="szerokosc">20</xsl:param>
<xsl:value-of select="$wysokosc * $szerokosc"/>
</xsl:template>
<xsl:call-template name="pole">
<xsl:with-param name="wysokosc" select="30"/>
</xsl:call-template>
Parametry Domyślne z Wyborem
Szablon z parametrami o wartościach domyślnych
powiązanych z dokumentem wejściowym:
<xsl:template name="pole">
<xsl:param name="wysokosc" select="wys"/>
<xsl:param name="szerokosc" select="szer"/>
<xsl:value-of select="$wysokosc * $szerokosc"/>
</xsl:template>
<xsl:call-template name="pole"/>
Parametry Globalne
Parametry które których zakresem jest cały arkusz.
java org.apache.xalan.xslt.Process
-in zewnetrzne.xml
-xsl zewnetrzne.xsl
-out zewnetrzne.out
-param gleb 50
●
o nazwie nazwa i wartości ""
<xsl:variable name="x"/>
●
o nazwie nazwa i wartości test
●
o nazwie nazwa i wartości elementu test
<xsl:template name="objetosc">
<xsl:param name="wys" select="wys"/>
<xsl:param name="szer" select="szer"/>
<xsl:variable name="gleb">
<xsl:choose>
<xsl:when test="gleb = 'jeden'">1</xsl:when>
<xsl:when test="gleb = 'dwa'">2</xsl:when>
<xsl:otherwise>3</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select="$wys * $szer * $gleb"/>
</xsl:template>
Widoczność Zmiennych
Widoczna w elemencie w którym jest zadeklarowana:
●
zmienna lokalna
<xsl:template name="...">
<xsl:variable name="...">...</xsl:variable>
</xsl:template>
●
zmienna globalna
<xsl:stylesheet ...>
<xsl:variable name="...">...</xsl:variable>
...
</xsl:template>
Zmienne czy Stałe?
Stałe.