我想找到匹配id属性的元素的值,我只有ref - 带#的位,锚点。Xpath:从id属性的匹配找到一个元素值到锚点
我找partyId的价值:
< party id="partyA" >
<partyId>THEID</partyId>
,但到那里我只有从以下
<MyData>
< MyReference href="#partyA" />
地带的HREF#号不好看我。
任何提示?
我想找到匹配id属性的元素的值,我只有ref - 带#的位,锚点。Xpath:从id属性的匹配找到一个元素值到锚点
我找partyId的价值:
< party id="partyA" >
<partyId>THEID</partyId>
,但到那里我只有从以下
<MyData>
< MyReference href="#partyA" />
地带的HREF#号不好看我。
任何提示?
由于您尚未提供完整的XML文档,因此我必须使用//
- 我强烈建议您避免这种做法。
假设
$vDataRef
被定义为
//MyData/MyReference/@href
及其字符串值是"#partyA"
,然后一个可能的XPath表达式,其选择想要的节点是:
//party[@id=substring($vDataRef,2)]
如果XML文档具有其中的party
的id
属性被定义为ID
类型的DTD,那么它是更方便,更有效的是使用标准的XPath函数id()
:
id(substring($vDataRef,2))
假设你有你的ID作为已经是一个变量(可以说$身份识别码),然后尝试使用:
//party[contains($myId, @id)]
的contains() function将期待看到每个匹配节点partyId attibut是否是在您在传德值上
或者(因为这可能被视为“举步维艰”),你可以尝试:
//party[@id=substring($myId, 2, 1 div 0)]
substring() function应该更精确一点。
可以使用p/2'fn:substring()',你不需要'INF'表达式。 – 2010-09-22 18:31:32
好问题(+1)。看到我的答案有两种可能的解决方案:) – 2010-09-21 13:44:19