XPATH 1.0 - 如何获取一种父元素的所有childen元素

时间:2017-07-19 14:23:53

标签: xml xpath

我有这种类型的XML文件:

<Product>
  <item1>...</item1>
  <item2>...</item2>
  <item3>...</item3>
</Product>
<Product>
  <item1>...</item1>
  <item2>...</item2>
  <item4>...</item4>
  <item5>...</item5>
</Product>
<Product>
  <item1>...</item1>
  <item6>...</item6>
</Product>

我想获取父类型&#34; Product&#34;的所有唯一子元素的列表,如下所示:

<item1>...</item1>
<item2>...</item2>
<item3>...</item3>
<item4>...</item4>
<item5>...</item5>
<item6>...</item6>

我不在乎这些&#34;项目&#34;元素,我只想列出所有类型的&#34; item&#34;所有&#34;产品&#34;我的文件的元素,如果可能的话使用XPATH 1.0。我想要显示每个&#34;项目&#34;元素只有一次,即使它们存在于几个&#34;产品&#34;元件。

我该怎么做?谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

此XSLT-1.0方法匹配Product个元素的所有子元素,并通过检查preceding-axis中是否已发生具有相同name / local-name的节点来过滤它们

<xsl:template match="//Product/*">
  <xsl:variable name="this" select="local-name()" />
  <xsl:if test="count(preceding::*[local-name()=$this]) = 0">
    Unique node: <xsl:value-of select="name()"/>
  </xsl:if>
</xsl:template>

答案 1 :(得分:0)

使用xpath 版本1.0 ,这将返回所有没有重复的元素。

distinct-values(//Product/*/local-name())

使用xpath 版本2.0 ,返回所有没有重复的值。

{{1}}