XQuery 的 OXygen 实现:为什么路径表达式 Return 不能直接属性值?
OXygen Implementation of XQuery: Why Can't Path Expressions Return Attribute Values Directly?
以前的 Stack 问题表明,在 XQuery 的某些实现中,return直接从路径表达式(例如 `$doc//@name')获取属性无法显示结果并产生运行时错误:
Can't select XML attributes with Oxygen XQuery implementation; Oxygen XPath emits result
XQuery unable to select attribute
虽然属性值 可以 return 使用 string()
或 data()
函数编辑,但我仍然不明白为什么会这样限制是完全存在的。前者 link 表明它确实是 OXygen IDE 本身,独立于 XQuery 处理器。但是,当我尝试直接 return 属性时,我收到以下运行时错误消息:
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 作为我的数据源和处理器。
我不知道所涉及的特定产品的具体情况,但基本情况是 XQuery 可以 return 一个属性或属性序列,但是标准 XQuery 1.0 序列化方法无法显示该值。例如,像 //@id 这样的查询将 select 一系列全部命名为 "id" 的属性,并且无法将其序列化为 XML。 "adaptive" 序列化方法是在 XQuery 3.1 中引入的,主要是为了解决这个问题:它旨在以人类可读的形式显示结果,而不是输出格式正确的 XML.
以前的 Stack 问题表明,在 XQuery 的某些实现中,return直接从路径表达式(例如 `$doc//@name')获取属性无法显示结果并产生运行时错误:
Can't select XML attributes with Oxygen XQuery implementation; Oxygen XPath emits result
XQuery unable to select attribute
虽然属性值 可以 return 使用 string()
或 data()
函数编辑,但我仍然不明白为什么会这样限制是完全存在的。前者 link 表明它确实是 OXygen IDE 本身,独立于 XQuery 处理器。但是,当我尝试直接 return 属性时,我收到以下运行时错误消息:
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 作为我的数据源和处理器。
我不知道所涉及的特定产品的具体情况,但基本情况是 XQuery 可以 return 一个属性或属性序列,但是标准 XQuery 1.0 序列化方法无法显示该值。例如,像 //@id 这样的查询将 select 一系列全部命名为 "id" 的属性,并且无法将其序列化为 XML。 "adaptive" 序列化方法是在 XQuery 3.1 中引入的,主要是为了解决这个问题:它旨在以人类可读的形式显示结果,而不是输出格式正确的 XML.