1

我在一个 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

这不会像我想要的那样返回结果。它具有典型的嵌套结构,例如

<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 个 PO 和 5 个订单项的结果:

<Quantity>100</Quantity>
<Quantity>20</Quantity>
<Quantity>1</Quantity>
<Quantity>1000</Quantity>
<Quantity>1</Quantity>

查看一些关于分组等的教程。我无法确定这是否可能。

4

1 回答 1

1

您的 XPathOrder By缺少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
于 2017-02-19T19:23:56.783 回答