我正在尝试在某个条件下向<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>
答案 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
,则该属性会附加到该元素上。请注意,必须在任何子元素之前创建属性。