首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >其中一个map元素会导致SEPM0017错误

其中一个map元素会导致SEPM0017错误
EN

Stack Overflow用户
提问于 2020-04-02 16:34:29
回答 1查看 42关注 0票数 0

我试图从出版商O‘’Reilly的"XQuery:跨XMLData2Edition多样性搜索“一书中运行一个不变的代码示例。

代码语言:javascript
复制
(: XQuery by Priscilla Walmsley (c) 2016 Priscilla Walmsley:)
(:Example 13-4 Serialization parameters in a map :)
xquery version "3.1";
declare namespace prod = "http://datypic.com/prod"; 
let $map := map {
   "method": "xml",
   "version": "1.0",
   "indent": true(),
   "cdata-section-elements": (xs:QName("prod:desc"),xs:QName("prod:name")),
   "use-character-maps": map {
                           "«":"<%",
                           "»":">%"
                         }
}
let $element := <prod:name>Fleece Pullover</prod:name>
return serialize($element,$map)

我正在使用BaseX 9.3.2来完成这个任务。但是当我试图运行代码时,我会发现错误:

代码语言:javascript
复制
Stopped at C:/Users/Arek/AppData/Local/Temp/example1304.xqy, 16/17:
[SEPM0017] item() expected, xs:QName+ found: (Q{http://datypic.com/prod}desc, Q{http://datypic.com/prod}name).

当我删除9行与cdata-节元素元素,代码运行。无论是XQuery实现问题还是代码问题?

EN

回答 1

Stack Overflow用户

发布于 2020-04-02 16:50:11

我认为3.1函数规范https://www.w3.org/TR/xpath-functions/#func-serialize清楚地将cdata-section-elements映射值定义为xs:QName*,即作为xs:QName的序列,因此本书中的示例是正确的。

http://docs.basex.org/wiki/Serialization给出了一个示例"cdata-section-elements": "div"和文档“要作为CDATA输出的元素列表,由空格分隔”,因此它们可能有一个已知的区别,这可能是因为允许的第一种方式是在序列化参数节点/文档的单个属性值中列出QNames的cdata-section-elements属性。

在过去,当我遇到这样的差异时,我认为他们说规范和/或BaseX的早期版本允许采用当前支持的方式,并且实现规范会破坏向后兼容性。

我想你可以在BaseX邮件列表上询问,甚至在GitHub上提出一个问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60996529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档