问题标签 [exist-db]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
744 浏览

variables - 无法确定为什么在导入的 XQuery 模块中未设置变量 (E: XPDY0002)

我正在尝试在 XQuery 中创建从 TEXTCLASS 到 TEI 的类型切换。这不是一个非常困难的过程,但它很乏味,所以我正在尝试尽可能多地自动化它(从长远来看需要更长的时间并学习更多)。

我正在使用 Oxygen 12 和 Exist 1.4.1。

现在我运行 transform-tei.xq,它使用 gen.xqm 中的函数创建了一个方便的花花公子转换器。在我添加了函数“convert-attr-default”(其目的应该是获取节点的属性并将它们的名称/值转换为小写)之后,transform-tei.xq 正在抛出

“E [localhost] XPDY0002:未设置变量'$attr-name'。[在第 58 行,第 18 列] [在第 58 行,第 18 列]”

我无法确定为什么。我猜我错过了一些非常简单的东西,因为 XQuery 是我尝试自学的第一门语言,虽然 O'Reilly 的书很棒,但它仍然是一种新型的学习方式。

.

谢谢!

0 投票
1 回答
387 浏览

xpath - 意外的字符“!” 错误 xpath

我打算使用 xquery/xpath 环境生成一个 HTML5 页面......下面是我的页面模板功能。

(: Displays the page :) declare function mobunpage:display-page($pageinfo as element()) as element() { <!DOCTYPE HTML > <html> {mobunpage:get-head($pageinfo)} <body> {mobunpage:get-foot($pageinfo)} </body> </html> };

我得到了错误:

“加载模块 mobunpage 时发现错误:从 modules/mobunpage.xqm 加载模块时发现错误:意外字符:'!'”

我在 eXist XML 数据库上运行,当我添加没有 doctype 的页面工作正常并显示解析的变量时出现上述错误。任何人都知道如何解决此类错误。转义并不能解决问题并尝试了文档中的几个功能(http://www.w3.org/TR/xpath-functions/),但到目前为止没有运气。肯定会感谢一些帮助。谢谢!

0 投票
1 回答
184 浏览

random - 无论如何,当结果将是一个小子集时,如何懒惰地评估 XQuery 顺序?

假设您在基于 XQuery 的 XML 数据库中有大量记录:

我所说的“大量”是指一百万或更多。

您希望使用 XQuery 从列表中随机检索一项:

当记录数量增加时,评估会花费大量时间来运行,因为它似乎从数据库中加载所有内容并在内存中重新排序。我认为这可能是O(n log 2n)。令人叹息的缓慢。

有没有更懒惰,更好的方法来做到这一点?

有“计算项目数量,然后随机选择一个从零到计数的数字”的方法,我宁愿避免这种方法。

理想情况下,如果有某种功能,数据库可以做到这一点:

我猜这将是 FLOLWR。但它不在 XQuery 规范中,尽管它在 SQL(或者实际上是 SPARQL 或许多其他查询语言)中可能是很常见的事情。

有没有办法得到这个?添加 where 子句就可以了,但是 where 子句在 order 子句之前被评估,这并没有真正的帮助。

有什么建议么?(发送 XQueries 的应用程序是用 Java 编写的,而 XML 数据库是 eXist,如果这有助于更多的曲线球、现成的想法的话。)

0 投票
1 回答
264 浏览

xquery - 处理和部署 XQuery 存储过程的最佳方式?

是否有将事物部署到存在的工具?如果我有一堆,比如说,模式和 XQuery 存储过程?有没有办法将它们捆绑到 zip 或 tar 文件中并上传或部署到 eXist 中?

或者,以版本控制的方式(比如在 git repo 中)存储这些东西并将它们部署到 eXist 服务器的最佳方法是什么?理想情况下,能够使用脚本语言编写一个简单的脚本会很好,这样您就可以简单地调用“deploy.py”或其他任何东西,它会从存储库中获取所有内容并将其加载到 XML 数据库中。

0 投票
2 回答
2309 浏览

xpath - xpath中的变量

我在eXist上写 xquery 。

通常我使用这种方式来选择xml中的项目:

但现在我想从字符串变量中获取 xpath:

当然是行不通的。我现在发现的唯一方法是使用eval

但我不想使用eval,因为它很慢而且不安全。

我知道有这样的事情:

但我想通过整个路径选择项目,但不仅是节点的名称,而且我也尝试过使用node-xpath()但不知道如何使用它,就像name()

0 投票
1 回答
311 浏览

xml - 如何从 Exist 数据库加载 xml 文件?

我一直在尝试加载我保存在现有数据库中的 xml 文件,以便我可以在网络上查看它,但是没有任何效果,谁能告诉我该怎么做。谢谢

这是我试图从现有数据库中获取的 Xml 文档。

0 投票
1 回答
643 浏览

xml - 向存储在 XML DB 中的 XML 文件添加特殊字符?

我现在正在使用 eXist xml 数据库。通常,我只是在其中存储常规 xml 文件。我发现如果我尝试将一些特殊的实体如“lambda”放入 xml 文件中,我总是会得到以下错误:

我尝试了所有可能的方法在 eXist db 的各种配置文件中添加实体定义,但仍然没有效果。然而,",&,< 正在工作。

想知道是否有任何机构有类似的向 xml 文件添加更多特殊字符的经验?谢谢。

0 投票
1 回答
260 浏览

xml - XSLT - 呈现 HTML 而不是显示标签

我已经浏览了一些讨论 XSLT 中的输出转义的线程,但似乎没有一个可以解决所遇到的问题。我有一个富文本编辑器(RTE),它生成带有标签编码的内容,例如

在容器(例如<div>标签)上渲染浏览器上的内容时,我使用的是 xslt 复制方法,但这似乎只是按字面意思显示内容,而不是像我想要<span>data data</span>的那样渲染标签。data data我在使用value-of时尝试了disable-output-escaping=yes ,但仍然没有 bueno :(。我真的很感谢在这个搜索过网络的帮助中提供的任何帮助,但到目前为止似乎没有什么对我有用。谢谢

SETUP- eXist XML DB 1.5 trunk & XSLT version 2

0 投票
3 回答
13605 浏览

xquery - XQuery 中的 element() 与 node()

有人能告诉我XQuerynode()和类型之间的确切区别吗?element()文档说明这element()是一个元素节点,node()而是任何节点,所以如果我理解正确,它element()node().

问题是我有一个这样的 XQuery 函数:

现在我想用另一个函数获得的参数调用函数,比如说functionX(我无法控制):

问题是,functionX返回一个node()所以它不会让我$parameter直接通过。我尝试将函数的类型更改为采用 anode()而不是 a element(),但是我似乎无法从中读取任何数据。$value只是空的。

是否有某种方法可以将节点转换为元素,或者我是否应该遗漏一些东西?

编辑:据我所知,问题出在我尝试使用$arg1/subelement. 显然你可以这样做 if $arg1is anelement()但不是如果它是 a node()

更新:我已经测试了下面 Dimitre 提供的示例,它确实可以正常工作,无论是使用 Saxon 还是使用 eXist DB(这是我用作 XQuery 引擎的)。问题实际上发生在request:get-data()eXist DB 中的函数上。此函数在通过 REST 使用 eXist 时获取 POST 请求提供的数据,将其解析为 XML 并将其作为node(). 但是由于某种原因,当我将数据传递给另一个函数时,XQuery 并不承认它是有效的element(),即使它是。如果我手动提取它(即复制输出并将其粘贴到我的源代码),将其分配给一个变量并将其传递给我的函数一切顺利。但是如果我直接通过它,它会给我一个运行时错误(并且确实没有通过instance of测试)。

我需要能够使其忽略此类型检查或将数据“类型转换”到element().

0 投票
1 回答
1777 浏览

java - 通过 Java 访问 eXist db

我需要开发一个用于评估 xquery 的在线评估系统。我正在尝试使用 eXist db xml 数据库。我正在用 Java、struts2 和 apache tomcat 服务器开发 Web 应用程序。如何使用 java 上传 xml 模式文档和 xml 实例文档?此外,我应该能够在 xml 文档上触发 xquery 并获得结果。