XPath(SOAP UI):检查是否定义了特定的名称空间URI

时间:2016-02-01 09:36:44

标签: xpath soapui

我正在尝试使用XPath Match断言为SOAP UI中的测试步骤编写断言。我想检查REST服务的响应中是否定义了特定的名称空间URI。我正在尝试使用namespace-uri-for-prefixin-scope-prefixes(/other:element) 函数的组合,但我无法使其工作,所以也许有人有建议。

string-join(in-scope-prefixes(/other:element), ',')

给了我一个包含所有已定义的前缀的集合,我不能用

输出它
in-scope-prefixes(/other:element)[namespace-uri-for-prefix(.,/my:rootElement)='http://namespaceuri.org/my']

所以在第一步中,我想要选择我正在寻找的命名空间URI的前缀

in-scope-prefixes(/other:element)[concat(.,'-') = 'my-']

但是SOAP UI给了我错误

  

无效的XPath表达式

现在我想知道那个表达式是否真的无效?像

这样的东西
declare namespace other='http://namespaceuri.org/other';
let $rt := /other:rootElement
let $ret := exists(in-scope-prefixes($rt)[namespace-uri-for-prefix(.,$rt)='http://namespaceuri.org/my'])
return $ret

在不引发错误的情况下工作。我错过了什么吗?

EDIT1
我刚刚意识到我能够使用 XQuery

实现我想要的功能
declare namespace other='http://namespaceuri.org/other';
let $ret := exists(in-scope-prefixes(/other:rootElement)[namespace-uri-for-prefix(.,/other:rootElement)='http://namespaceuri.org/my'])
return $ret

但这不起作用:

{{1}}

对于后者,SOAP UI提供了异常

  

无效的XQuery表达式

似乎行为与XPath相同,只是我可以在XQuery中使用变量。
这对任何人都有意义吗?知道如何使用XPath吗?

0 个答案:

没有答案