0

我正在使用OSM7.2.0.3 并且我有一个带有Order Recognition Rule, 的墨盒Order Data Rule(在转换选项卡内)

在 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。

非常感谢您的回复。

4

1 回答 1

1

returned 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>
于 2012-10-24T11:37:34.647 回答