Text 如何从XQuery中加载文本文件?

Text 如何从XQuery中加载文本文件?,text,xquery,saxon,Text,Xquery,Saxon,是否有XQuery命令来加载文本文件 我可以通过以下操作加载xml文档: declare variable $text := doc("test.xml"); 但它似乎只有在test.xml是格式良好的xml文档时才起作用。我想要的是将一个普通test.txt文件加载到一个字符串变量中。像这样的东西 declare variable $str as xs:string := fn:loadfile("test.txt"); 能做到吗 我正在使用Saxon引擎,但在Saxon文档中找不到答案。

是否有XQuery命令来加载文本文件

我可以通过以下操作加载xml文档:

declare variable $text := doc("test.xml");
但它似乎只有在test.xml是格式良好的xml文档时才起作用。我想要的是将一个普通test.txt文件加载到一个字符串变量中。像这样的东西

declare variable $str as xs:string := fn:loadfile("test.txt");
能做到吗


我正在使用Saxon引擎,但在Saxon文档中找不到答案。

在EXPath上对此进行了标准化工作。XQuery文件模块的规范已经存在,该模块能够执行您描述的操作:


然而,我不知道有多少实现。不幸的是,Saxon似乎没有实现它(或者,请告诉我)。zorba附带了一个示例实现(请参阅)。如果您想知道如何开始使用zorba,可以查看本教程:。

在EXPath上有一个标准化工作。XQuery文件模块的规范已经存在,该模块能够执行您描述的操作:


然而,我不知道有多少实现。不幸的是,Saxon似乎没有实现它(或者,请告诉我)。zorba附带了一个示例实现(请参阅)。如果您想知道如何开始使用zorba,可以查看本教程:。

确实,您可以在zorba中找到一个文件函数的实现:

确实,您可以在zorba中找到一个文件函数的实现:

XQuery 3.0具有函数
fn:unparsed text
(最初在XSLT中定义),这正是你想要的。尽管XQuery 3.0仍在开发中,但尽管XQuery 3.0处理器不多,但许多XQuery处理器已经支持此功能(包括Saxon)。

XQuery 3.0具有函数
fn:unparsed text
(最初在XSLT中定义),它正是您想要的。尽管XQuery 3.0仍在开发中,但尽管XQuery 3.0处理器不多,但许多XQuery处理器已经支持此功能(包括Saxon)。

XQuery默认情况下(表示fn:namespace)不支持此功能;我没有任何文件访问方法

MarkLogic: xdmp:filesystem-file() xdmp:filesystem-directory()

佐尔巴: 用户457056已经提到

存在 默认情况下,XQuery(表示fn:名称空间)不存在;我没有任何文件访问方法

MarkLogic: xdmp:filesystem-file() xdmp:filesystem-directory()

佐尔巴: 用户457056已经提到

存在

自9.2版以来,Saxon具有fn:collection的扩展,可用于读取未分析的文本。以下是一个例子:

    collection('file:///c:/TEMP?select=text.txt;unparsed=yes')

这在9.2的“”下进行了描述。显然,函数库文档中没有提到它。但是它工作得很好,我一直在使用它。

Saxon自9.2版起就有了fn:collection的扩展,可以用来读取未分析的文本。以下是一个例子:

    collection('file:///c:/TEMP?select=text.txt;unparsed=yes')

这在9.2的“”下进行了描述。显然,函数库文档中没有提到它。然而,它工作得很好,我一直在使用它。

我认为使用标准函数的答案是否定的。
unparsed-text()
函数是一个仅使用XSLT的函数。我认为使用标准函数的答案是否定的。
unparsed-text()
函数是一个仅用于XSLT的函数。谢谢。这听起来正是我所需要的,但当我尝试使用它时,我得到一个错误“系统函数未解析文本#1不适用于此主机语言”。另外,针对fn:unparsed-text()的Saxon文档中有一条免责声明:“当前的Saxon实现不稳定:如果使用同一参数调用函数两次,它将读取外部文件两次,如果它发生更改,可能会返回不同的结果。”您应该说XQuery 3.0是一个工作草案:即使在几个月前,它也有一个不同的版本号……谢谢。这听起来正是我所需要的,但当我尝试使用它时,我得到一个错误“系统函数未解析文本#1不适用于此主机语言”。另外,针对fn:unparsed-text()的Saxon文档中有一条免责声明:“当前的Saxon实现不稳定:如果使用同一参数调用函数两次,它将读取外部文件两次,如果它发生更改,可能会返回不同的结果。”你应该说XQuery3.0是一个工作草案:甚至在几个月前,它还有一个不同的版本号……也许我应该研究一下Zorba。谢谢你的链接。也许我应该调查一下佐尔巴。谢谢你的链接。