2010-05-25 23 views
0

我在XML格式的Excel工作表中包含XQuery的FN:更換不表現爲預期

<Cell ss:StyleID="s127"><Data ss:Type="String">Replace Me</Data></Cell> 

我想替換使用不同的字符串@ A01-更換。我正在使用XQuery的替換函數,如下所示:

let $excel := doc("document.xml") 

let $test := "another string" 

return replace($excel, "Replace Me", $test) 

在調用replace之前,變量$ excel在輸出時是有效的XML。但是,當我調用replace函數後輸出$ excel時,所有的XML標籤都被剝離了,$ excel是一個字串,其內容是單元格的值。我想保留那裏的XML標籤。

我期望是

<Cell ss:StyleID="s127"><Data ss:Type="String">another string</Data></Cell> 

不過,我得到

another string 

所有的XML標籤剝離出來。

任何想法?

回答

0

fn:replace是XQuery的一個簡單的字符串操作函數。

該函數使用String而不是node()*類型data-type

let $replaced-str := fn:replace($excel/Data/text(), "Replace Me", $test) 

應返回另一個字符串。

如果要使用XML文檔,則需要使用特定於MarkLogic XmlDatabase的 xdmp:node-replace類型函數。

如果你想要一個簡單的XQuery/Xml/Memory基於node-replace那麼你可以寫一個簡單的遞歸替換方法,它接受一個XPath並重新創建一個新節點。或 結帳this MarkLogic-commons example