Переменные (константы)
Переменные в 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"/>
Не нашли ответ на свой вопрос в документации? Направьте обращение в службу поддержки или онлайн чат.