xml - 全部复制- 通过 xquery 从输入 XML 文件到输出 xml 文件的属性
问题描述
第一个 xml 文件是价格信息:
<prices>
<priceList effDate="2006-11-15">
<prod num="557">
<price currency="USD">29.99</price>
<discount type="CLR">10.00</discount>
</prod>
<prod num="563">
<price currency="USD">69.99</price>
</prod>
<prod num="443">
<price currency="USD">39.99</price>
<discount type="CLR">3.99</discount>
</prod>
</priceList>
</prices>
第二个 XML 文件是订单信息
<order num="00299432" date="2006-09-15" cust="0221A">
<item dept="WMN" num="557" quantity="1" color="navy">
<prod num="557">
<price currency="USD">29.99</price>
<discount type="CLR">10.00</discount>
</prod>
</item>
<item dept="ACC" num="563" quantity="1"/>
<item dept="ACC" num="443" quantity="2"/>
<item dept="MEN" num="784" quantity="1" color="white"/>
<item dept="MEN" num="784" quantity="1" color="gray"/>
<item dept="WMN" num="557" quantity="1" color="black"/>
</order>
我的预期输出如下所示,意味着所有<prod>
元素都属于<item>
所有<item>
属性信息
<item dept="WMN" num="557" quantity="1" color="navy">
<prod num="557">
<price currency="USD">29.99</price>
<discount type="CLR">10.00</discount>
</prod>
</item>
我的代码如下:
let $prices := fn:doc('/training/prices.xml')/prices
let $order := fn:doc('/training/order.xml')/order
where $prices/priceList/prod[@num=$order/item/@num]
for $kk in $prices/priceList/prod[@num=$order/item/@num]
return
<item>
{$kk}
</item>
输出:
<item>
<prod num="557">
<price currency="USD">29.99</price>
<discount type="CLR">10.00</discount>
</prod>
</item>
请指导我,谢谢
解决方案
试试下面的方法:
declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization";
declare option output:indent 'yes';
let $prices := fn:doc('Price.xml')/prices
let $order := fn:doc('Order.xml')/order where $prices/priceList/prod[@num=$order/item/@num]
return
for $kk in $prices/priceList/prod[@num=$order/item/@num]
return
<item>{
$order/item[@num=$kk/@num][1]/@*,
$kk
}</item>
推荐阅读
- javascript - 将单元测试添加到 vue cli build
- ios - 如何利用 PageViewController 根据用户的输入生成新的页面视图?
- php - 想使用php显示所有服务下的所有活动
- ios - Swift注释“标签”
- c++ - 为什么模板类的成员需要通过其模板类的参数来参数化
- c++ - Gdiplus Bitmap 没有 Alpha 通道
- php - 简单的 html dom 可以找到 PHP 脚本()?
- laravel - 发现错误的嵌套样式标签,然后在 laravel 中播种数据库
- angular - Angular/cli 未正确安装
- mongodb - 如何在聚合中使用_id?