2

我有这个简单的 XML 文件:

<catalog>
  <product dept="WMN">
    <number>557</number>
    <name language="en">Fleece Pullover</name>
    <colorChoices>navy black</colorChoices>
  </product>
  <product dept="ACC">
    <number>563</number>
    <name language="en">Floppy Sun Hat</name>
  </product>
  <product dept="ACC">
    <number>443</number>
    <name language="en">Deluxe Travel Bag</name>
  </product>
  <product dept="MEN">
    <number>784</number>
    <name language="en">Cotton Dress Shirt</name>
    <colorChoices>white gray</colorChoices>
    <desc>Our<i>favorite</i>shirt!</desc>
  </product>
</catalog>

我正在阅读Priscila Walmsley 的一本名为 XQuery的书,它说要键入命令:

doc("catalog.xml")/*/product/@dept

所以我输入 BaseX

xquery doc("catalog.xml")/*/product/@dept

我收到了这个错误:

Error:
[SENR0001] Attributes cannot be serialized:attribute dept { "WMN" }.

尽管这本书说:

将返回输入文档中的四个 dept 属性。

我究竟做错了什么?

4

2 回答 2

6

BaseX 只是对序列化严格。如果您将属性节点强制转换为字符串,它不会抱怨:

xquery doc("catalog.xml")/*/product/@dept/string()
于 2014-07-09T21:05:30.593 回答
2

XQuery 3.1 序列化规范提供了新的“自适应”序列化模式,它允许属性和命名空间节点的序列化。从 BaseX 的 8.0 版开始,此模式被用作新的默认模式。

于 2015-03-06T20:32:42.233 回答