XQuery - 将拆分的节点数据插入另一个节点
XQuery - to insert splitted nodes data into another node
<?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 and Receipt No. OrderNo
节点包含
订单号 wrt 交货信息。
XML 存储在 BaseX 中,我需要从中生成以下报告
以上 XML.
<A><DelInfo>123-20150308-345</DelInfo><OrderNo>11</OrderNo><Report>20150308 - 11</Report></A>
.....
换句话说,我想插入一个附加节点 Report
,其中包含日期和订单号。
有什么想法吗?
将 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()
将return第一个-
之后的字符串。然后,substring-before()
将 return -
之前的字符串。这样您将获得日期部分。
<?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 and Receipt No. OrderNo
节点包含
订单号 wrt 交货信息。
XML 存储在 BaseX 中,我需要从中生成以下报告 以上 XML.
<A><DelInfo>123-20150308-345</DelInfo><OrderNo>11</OrderNo><Report>20150308 - 11</Report></A>
.....
换句话说,我想插入一个附加节点 Report
,其中包含日期和订单号。
有什么想法吗?
将 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()
将return第一个-
之后的字符串。然后,substring-before()
将 return -
之前的字符串。这样您将获得日期部分。