2012-10-24 82 views
0

我使用OSM 7.2.0.3和我有盒與Order Recognition Rule,以其Order Data Rule(內部轉化標籤)XQuery的嵌套循環誤差

在ODR我有這樣的XQuery代碼:

declare namespace im="http://xxx"; 
declare namespace xs="http://www.w3.org/2001/XMLSchema"; 

declare variable $order := fn:root(.)/im:Order; 

<_root> 
    <Order> 
    { 
    for $moli in $order/MainOrderLineItem 
     return { 
     <OrderLineItem> 
      {$moli/LineItemAttributeInfo/LineItemAttribute} 
     </OrderLineItem> 
     { 
      for $oli in $moli/OrderLineItem 
      return 
      <OrderLineItem> 
       {$oli/LineItemAttributeInfo/LineItemAttribute} 
      </OrderLineItem> 
     } 
     } 
    } 
    </Order> 
</_root> 

有沒有編譯錯誤OSM,但在運行時我得到:

Invalid Order Specification Fault 
Order data expression failed due to oracle.communications.ordermanagement.rule.XMLRuleException 

我通過Web服務提交XML運行OSM。

非常感謝您的答覆。

回答

1

return ed XML實際上應該放在括號中而不是大括號中。此外,還需要爲所述第一返回OrderLineItem元件和FLWOR表達之間的逗號代替在大括號包裹它的:

declare namespace im="http://xxx"; 
declare namespace xs="http://www.w3.org/2001/XMLSchema"; 

declare variable $order := fn:root(.)/im:Order; 

<_root> 
    <Order>{ 
    for $moli in $order/MainOrderLineItem 
    return (
     <OrderLineItem> 
     {$moli/LineItemAttributeInfo/LineItemAttribute} 
     </OrderLineItem>, 
     for $oli in $moli/OrderLineItem 
     return 
     <OrderLineItem> 
      {$oli/LineItemAttributeInfo/LineItemAttribute} 
     </OrderLineItem> 
    ) 
    }</Order> 
</_root>