2010-09-21 75 views
5

我想找到匹配id属性的元素的值,我只有ref - 带#的位,锚点。Xpath:从id属性的匹配找到一个元素值到锚点

我找partyId的价值:

< party id="partyA" > 
    <partyId>THEID</partyId> 

,但到那里我只有从以下

<MyData> 
    < MyReference href="#partyA" /> 

地带的HREF#号不好看我。

任何提示?

+1

好问题(+1)。看到我的答案有两种可能的解决方案:) – 2010-09-21 13:44:19

回答

4

由于您尚未提供完整的XML文档,因此我必须使用// - 我强烈建议您避免这种做法。

假设

$vDataRef

被定义为

//MyData/MyReference/@href

及其字符串值是"#partyA"然后一个可能的XPath表达式,其选择想要的节点是

//party[@id=substring($vDataRef,2)] 

如果XML文档具有其中的partyid属性被定义为ID类型的DTD,那么它是更方便,更有效的是使用标准的XPath函数id()

id(substring($vDataRef,2)) 
0

假设你有你的ID作为已经是一个变量(可以说$身份识别码),然后尝试使用:

//party[contains($myId, @id)] 

contains() function将期待看到每个匹配节点partyId attibut是否是在您在传德值上

或者(因为这可能被视为“举步维艰”),你可以尝试:

//party[@id=substring($myId, 2, 1 div 0)] 

substring() function应该更精确一点。

+0

可以使用p/2'fn:substring()',你不需要'INF'表达式。 – 2010-09-22 18:31:32

相关问题