2013-12-10 51 views
0

我有一套配置文件,我已經設置在構建上進行轉換。在某些情況下,我只需要替換包含某些文件名的配置條目。我所遇到的問題是獲取正在運行的查詢。使用XPath包含函數來轉換配置條目

下面是配置在自定義配置節

<filesettings file="application.remote.config" 
       filename="remote file config"  
       dir="C:\Remote\Download"     
       backupdir="C:\Remote\Download\BackUp" 
       xdt:Locator="XPath(//[contains(@file,'remote')])" /> 

基於上述,我想更換,變換目標的呼叫,遠程在文件名中的字filesettings輸入過程中變換條目。這當前給出了錯誤表達式必須評估爲一個節點集。

我在做什麼錯?

回答

0

只有在節點步驟之後才允許使用謂詞。您的XPath表達式

//[contains(@file,'remote')] 

不包含任何內容。例如,使用通配符匹配*

//*[contains(@file,'remote')] 

或含有@file屬性(如果它總是相同)節點名稱替換它。

+0

你能推薦一本關於xpath的優秀書嗎?我真的很喜歡在沒有烹飪的情況下學會這一切 – Kobojunkie

+0

對不起,我從來沒有看過一個 - 在大學講座中有一個很好的介紹。基本的XPath不是非常複雜,當需要解決某些限制時,它變得更有趣。我被告知Michael Kay在XSLT/XPath上的書籍(順便說一句,他正在爲這些主題的stackoverflow寫一些非常深刻的答案),而Priscilla Walmsley的XQuery是很好的,但我甚至不確定他們的「重新定位。 –