XQuery 添加元素和属性学习笔记

1. 添加元素

在 XQuery 中,我们可以使用 element 关键字来添加元素。语法如下:

Copy Code
element elementName { content }

其中,elementName 为要添加元素的名称,content 为元素的内容。

例如,我们要在一个名为 students 的 XML 文档中添加一个名为 student 的元素,其包含一个名为 name 的子元素和一个名为 age 的属性,可以使用以下代码:

xqueryCopy Code
declare namespace ns = "http://example.com/students"; let $doc := doc("students.xml")/ns:students return insert node element ns:student { element ns:name {"John"}, attribute age {"18"} } into $doc

上述代码中,我们首先通过 doc 函数获取了名为 students.xml 的 XML 文档,并将其赋值给变量 $doc。然后使用 insert node 关键字,在 $doc 中插入了一个名为 student 的元素。该元素包含一个名为 name 的子元素,其值为 John,以及一个名为 age 的属性,其值为 18

2. 更新元素属性

在 XQuery 中,我们可以使用 attribute 关键字来更新元素的属性。语法如下:

Copy Code
attribute attributeName { newValue }

其中,attributeName 为要更新的属性名称,newValue 为新的属性值。

例如,我们要将上述示例中添加的 student 元素的 age 属性值改为 19,可以使用以下代码:

xqueryCopy Code
declare namespace ns = "http://example.com/students"; let $doc := doc("students.xml")/ns:students return replace value of node $doc/ns:student/@age with "19"

上述代码中,我们首先通过 doc 函数获取了名为 students.xml 的 XML 文档,并将其赋值给变量 $doc。然后使用 replace value of node 关键字,将 $doc 中名为 student 的元素的 age 属性值替换为 19

3. 删除元素属性

在 XQuery 中,我们可以使用 delete 关键字来删除元素的属性。语法如下:

Copy Code
delete node attributeName

其中,attributeName 为要删除的属性名称。

例如,我们要将上述示例中添加的 student 元素的 age 属性删除,可以使用以下代码:

xqueryCopy Code
declare namespace ns = "http://example.com/students"; let $doc := doc("students.xml")/ns:students return delete node $doc/ns:student/@age

上述代码中,我们首先通过 doc 函数获取了名为 students.xml 的 XML 文档,并将其赋值给变量 $doc。然后使用 delete node 关键字,将 $doc 中名为 student 的元素的 age 属性删除。