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。 –