XQuery的氧气实现:为什么路径表达式不能直接返回属性值?

XQuery的氧气实现:为什么路径表达式不能直接返回属性值?,xquery,exist-db,oxygenxml,Xquery,Exist Db,Oxygenxml,前面的堆栈问题表明,在XQuery的某些实现中,直接从路径表达式返回属性(例如,“$doc/@name”)无法显示结果并产生运行时错误: 虽然可以使用字符串或数据函数返回属性值,但我仍然不明白为什么会存在这种限制。前一个链接表明它确实是氧IDE本身,独立于XQuery处理器。但是,当我尝试直接返回属性时,会收到以下运行时错误消息: error: Failed to invoke method retrieveFirstChunk in class org.exist.xmlrpc.RpcCon

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

虽然可以使用字符串或数据函数返回属性值,但我仍然不明白为什么会存在这种限制。前一个链接表明它确实是氧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作为数据源和处理器。

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

您能提供一个完整的可复制示例吗?您使用的是什么版本的氧气和氧气?请提供以下答案的反馈。Mike是正确的。问题在于XQuery序列化。自适应序列化昨天刚刚在eXist 3.3.0中发布,所以我怀疑它是否支持。同时,您需要使用string@attr遵守W3C XQuery序列化规范。