![XSLT 属性转换的双重打击](https://linux22.com/image/153317/XSLT%20%E5%B1%9E%E6%80%A7%E8%BD%AC%E6%8D%A2%E7%9A%84%E5%8F%8C%E9%87%8D%E6%89%93%E5%87%BB.png)
我有一个 XML 文档,正在将其转换为 HTML。我想省略很多不必要的属性,但有两个我想捕获,如下所示:
来源
<element att1="yes" att2="no" att3="yes">Text</element>
所需输出
<span class="att1">Text</span>
因此,如果att1
或att2
为“是”,则使用该属性名称创建一个类属性;省略所有其他属性,并将元素转换为跨度。
在源文档中,att1
和att2
应该是互斥的;如果其中一个回答“是”,另一个可能不存在,也可能都不存在。
答案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>