2

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

示例 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" />
4

1 回答 1

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

于 2012-06-21T03:18:43.360 回答