在XQuery中迭代插入属性

时间:2015-08-04 07:58:26

标签: xml xquery

我有一个巨大的XML文档,其中一部分是

<tracklist>
  <track>
    <position>A1</position>
    <title>Un Momento Solo (North 5th. St. Dub)</title>
    <duration>6:04</duration>
  </track>
  <track>
    <position>A2</position>
    <title>Your Love Is Incredible</title>
    <duration>6:44</duration>
  </track>
  <track>
    <position>B1</position>
    <title>Roots</title>
    <duration>7:43</duration>
  </track>
  <track>
    <position>B2</position>
    <title>Un Momento Solo (Straight Up Mix)</title>
    <duration>7:06</duration>
  </track>
</tracklist>

我想向名为tracklist的{​​{1}}添加一个属性,其中tot下的子节点总数称为tracklist

track

然而,我收到错误

for $i in db:open("releases1","releases.xml")/releases/release
return update insert attribute tot {count($i/tracklist/track)} into 
$i/tracklist/track

1 个答案:

答案 0 :(得分:0)

这是一个次要的语法问题。更新语句的语法是

insert node [node] into [target-node]

其中关键字insert node总是一起出现,如果我记得在这里正确使用两个单词有一些语法上的原因(否则,在解析过程中可能会有一些歧义)。

对于您的示例,请移除update关键字(不存在)并添加缺少的node

for $i in db:open("releases1","releases.xml")/releases/release
return insert node attribute tot {count($i/tracklist/track)} into 
$i/tracklist