我有这种类型的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;元件。
我该怎么做?谢谢你的帮助!
答案 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}}