XQuery 在 oXygen 中运行时能否构建并保存输出文档?

问题描述 投票:0回答:1

我在 oXygen 中运行 XQuery 3.1 以从输入 XML 创建输出 HTML。

在 eXist-DB 中运行 XQuery 时,可以将其中的 html 框架和 FLWOR 语句声明为变量,如下所示:

declare variable $ThisFileContent:=
<html><head></head><body>{FLWOR statement here}</body></html>;

let $filename := "term-finder-output.html"
let $doc-db-uri := xmldb:store("/db/myOutput", $filename, $ThisFileContent, "html")
return $doc-db-uri

(来源:https://newtfire.org/courses/tutorials/XQueryExercise5-TA.html

...当您运行它时,它实际上会在文件路径中指示的位置从头开始创建文件并将输出保存到其中。这就是我想要做的,除了在没有数据库设置的本地环境中运行 oXygen,只是在常规目录中创建一个文件。但这在 oXygen 中不起作用,因为它无法识别 xmldb:store() 是什么。 (我还尝试了 oxygen:store()、fn:store()、saxon:store() 和普通的 store(),但都不起作用。如果我知道要声明的正确命名空间,也许有人会这样做?)

简而言之,我想在 XQuery 中执行 xsl:result-document 在 XSLT 中执行的操作。

我看到这早在 2007 年就被讨论为 Saxon 的一个可能功能,但我还没有找到任何更新:https://saxonica.plan.io/boards/2/topics/391

(何必呢?是的,我可以只使用 oXygen XQuery 调试器透视图顶部的下拉窗口来保存输出文件。但是在一个项目中有多个 XQuery,很容易混淆什么 XQuery 生成什么输出 HTML ,并将其保存为错误的输出。我想将其写入我的 XQuery,以便它自动执行正确的操作,而不会出现人为错误的可能性。)

xml-parsing xquery saxon oxygenxml
1个回答
0
投票

使用 Saxon 的 XQuery 生成多个输出文件的唯一方法是使用 XQuery 更新 fn:put()、EXPath 文件模块或其他一些扩展函数。从纯功能性和无副作用的查询的角度来看,所有这些方法都是有问题的。

对于单个输出文件,您可以在命令行的 -o 选项中设置目标,或者在 Oxygen 的转换场景中设置目标。

© www.soinside.com 2019 - 2024. All rights reserved.