我有一個從a.xml轉換爲b.xml的xquery文件。下面是我的x查詢的一個例子:在xquery中添加默認名稱空間
<TestMessage>
<Header>
<MessageType>
{for $x in doc("input.xml")//Test/NewHeader return
if ($x/MessageType/text() = "FIRST") then "FirstMessageType"
else "SecondMessageType"
}
</MessageType>
</Header>
</TestMessage>
這工作正常,並適當填充我的MessageType。但是我需要添加一個名稱空間作爲TestMessage元素的一個屬性。所以,當我這樣做時,
<TestMessage xmlns="http://www.testsource.com/TestMessage">
<Header>
<MessageType>
{for $x in doc("input.xml")//Test/NewHeader return
if ($x/MessageType/text() = "FIRST") then "FirstMessageType"
else "SecondMessageType"
}
</MessageType>
</Header>
</TestMessage>
xquery結果有一個空的MessageType元素。除了在x-query文檔中添加命名空間之外,我沒有改變任何東西。但我不明白爲什麼這給了我一個錯誤的結果XML。
任何幫助將不勝感激。
非常感謝!
但我的生成的XML的根元素應該看起來就像這樣:<的TestMessage的xmlns =「http://www.testsource.com/TestMessage」> – ridermule 2013-03-12 15:19:46
除了演示文稿之外,使用默認命名空間或命名空間前綴生成的XML沒有區別。任何應用程序都會將它們視爲相同。但是,請參閱更新後的解決方案。 – wst 2013-03-12 15:30:07
@wst是正確的。這在XQuery中被稱爲「名稱空間繼承」。有關詳情,請參閱http://docs.marklogic.com/guide/xquery/namespaces#id_49014。 – joewiz 2013-03-15 16:54:36