0

以下输出并不太远,但查询record为每条记录创建了一个新元素,entry而原始数据entry在每条记录中具有四个元素节点。

这样,一些数据正在被擦除。应该有四个entry节点,它们是节点的子record节点,record; 根元素是csv.

如何在不更改文档树的情况下为每个entry元素添加属性?

我正在寻找的是这样的:

<record>
<entry num="1">2020-01-26</entry>
<entry num="2">Vancouver Coastal</entry>
..
<record>
<entry num="1">2020-02-02</entry>
..

以便“计数器”为每条记录重新启动。

电流输出:

<csv>
  <record>
    <entry num="1">2020-01-26</entry>
  </record>
  <record>
    <entry num="2">Vancouver Coastal</entry>
  </record>
  <record>
    <entry num="3">M</entry>
  </record>
  <record>
    <entry num="4">40-49</entry>
  </record>
  <record>
    <entry num="5">Lab-diagnosed</entry>
  </record>
  <record>
    <entry num="6">2020-02-02</entry>
  </record>
  <record>
    <entry num="7">Vancouver Coastal</entry>
  </record>
  <record>
    <entry num="8">baz</entry>
  </record>
  <record>
    <entry num="9">50-59</entry>
  </record>
  <record>
    <entry num="10">Lab-diagnosed</entry>
  </record>
  <record>
    <entry num="11">2020-02-05</entry>
  </record>
  <record>
    <entry num="12">Vancouver Coastal</entry>
  </record>
  <record>
    <entry num="13">F</entry>
  </record>
  <record>
    <entry num="14">20-29</entry>
  </record>
  <record>
    <entry num="15">Lab-diagnosed</entry>
  </record>
</csv>

查询:

<csv>
{    

for $x at $i in db:open("bccdc_covid19.abbreviated")/csv/record/entry

return <record><entry num="{$i}">{$x/@*, $x/node()}</entry></record>

}


</csv>

输入:

<csv>
  <record>
    <entry>2020-01-26</entry>
    <entry>Vancouver Coastal</entry>
    <entry>M</entry>
    <entry>40-49</entry>
    <entry>Lab-diagnosed</entry>
  </record>
  <record>
    <entry>2020-02-02</entry>
    <entry>Vancouver Coastal</entry>
    <entry>baz</entry>
    <entry>50-59</entry>
    <entry>Lab-diagnosed</entry>
  </record>
  <record>
    <entry>2020-02-05</entry>
    <entry>Vancouver Coastal</entry>
    <entry>F</entry>
    <entry>20-29</entry>
    <entry>Lab-diagnosed</entry>
  </record>
</csv>

希望保持上面原始文档的结构。

4

1 回答 1

1

您可以嵌套所有此类结构,例如

<csv>
{
    for $record in csv/record
    return
        <record>
        {
            for $entry at $pos in $record/entry
            return
                <entry num="{$pos}">{data($entry)}</entry>
        }
        </record>
}
</csv>
于 2020-06-20T08:20:00.713 回答