我想找到id属性上匹配的元素的值,我只有ref - 带#的位,即锚。
我正在寻找partyId的价值:
< party id="partyA" >
< partyId >THEID< /partyId >
但要到达那里我只有以下
的href < MyData >
< MyReference href="#partyA" />
剥离#符号对我来说不太好。
任何提示?
答案 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应该更准确一点。