XQUERY 3.0 多级排序/排序
XQUERY 3.0 Multi-level SORT / ORDER BY
我在 XML 文件中有一个 XQUERY 3.0,其中包含 3 个采购订单记录和 5 个项目:
for $PurchaseOrder in doc("C:\Users\thebluephantom\Desktop\order.xml")//PurchaseOrder
order by xs:integer($PurchaseOrder/Item/Quantity) ascending
return $PurchaseOrder/Items/Item/Quantity
这不是我想要的 return 结果。它具有典型的嵌套结构,例如
<PurchaseOrders>
<PurchaseOrder PurchaseOrderNumber="99503" OrderDate="1999-10-20">
<Address Type="Shipping">
<Name>Ellen Adams</Name>
...
</Address>
<Address Type="Billing">
<Name>Tai Yee</Name>
<Street>8 Oak Avenue</Street>
...
</Address>
<DeliveryNotes>Please leave packages in shed by driveway. </DeliveryNotes>
<Items>
<Item PartNumber="872-AA">
<ProductName>Lawnmower</ProductName>
<Quantity>100</Quantity>
<USPrice>148.95</USPrice>
<Comment>Confirm this is electric</Comment>
</Item>
<Item PartNumber="926-AA">
<ProductName>Baby Monitor</ProductName>
<Quantity>20</Quantity>
<USPrice>39.98</USPrice>
<ShipDate>1999-05-21</ShipDate>
</Item>
</Items>
</PurchaseOrder>
<PurchaseOrder PurchaseOrderNumber="99505" OrderDate="1999-10-22">
...
我得到了 3 个采购订单和 5 个订单项目的结果:
<Quantity>100</Quantity>
<Quantity>20</Quantity>
<Quantity>1</Quantity>
<Quantity>1000</Quantity>
<Quantity>1</Quantity>
查看了许多关于分组等的教程。我无法确定这是否真的可行。
您 Order By
中的 XPath 缺少 Items
轴,因此它没有选择任何内容,并且您正在按文档顺序获取结果。如果您更正 XPath,则会在 xs:integer()
调用中选择一系列值并引发错误。
你可以这样改写:
for $quantity in
doc("C:\Users\thebluephantom\Desktop\order.xml")/PurchaseOrders/PurchaseOrder/Items/Item/Quantity
order by xs:integer($quantity) ascending
return $quantity
我在 XML 文件中有一个 XQUERY 3.0,其中包含 3 个采购订单记录和 5 个项目:
for $PurchaseOrder in doc("C:\Users\thebluephantom\Desktop\order.xml")//PurchaseOrder
order by xs:integer($PurchaseOrder/Item/Quantity) ascending
return $PurchaseOrder/Items/Item/Quantity
这不是我想要的 return 结果。它具有典型的嵌套结构,例如
<PurchaseOrders>
<PurchaseOrder PurchaseOrderNumber="99503" OrderDate="1999-10-20">
<Address Type="Shipping">
<Name>Ellen Adams</Name>
...
</Address>
<Address Type="Billing">
<Name>Tai Yee</Name>
<Street>8 Oak Avenue</Street>
...
</Address>
<DeliveryNotes>Please leave packages in shed by driveway. </DeliveryNotes>
<Items>
<Item PartNumber="872-AA">
<ProductName>Lawnmower</ProductName>
<Quantity>100</Quantity>
<USPrice>148.95</USPrice>
<Comment>Confirm this is electric</Comment>
</Item>
<Item PartNumber="926-AA">
<ProductName>Baby Monitor</ProductName>
<Quantity>20</Quantity>
<USPrice>39.98</USPrice>
<ShipDate>1999-05-21</ShipDate>
</Item>
</Items>
</PurchaseOrder>
<PurchaseOrder PurchaseOrderNumber="99505" OrderDate="1999-10-22">
...
我得到了 3 个采购订单和 5 个订单项目的结果:
<Quantity>100</Quantity>
<Quantity>20</Quantity>
<Quantity>1</Quantity>
<Quantity>1000</Quantity>
<Quantity>1</Quantity>
查看了许多关于分组等的教程。我无法确定这是否真的可行。
您 Order By
中的 XPath 缺少 Items
轴,因此它没有选择任何内容,并且您正在按文档顺序获取结果。如果您更正 XPath,则会在 xs:integer()
调用中选择一系列值并引发错误。
你可以这样改写:
for $quantity in
doc("C:\Users\thebluephantom\Desktop\order.xml")/PurchaseOrders/PurchaseOrder/Items/Item/Quantity
order by xs:integer($quantity) ascending
return $quantity