xQuery中的元素构造器是什么?

3
我正在阅读一本关于xQuery的书,书中充满了像元素构造器这样的表达式...我的问题是:

什么是元素构造器?"{<expression>}"是否是元素构造器?

2个回答

6

元素构造函数创建元素。在XQuery中,有几种方法可以实现这一点。

花括号{}标记了XQuery中封闭表达式的起始和结束。由于您可以使用文字XML和计算表达式,花括号表示您正在离开静态上下文并进入动态结构。类似于您如何使用<%@ page ... %>用于JSP指令。

使用直接元素构造函数,您可以使用XML语法创建静态XML结构。

例如:

  <book isbn="isbn-0060229357">
    <title>Harold and the Purple Crayon</title>
  </book>

使用计算元素构造器,可以从表达式中生成动态的XML结构,包括元素名称和内容。
例如:
element book {
  attribute { "isbn" } { "isbn-0060229357" },
  <title>Harold and the Purple Crayon</title>
}

您也可以使用表达式来计算元素名称:

element { fn:concat("bo", "ok") } {
  attribute { "isbn" } { "isbn-0060229357" },
  <title>Harold and the Purple Crayon</title>
}

额外的“let $book:= [...] return $book”对我来说看起来像噪音。只使用“[...]”会更有助于强调重点。 - Florent Georges

2
我很惊讶一本书会使用这个术语而没有解释它,但你接下来应该查看W3C XQuery规范。与许多语言规范不同,XQuery规范被设计为非常适合普通用户阅读,只要您能够遵循BNF,并且它们有许多示例。请参考https://www.w3.org/TR/xquery-31/#id-constructors

这本书确实解释了这个术语。 - Ihe Onwuka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接