XQuery:创建一个具有给定名称的新元素?

Nic*_*ner 13 xml xquery

我有以下数据:

    <td>USERID</td>

    <td>NAME</td>

    <td>RATING</td>
Run Code Online (Sandbox Code Playgroud)

我想把它变成:

<userid></userid>
<name></name>
<rating></rating>
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Mad*_*sen 22

使用计算元素构造函数生成具有每个元素lower-casetext节点值的td元素.

计算元素构造 创建了一个元素节点,从而允许计算两者的名称和节点的内容.

为了示例,假设您的XML位于名为foo.xml的文件中,您可以执行以下操作:

<doc>
{
for $name in doc('foo.xml')//td/text()
return element {lower-case($name)} {''}
}
</doc>
Run Code Online (Sandbox Code Playgroud)

产生这个:

<?xml version="1.0" encoding="UTF-8"?>
<doc>
 <userid/>
 <name/>
 <rating/>
</doc>
Run Code Online (Sandbox Code Playgroud)

您还可以将该lower-case()函数作为XPATH表达式的一部分而不是元素构造函数进行评估,如下所示:

<doc>
{
for $name in doc('foo.xml')//td/text()/lower-case(.)
return element {$name} {''}
}
</doc>
Run Code Online (Sandbox Code Playgroud)