parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

G_Z 02.10.2008 22:08 / 02.10.2008 22:17

<xsl:choose>
	<xsl:when test="@type">
		<xsl:variable name="type" select="@type"/>
	</xsl:when>
	<xsl:otherwise>
		<xsl:variable name="type" select="'@type'"/>
	</xsl:otherwise>
</xsl:choose>
—>
<xsl:variable name="type">
	<xsl:choose>
		<xsl:when test="@type">
			<xsl:value-of select="@type"/>
		</xsl:when>
		<xsl:otherwise>
			<xsl:value-of select="'@type'"/>
		</xsl:otherwise>
	</xsl:choose>
</xsl:variable>
Но, если вы собираетесь в одном шаблоне определить переменную, а в другом использовать — у вас ничего не выйдет.
Переменная будет видна лишь в локальной области видимости — внутри первого match.

Чтобы использовать переменнуюю везде нужно сделать её глобальной (задать на врехнем уровне, до всех match).

В вашем случае, думаю, проще переписать шаблоны так, чтобы ни глобальность, ни передача не требовались.
Либо вычислить и спускать вниз через param при apply-templates.