如何对文件夹中的所有 XML 文档执行 XQuery
How to execute XQuery on all XML documents in the folder
我需要确保特定节点存在于许多 XML 文件中。每次要查询另一个文档时,我都必须切换上下文。
有什么方法可以在不切换上下文的情况下对目录中的所有文档执行 XQuery?
我可能来晚了一点,但是下面的 XQuery 很可能会做你想做的,它 returns 每个 XML-不包含特定元素的文件的路径:
let $path := "."
for $file in file:list( $path, true(), '*.xml')
let $path := $path || "/" || $file
where not(
exists(fetch:xml($path)/foo/bar[text() = "Text"])
)
return $path
如果您只对特定文件中包含或不包含特定元素的 XML 文件感兴趣,则以下查询可能会有用:
declare variable $path := "/Users/michael/Code/foo";
every $doc in file:list($path, true(), '*.xml') (: returns a sequence of file-names :)
=> for-each(concat($path,"/", ?)) (: returns a sequence of full paths to each file :)
=> for-each(fetch:xml#1) (: returns a sequence of documents :)
satisfies exists(
$doc/*/*[text() = "Text"]
)
希望对您有所帮助 ;-)
我需要确保特定节点存在于许多 XML 文件中。每次要查询另一个文档时,我都必须切换上下文。
有什么方法可以在不切换上下文的情况下对目录中的所有文档执行 XQuery?
我可能来晚了一点,但是下面的 XQuery 很可能会做你想做的,它 returns 每个 XML-不包含特定元素的文件的路径:
let $path := "."
for $file in file:list( $path, true(), '*.xml')
let $path := $path || "/" || $file
where not(
exists(fetch:xml($path)/foo/bar[text() = "Text"])
)
return $path
如果您只对特定文件中包含或不包含特定元素的 XML 文件感兴趣,则以下查询可能会有用:
declare variable $path := "/Users/michael/Code/foo";
every $doc in file:list($path, true(), '*.xml') (: returns a sequence of file-names :)
=> for-each(concat($path,"/", ?)) (: returns a sequence of full paths to each file :)
=> for-each(fetch:xml#1) (: returns a sequence of documents :)
satisfies exists(
$doc/*/*[text() = "Text"]
)
希望对您有所帮助 ;-)