在 XQuery 中迭代插入属性
Iterative insertion of attributes in 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
添加一个名为 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
但是,我遇到了一个错误
[XPST0003] Unexpected end of query: 'insert attribut...'.
这是一个小语法问题。更新语句的语法是
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
我有一个巨大的 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
添加一个名为 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
但是,我遇到了一个错误
[XPST0003] Unexpected end of query: 'insert attribut...'.
这是一个小语法问题。更新语句的语法是
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