2014-01-18 113 views
0

你好,我有以下XML樣本Xpath的屬性

<?xml version="1.0" encoding="UTF-8"?> 

<Data> 
<x>3</x> 
<Document1 id="123" filename="/test/dev/fileA.txt"/> 
<Document2 id="123" filename="/test/dev/fileB.txt"/> 
<Document3 id="123" filename="/test/dev/fileC.txt"/> 
<Document4 id="123" filename="/test/dev/fileD.txt"/> 
</Data> 

我使用XPath 1.0需要能夠檢索使用x變量特定文件名。

喜歡的東西:

/Data/Document[x]/@filename 

我需要能夠檢索x的值的特定文件名的基礎。可能嗎?如果您需要更多信息,請告訴我。

在此先感謝

回答

1

是的,這是可能的。但爲什麼你想要設計你的輸入XML格式?使用id屬性選擇正確的文檔而不是元素名稱會更好,原因很多。

的原因包括:

  • XPath表達式求快(/Data/Document[@id=/Data/x]/@filename
  • 您可以創建一個XSD架構是

我還質疑你爲什麼會想要把變量<x>在與其他數據相同的文檔中 - 如果您已在輸入文檔中知道所需的「文檔」元素,爲什麼不移除其他數據?

說了這麼多,已經做了你所問的XPath表達式是:

/Data/*[local-name() = concat('Document', /Data/x)]/@filename 
+0

由於它的偉大工程。奇怪的模式的原因是因爲XML來自另一個來源。 x變量只是另一個來源的例子,我必須確定文檔的編號。 – cocoking