是否允许字符串值“yes / no”作为serialize函数的indent参数的值?

时间:2017-02-24 13:02:34

标签: xquery basex xpath-3.1

使用BaseX 8.6以下使用serialize函数并将map作为第二个参数可以正常工作:

serialize(<root><foo><bar>test</bar></foo></root>, map { 'indent' : 'yes'})

并输出缩进代码

<root>
  <foo>
    <bar>test</bar>
  </foo>
</root>

但是,当我尝试使用Saxon 9.7或AltovaXML Spy运行相同的代码时,他们不会编译查询并抱怨map { 'indent' : 'yes'}不是布尔值而是字符串。 https://www.w3.org/TR/xpath-functions-31/#func-serialize定义

indent  xs:boolean?     true() means "yes", false() means "no"

所以我不太确定是否只允许布尔值,并且是为了解释它与yes/no的序列化值有关的含义,或者它是否也意味着使用yes或{{1}是允许的。

1 个答案:

答案 0 :(得分:2)

在BaseX中,map参数在集成到XQFO 3.1规范之前添加。那时候,最明显的选择是在查询序言中使用输出声明的语法(其中只有字符串可用于序列化参数的值)。 - 新的官方语法将在未来的BaseX版本中提供。