在XPath 1.0中,有没有办法验证当前节点值是否具有相同的兄弟值?
例如,Name
中的Item3
会返回true
而Name
中的Item2
会返回false
<Item1>
<Name>Name1</Name>
<Id>123</Id>
</Item1>
<Item2>
<Name>Name2</Name>
<Id>124</Id>
</Item2>
<Item3>
<Name>Name1</Name>
<Id>125</Id>
</Item3>
答案 0 :(得分:2)
假设当前上下文元素是ItemX
元素之一,您可以使用以下内容:
self::*[Name=following-sibling::*/Name or Name=preceding-sibling::*/Name]
如果存在具有相同ItemX
值的同级Name
元素,则xpath上方的返回当前上下文元素,否则返回任何内容。
答案 1 :(得分:0)
<xsl:template match="Name">
<!-- make the evaluation -->
<xsl:variable name="curname" select="text()"/>
<xsl:variable name="multiple" select="count(//Name[text()=$curname]) > 1"/>
<!-- show result -->
<xsl:value-of select="../Name[1]"/>
<xsl:if test="$multiple"> MULTIPLE</xsl:if>
<xsl:if test="not($multiple)"> SINGLE</xsl:if>
</xsl:template>