使用属性查找使用xpath的节点位置

问题描述:

如何根据某个属性值获取节点的位置?以下职位显示了如何元素做到这一点:如果我们在上面提到的更改信息的示例XML使用属性查找使用xpath的节点位置

Find position of a node using xpath

所以:

<a> 
    <b val="zyx" /> 
    <b val="wvu" /> 
    <b val="tsr" /> 
    <b val="qpo" /> 
</a> 

我将如何得到的位置/ b [@val ='tsr']?

应该是同出一辙:

count(a/b[@val='tsr']/preceding-sibling::*)+1 

用法示例...

XSLT 1.0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:template match="/"> 
    <xsl:value-of select="count(a/b[@val='tsr']/preceding-sibling::*)+1"/> 
    </xsl:template> 

</xsl:stylesheet> 

输出:

3 
+0

你测试你的解决方案?当我逐字复制你的解决方案并运行它对我的测试文件时,我得到的输出为1. 我尝试了类似于发布此问题之前发布的内容,但仍得到1而不是3 – rokeefe1 2012-03-09 17:05:47

+0

@ user1252899 - 是的,我做了。我测试了Xalan,Saxon 6.5.5,Saxon 9.3(HE,PE和EE)和AltovaXML,并且都给了我“3”的结果。您的测试文件是否与问题中发布的XML完全相同?你在用什么处理器? – 2012-03-09 18:05:53

+0

问题出在我的XML文件中。谢谢你的帮助! – rokeefe1 2012-03-19 14:27:55