Xpath:从id属性到id锚点的匹配中查找元素值

时间:2010-09-21 10:37:46

标签: xpath

我想找到id属性上匹配的元素的值,我只有ref - 带#的位,即锚。

我正在寻找partyId的价值:

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

但要到达那里我只有以下

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

剥离#符号对我来说不太好。

任何提示?

2 个答案:

答案 0 :(得分:4)

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

假设

$vDataRef

定义为

//MyData/MyReference/@href

并且其字符串值为"#partyA"然后选择所需节点的一个可能的XPath表达式是

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

如果XML文档具有DTD,id属性party被定义为ID类型,则使用标准XPath更方便有效功能 id()

id(substring($vDataRef,2))

答案 1 :(得分:1)

假设您已将您的ID作为变量(例如$myId),请尝试使用:

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

contains() function会在每个匹配节点上查看partyId属性是否在您传入的值中。

或者(因为这可以被认为是'绳索'),你可以尝试:

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

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