Выдано 108976 лицензий

Переменные (константы)

Переменные в 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"/>