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

时间:2010-03-30 01:01:43

标签: xml xquery

我有以下数据:

    <td>USERID</td>

    <td>NAME</td>

    <td>RATING</td>

我想将其转换为:

<userid></userid>
<name></name>
<rating></rating>

我该怎么做?

2 个答案:

答案 0 :(得分:21)

使用computed element constructor为每个lower-case元素生成texttd个节点值的元素。

  

计算元素构造函数   创建一个元素节点,允许两者   节点的名称和内容   计算。

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

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

产生这个:

<?xml version="1.0" encoding="UTF-8"?>
<doc>
 <userid/>
 <name/>
 <rating/>
</doc>

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

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

答案 1 :(得分:0)

return <doc>{
for $d in $doc/element()/text()
return element{fn:lower-case($d)} {}}</doc>  

其中$ doc存储Xml。