0

我正在寻找获取所有兄弟节点的所有唯一(无重复)嵌套节点的最佳方法。我感兴趣的节点是“气体”。兄弟节点是“内容”。我的简化 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,类似于这里,但没有运气。

4

1 回答 1

2

这个 XSLT 样式表将产生所需的输出。请注意,它依赖于单个Gases元素内没有重复元素。 Content

<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>
于 2013-10-29T21:41:50.160 回答