Переменные в XSLT фактически являются константами.
Определение переменных осуществляется через xsl:variable, например:
<xsl:variable name="var1">значение</xsl:variable>
Обращение к переменной осуществляется через $имя_переменной.
Прототип:
<!-- Category: top-level-element --> <!-- Category: instruction --> <xsl:variable name = qname select = expression> <!-- Content: template --> </xsl:variable>
Рассмотрим простейший XML документ:
<document> <title>Заголовок 1</title> <structure id="1"> <value>aaa</value> </structure> <structure id="2"> <value>bbb</value> </structure> </document>
XSL-шаблон для форматированного отображения XML данных:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/document"> <html> <head> <title><xsl:value-of select="title"/></title> </head> <body> <!-- Выбираем узлы structure --> <xsl:apply-templates select="structure" /> </body> </html> </xsl:template> <!-- Шаблон для отображения узлов /document/structure --> <xsl:template match="structure"> <!-- Определяем переменную с адресом --> <xsl:variable name="path">http://localhost/</xsl:variable> <p> <a href="{$path}{@id}/">Значение: <xsl:value-of disable-output-escaping="yes" select="value"/></a> </p> <p>Значение параметра ID: <xsl:value-of disable-output-escaping="yes" select="@id"/></p> </xsl:template> </xsl:stylesheet>
В результате получится HTML-документ:
<html> <head> <title>Заголовок 1</title> </head> <body> <p><a href="http://localhost/1/">Значение: aaa</a></p> <p>Значение параметра ID: 1</p> <p><a href="http://localhost/2/">Значение: bbb</a></p> <p>Значение параметра ID: 2</p> </body> </html>
Переменной можно присвоить значение узла или значение атрибута. Пример присвоения значения узла value:
<xsl:variable name="value1" select="value"/>
Пример присвоения атрибута id узла value:
<xsl:variable name="value1" select="value/@id"/>
Использование переменной:
<xsl:value-of disable-output-escaping="yes" select="$value1"/>