是否有办法将元素中的变量作为属性打印?
示例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>
我想像这样打印isDisabled变量;
<input id="textName" name="name" type="text" {$isDisabled} />
输出;
<input id="textName" name="name" type="text" disabled="disabled" />
答案 0 :(得分:1)
您无需任何变量即可完成此任务。
<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( Attribute Value Templates )