2010-04-23 79 views
4

我遇到的問題是我正在爲Sitecore CMS系統執行的XPath查詢。XPath和特殊字符

此查詢工作正常:

/根/內容/元數據/提示/ *

但當我嘗試這個辦法:

/根/內容/元數據/提示/ * [@ SomeAttribute ='somekey']

我得到一個錯誤,說「在位置22預期的字符串結束」,這是破折號字符被發現的地方。我的印象是,破折號不是XML中的特殊字符......我在這裏做錯了什麼?我需要以某種方式編碼嗎?或者這是XPath解析器中的錯誤?任何建議的解決方法?

回答

12

更改此:

/root/content/Meta-Data/Tips/*[@SomeAttribute='somekey'] 

要這樣:

/root/content/#Meta-Data#/Tips/*[@SomeAttribute='somekey'] 
+0

這很有效。有趣的是,如果我排除[@someattribute]過濾器,它會失敗。你有這個來源?我沒有看到它在W3C Xpath文檔中提到。它同樣在下面的XPath測試器awshepard鏈接上失敗。 – Bryan 2010-04-23 21:44:31

+1

http://sitecoredev.blogspot.com/2006/04/sitecore-xpath.html – 2010-04-23 22:48:30

+0

我明白了......它不是真正的XPath實現。感謝您的鏈接。 – Bryan 2010-04-24 00:17:30

0

按照XML spec在標籤名中的字符,連字符應該是一個有效的字符。我已經用this site做了一些XPath測試,發現它與其他解析器的結果進行比較是有幫助的。

+0

謝謝。兩個原始查詢都可以在這裏使用破折號節點名稱。 – Bryan 2010-04-23 21:49:41

+0

鏈接到這個答案的原始網站不再有效,更新到有效的東西。 – cgp 2013-04-26 14:43:42