我正在寻找获取所有同级节点的所有唯一(无重复)嵌套节点的最佳方法。我感兴趣的节点是"气体"。 同级节点是"内容"。 我的简化 XML:
<Collection>
<Content>
<Html>
<root>
<Gases>NO2</Gases>
<Gases>CH4</Gases>
<Gases>O2</Gases>
</root>
</Html>
</Content>
<Content>
<Html>
<root>
<Gases>NO2</Gases>
<Gases>CH4</Gases>
<Gases>CO</Gases>
<Gases>LEL</Gases>
<Gases>NH3</Gases>
</root>
</Html>
</Content>
</Collection>
期望结果: NO2 CH4 O2 CO LEL NH3
我是 XSLT 的新手,所以任何帮助将不胜感激。我一直在尝试使用XPATH,类似于这里,但没有运气。
此 XSLT 样式表将生成所需的输出。请注意,它依赖于单个Content
元素中没有重复的Gases
元素。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<!-- Match Gases elements whose value does not appear in a Gases element inside a previous
Content element. -->
<xsl:template match="//Gases[not(. = ancestor::Content/preceding-sibling::Content//Gases)]">
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
</xsl:template>
<!-- Need to override the built-in template for text nodes, otherwise they will still get
printed out. -->
<xsl:template match="text()"/>
</xsl:stylesheet>