XSLT 变量打印为属性



有没有办法将元素中的变量打印为属性?

示例 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(属性值模板

相关内容

  • 没有找到相关文章

最新更新