Xquery-序列号

Xquery-序列号,xquery,Xquery,我有一个包含以下数据的XML文档。我需要做的是展示这个。对于每个新工厂,都应该添加一个名为id的属性来显示序列号。第一种植物是1,第二种植物是2,依此类推。我不知道从哪里开始…任何指导都将不胜感激 <CATALOG> <PLANT> <COMMON>ABC</COMMON> <BOTANICAL>MNO</BOTANICAL> <ZONE>4</ZONE> <LIGHT>Mostly Sh

我有一个包含以下数据的XML文档。我需要做的是展示这个。对于每个新工厂,都应该添加一个名为id的属性来显示序列号。第一种植物是1,第二种植物是2,依此类推。我不知道从哪里开始…任何指导都将不胜感激

<CATALOG>
<PLANT>
<COMMON>ABC</COMMON>
<BOTANICAL>MNO</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Mostly Shady</LIGHT>
</PLANT>
<PLANT>
<COMMON>PQR</COMMON>
<BOTANICAL>FGH</BOTANICAL>
<ZONE>3</ZONE>
<LIGHT>Mostly Shady</LIGHT>
</PLANT>
</CATALOG>

基础知识
MNO
4.
大部分是阴凉的
PQR
FGH
3.
大部分是阴凉的
输出应如下所示:

<CATALOG>
<PLANT id="1">
<COMMON>ABC</COMMON>
<BOTANICAL>MNO</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Mostly Shady</LIGHT>
</PLANT>
<PLANT  id="2">
<COMMON>PQR</COMMON>
<BOTANICAL>FGH</BOTANICAL>
<ZONE>3</ZONE>
<LIGHT>Mostly Shady</LIGHT>
</PLANT>
</CATALOG>

基础知识
MNO
4.
大部分是阴凉的
PQR
FGH
3.
大部分是阴凉的

感谢您的帮助。

在Flower表达式中使用位置变量:

for $p at $id in //PLANT
return <PLANT id="{$id}">{$p/*}</PLANT>
工厂中$id处$p的

返回{$p/*}

在Flower表达式中使用位置变量:

for $p at $id in //PLANT
return <PLANT id="{$id}">{$p/*}</PLANT>
工厂中$id处$p的

返回{$p/*}

在Flower表达式中使用位置变量:

for $p at $id in //PLANT
return <PLANT id="{$id}">{$p/*}</PLANT>
工厂中$id处$p的

返回{$p/*}

在Flower表达式中使用位置变量:

for $p at $id in //PLANT
return <PLANT id="{$id}">{$p/*}</PLANT>
工厂中$id处$p的

返回{$p/*}

如果您有权访问XQuery Update,您还可以更改原始文档

for $plant at $id in /CATALOG/PLANT
return insert node attribute id { $id } into $plant
或者使用XQuery更新转换,该转换只更改副本:

copy $result := /.
modify (
  for $plant at $id in $result/CATALOG/PLANT
  return insert node attribute id { $id } into $plant
)
return $result

这比像@Ewout-Graswinckel那样重建XML树要大得多,但如果您想更改树的不同级别的更多详细信息,这将非常方便。

如果您可以访问XQuery Update,您还可以更改原始文档

for $plant at $id in /CATALOG/PLANT
return insert node attribute id { $id } into $plant
或者使用XQuery更新转换,该转换只更改副本:

copy $result := /.
modify (
  for $plant at $id in $result/CATALOG/PLANT
  return insert node attribute id { $id } into $plant
)
return $result

这比像@Ewout-Graswinckel那样重建XML树要大得多,但如果您想更改树的不同级别的更多详细信息,这将非常方便。

如果您可以访问XQuery Update,您还可以更改原始文档

for $plant at $id in /CATALOG/PLANT
return insert node attribute id { $id } into $plant
或者使用XQuery更新转换,该转换只更改副本:

copy $result := /.
modify (
  for $plant at $id in $result/CATALOG/PLANT
  return insert node attribute id { $id } into $plant
)
return $result

这比像@Ewout-Graswinckel那样重建XML树要大得多,但如果您想更改树的不同级别的更多详细信息,这将非常方便。

如果您可以访问XQuery Update,您还可以更改原始文档

for $plant at $id in /CATALOG/PLANT
return insert node attribute id { $id } into $plant
或者使用XQuery更新转换,该转换只更改副本:

copy $result := /.
modify (
  for $plant at $id in $result/CATALOG/PLANT
  return insert node attribute id { $id } into $plant
)
return $result
这比像@Ewout-Graswinckel那样重建XML树要庞大得多,但是如果您想更改树的不同级别的更多细节,这将非常方便