2010-09-21 73 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

相關問題