我能够使用postgresql(9.4.x)xpath搜索来匹配xml属性或元素。是否可以同时搜索属性和元素值的组合?

<name>
  <firstname>test</firstname>
  <lastname>user</lastname>
  <role num="10">admin</role>
  <role num="8">readonly</role>
</name>

我试图将管理角色与上面示例xml中的数字10匹配,下面的查询对于8-admin组合也返回true。
select xpath('//role/@num="8" and //role/text()="admin"', '<above xml>');

请建议是否有更好的方法来匹配精确的索引组合。
谢谢。

最佳答案

我试图将管理员角色与10匹配
尝试:

'//role[@num="10" and text()="admin"]'

或者如果请求管理员的name元素:
'//name[role[@num="10" and text()="admin"]]'

09-30 17:08
查看更多