0
<?xml version="1.0" encoding="UTF-8"?>
<Data>
  <A><DelInfo>123-20150308-345</DelInfo><OrderNo>11</OrderNo></A>
  <A><DelInfo>1204-20150308-355</DelInfo><OrderNo>15</OrderNo></A>
  <A><DelInfo>153-20150408-343</DelInfo><OrderNo>10</OrderNo></A>
  <A><DelInfo>44345-20150308-341</DelInfo><OrderNo>21</OrderNo></A>
  <A><DelInfo>153-20150204-245</DelInfo><OrderNo>1</OrderNo></A>
  <A><DelInfo>423-20150311-445</DelInfo><OrderNo>13</OrderNo></A>
  ..........
</Data>

我收到以下 XML。该DelInfo节点包含 EmpId、Delivery Date 和 Receipt No. 的组合。该OrderNo节点包含 Delivery Information 中的订单号。

XML 存储在 BaseX 中,我需要从上述 XML 生成以下报告。

<A><DelInfo>123-20150308-345</DelInfo><OrderNo>11</OrderNo><Report>20150308 - 11</Report></A>
.....

换句话说,我想插入一个Report带有日期和订单号的附加节点。知道吗?

4

1 回答 1

0

替换yourdoc为您的文档名称。

for $x in doc('yourdoc')//A
  let $d := substring-before(substring-after($x/DelInfo, "-"), "-")
  let $o := $x/OrderNo/text()
  let $i := <C>{concat($d, " - ", $o)}</C>
return 
    insert node $i after $x/OrderNo

内部substring-after()将返回第一个之后的字符串-。然后,substring-before()将返回 . 之前的字符串-。这样您将获得日期部分。

于 2015-08-08T05:40:18.500 回答