有没有办法将元素中的变量打印为属性?
示例 XML:
<list>
<name>John Doe</name>
<name>Paul Niel</name>
<name>Luke Dee</name>
</list>
这是我的示例 xslt;
<xsl:variable name="isDisabled">
<xsl:if test="name='John Doe'">
<xsl:attribute name="disabled">disabled</xsl:attribute>
</xsl:if>
</xsl:variable>
我想像这样打印被禁用的变量;
<input id="textName" name="name" type="text" {$isDisabled} />
输出;
<input id="textName" name="name" type="text" disabled="disabled" />
您不需要任何变量即可完成此任务。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="name[. = 'John Doe']">
<input id="textName" name="name" type="text" disabled="disabled" />
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
在提供的 XML 文档上应用此转换时:
<list>
<name>John Doe</name>
<name>Paul Niel</name>
<name>Luke Dee</name>
</list>
生成所需的正确结果:
<input id="textName" name="name" type="text" disabled="disabled"/>
解释:
正确使用模板和模板模式匹配。
注意:如果您遇到确实需要使用变量来创建属性的情况(不是这种情况),则可以通过以下方式完成此操作:
<input id="textName" name="name" type="text" disabled="{$isDisabled}"/>
解释:
正确使用 AVT(属性值模板)