OSB:Xquery比较间歇性失败

OSB:Xquery比较间歇性失败,xquery,osb,oracle-service-bus,Xquery,Osb,Oracle Service Bus,我的OSB代理中有以下条件 $body/*[1]/xyzflag eq 'true' and (:some other true conditions:) 变量$body指向的节点下甚至不存在节点xyzflag 该条件在大多数情况下都按预期工作(给出false)。但有时这是真的 有人面临过这种情况吗?对我来说似乎是个虫子。有什么帮助吗?您尝试的XQuery表达式是错误的 e、 g.如果您的XML如下所示: <school> <teacher> <isClas

我的OSB代理中有以下条件

$body/*[1]/xyzflag eq 'true' and (:some other true conditions:)
变量$body指向的节点下甚至不存在节点
xyzflag

该条件在大多数情况下都按预期工作(给出false)。但有时这是真的


有人面临过这种情况吗?对我来说似乎是个虫子。有什么帮助吗?

您尝试的XQuery表达式是错误的

e、 g.如果您的XML如下所示:

<school>
<teacher>
   <isClassteacher>Y</isClassteacher>
</teacher>  

<teacher>
  <isClassteacher>N</isClassteacher>
</teacher>
</school>

Y
N
那么您的表达式将如下所示: 数据($body/teacher[1]/isClassteacher)='Y'

注:请根据您的要求进行更改

希望这会有帮助

问候


华硕

试着这样做:


fn:data($body/[1]/xyzflag)

如果您正在检查该节点是否存在
,我建议您使用
fn:exists
函数

这句话

$body/*[1]/xyzflag = 'true'

如果节点
存在,将返回true。不必担心节点的内容是否存在

您的XQuery表达式似乎无效(谓词没有名称测试)。请确保复制代码,不要重新键入;同时发布工作示例(阅读关于最小示例应该是什么样子的)。还包括条件失败的示例输入。对不起,输入错误。我一边吃星号,一边想把它加粗。正确的表达式是-$body/*[1]/CustomerID您能给出$body的一个示例值,其中$body/*[1]/xyzflag eq“true”的计算结果意外为true吗?eq将隐式雾化参数:添加fn:数据没有错,但没有必要。我看不出他的XPath表达式有任何错误$body/*选择$body的所有子元素,而不考虑其名称。请参阅$body/*[1]/xyzflag='true'不会仅因为存在而计算为true。当其中一个xyzflag元素的值等于字符串“true”时,它将计算为true。看见