XSLT 属性转换的双重打击

XSLT 属性转换的双重打击

我有一个 XML 文档,正在将其转换为 HTML。我想省略很多不必要的属性,但有两个我想捕获,如下所示:

来源

<element att1="yes" att2="no" att3="yes">Text</element>

所需输出

<span class="att1">Text</span>

因此,如果att1att2为“是”,则使用该属性名称创建一个类属性;省略所有其他属性,并将元素转换为跨度。

在源文档中,att1att2应该是互斥的;如果其中一个回答“是”,另一个可能不存在,也可能都不存在。

答案1

这是一种方法(XSLT 2.0+):

<xsl:template match="element[(@att1, @att2)='yes']">
  <span class="{name((@att1, @att2)[.='yes'][1])}">
    <xsl:value-of select="."/>
  </span>
</xsl:template>

<xsl:template match="element">
  <!-- you haven't said what output you want if neither attribute is "yes" -->
</xsl:template>

相关内容