我如何通过Xpath获取不同的子节点名称,该名称匹配多次?
如果这些是xml:
> <el>
> <name1></name1>
> <name1></name1>
> <name1></name1>
> <name2></name2>
> <name1></name1>
> <name2></name2>
> <name2></name2>
> <name3></name3> </el>
结果:
NAME1 NAME2
不是名字3
答案 0 :(得分:4)
通过检查兄弟轴进行分组显示二次(慢)行为,当在xslt 1中分组时,使用密钥几乎总是一个好主意(称为Muenchian分组)
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="el">
<xsl:for-each select="*[generate-id()=generate-id(key('n',name())[2])]">
<xsl:value-of select="name()"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
<xsl:key name="n" match="*" use="name()"/>
</xsl:stylesheet>
答案 1 :(得分:0)
./*[preceding-sibling::node()/name(.) != name(.)]
[following-sibling::node()/name(.) = name(.)]/name(.)
这会找到所有没有同名兄弟的子节点(不同的名字),但确实有一个同名的兄弟节点(多个)