XQuery 添加元素和属性学习笔记
1. 添加元素
在 XQuery 中,我们可以使用 element 关键字来添加元素。语法如下:
Copy Codeelement elementName { content }
其中,elementName 为要添加元素的名称,content 为元素的内容。
例如,我们要在一个名为 students 的 XML 文档中添加一个名为 student 的元素,其包含一个名为 name 的子元素和一个名为 age 的属性,可以使用以下代码:
xqueryCopy Codedeclare 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 Codeattribute attributeName { newValue }
其中,attributeName 为要更新的属性名称,newValue 为新的属性值。
例如,我们要将上述示例中添加的 student 元素的 age 属性值改为 19,可以使用以下代码:
xqueryCopy Codedeclare 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 Codedelete node attributeName
其中,attributeName 为要删除的属性名称。
例如,我们要将上述示例中添加的 student 元素的 age 属性删除,可以使用以下代码:
xqueryCopy Codedeclare 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 属性删除。