1
我想寫一個函數,它需要兩個xml文件和一個xpath的位置,並返回true,如果兩個xpaths具有相同的值。我正在使用deep-equal
函數。當我通過deep-function
函數中的值時,我正在得到正確的答案。但是,當我試圖在本地函數中獲取值時,我總是得到一個true
。我可能會錯誤地使用參數。Xquery函數來比較兩個不同的xmls的兩個xpaths
請幫我在這裏做錯了嗎?
這給正確的值:
deep-equal(doc("C:/xml/1/abc.xml")/root/messageHeader/system, doc("C:/xml/2/abc.xml")/root/messageHeader/system)
這給true
總是:
declare function local:findDiff($first as xs:string, $second as xs:string, $xpath as node()*){
let $doc1 := (doc($first))/$xpath
let $doc2 := (doc($second))/$xpath
return deep-equal($doc1, $doc2)};
<findDiff>{local:findDiff("C:/xml/1/abc.xml", "C:/xml/2/abc.xml", root/messageHeader/system)}</findDiff>
請你指點一下這些實現嗎?我找不到任何東西。 – tanvi
@tanvi,參見http://saxonica.com/html/documentation9.6/functions/saxon/evaluate.html Saxon 9.6 PE或EE。 –
@tanvi,或者查看BaseX的http://docs.basex.org/wiki/XQuery_Module#xquery:eval。 –