在特定条件

时间:2016-06-27 09:50:08

标签: xml xslt xpath xslt-2.0

我正在尝试在某个条件下向<xsl:element>添加一个类,我有一个名为def的属性的xml标记,我需要在该属性存在时添加一个类。

这是xslt元素:

<xsl:element name="{if (@id='123') then 'th' else 'td'} >
<xsl:apply-template />
</xsl:element>

我尝试了什么:

<xsl:attribute name="class">def-
        <xsl:if test="fn:exists(@def)">
        <xsl:value-of select="@def"/>
        </xsl:if>
    </xsl:attribute>
    <xsl:element name="{if (@role='rowhead' ) then 'th' else 'td'}" use-attribute-sets="{$class}" >
<xsl:apply-templates />
    </xsl:element>

我想要一个匹配的表达式:

<th scope="row" class="def-{if (fn:exists(@def)) then @def else ''}">
<td scope="row" class="def-{if (fn:exists(@def)) then @def else ''}">

使用:

<xsl:element>

1 个答案:

答案 0 :(得分:1)

要根据特定条件动态创建属性,请将代码重新设置为此...

<xsl:element name="{if (@role='rowhead' ) then 'th' else 'td'}">   
    <xsl:if test="fn:exists(@def)">
       <xsl:attribute name="class" select="concat('def-', @def)"/>
    </xsl:if>
    <xsl:apply-templates />
</xsl:element>

如果在xsl:attribute之后立即使用xsl:element,则该属性会附加到该元素上。请注意,必须在任何子元素之前创建属性。