Element XSLT <xsl:variable>
Definicja i użycie
Element <xsl:variable> służy do deklarowania lokalnych lub globalnych zmiennych.
Komentarz:Jeśli zadeklarowana jako element szczytowy, zmienna jest globalna, a jeśli zadeklarowana w szablonie, zmienna jest lokalna.
Komentarz:Gdy ustawisz wartość zmiennej, nie można jej zmienić lub edytować!
Uwaga:Możesz dodać wartość do zmiennej za pomocą zawartości elementu <xsl:variable> lub poprzez atrybut select!
Gramatyka
<xsl:variable name="name" select="wyrażenie"> <!-- Content:template --> </xsl:variable>
Atrybut
Atrybut | Wartość | Opis |
---|---|---|
name | name | Wymagane. Określa nazwę zmiennej. |
select | wyrażenie | Opcjonalnie. Definiuje wartość zmiennej. |
Przykład
Przykład 1
Jeśli ustawiono atrybut select, element <xsl:variable> nie może zawierać żadnej zawartości. Jeśli atrybut select zawiera tekstową ciąg znaków, ciąg znaków musi być otoczony znakami cudzysłowów.
Poniższe dwa przykłady przypisują wartość "red" zmiennemu "color":
<xsl:variable name="color" select="'red'" />
<xsl:variable name="color" select='"red"' />
Przykład 2
Jeśli element <xsl:variable> zawiera tylko atrybut name, ale nie zawiera żadnej zawartości, wartość zmiennej jest pustym łańcuchem:
<xsl:variable name="j" />
Przykład 3
Poniższy przykład przypisuje wartość zmiennemu "header" zawartością elementu <xsl:variable>:
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:variable name="header"> <tr> <th>Element</th> <th>Opis</th> </tr> </xsl:variable> <xsl:template match="/"> <html> <body> <table> <xsl:copy-of select="$header" /> <xsl:for-each select="reference/record"> <tr> <xsl:if category="XML"> <td><xsl:value-of select="element"/></td> <td><xsl:value-of select="description"/></td> </xsl:if> </tr> </xsl:for-each> </table> <br /> <table> <xsl:copy-of select="$header" /> <xsl:for-each select="table/record"> <tr> <xsl:if category="XSL"> <td><xsl:value-of select="element"/></td> <td><xsl:value-of select="description"/></td> </xsl:if> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>