0

以前的 Stack 问题表明,在 XQuery 的某些实现中,直接从路径表达式(例如 `$doc//@name')返回属性无法显示结果并产生运行时错误:

无法使用 Oxygen XQuery 实现选择 XML 属性;氧气 XPath 发出结果

XQuery 无法选择属性

虽然可以使用string()or函数返回属性值data(),但我仍然对为什么存在这种限制感到困惑。前一个链接表明它确实是 OXygen IDE 本身,独立于 XQuery 处理器。但是,当我尝试直接返回属性时,我收到以下运行时错误消息:

error: Failed to invoke method retrieveFirstChunk in class  org.exist.xmlrpc.RpcConnection: org.xml.sax.SAXException: 
Error SENR0001: attribute 'notBefore' has no parent element

由于此错误消息来自处理器,处理器的类型会起作用吗?我使用 eXist-db 作为我的数据源和处理器。

4

1 回答 1

1

我不知道所涉及的特定产品的具体情况,但基本情况是 XQuery可以返回一个属性或属性序列,但标准的 XQuery 1.0 序列化方法无法显示该值。例如,像 //@id 这样的查询将选择一个全部命名为“id”的属性序列,并且无法将其序列化为 XML。XQuery 3.1 中引入了“自适应”序列化方法,主要是为了解决这个问题:它旨在以人类可读的形式显示结果,而不是输出格式良好的 XML。

于 2017-06-30T14:40:05.673 回答