Postgresql xpath搜索属性和元素组合

时间:2016-04-26 15:15:00

标签: xml postgresql xpath

我能够使用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中将admin角色与数字10匹配,并且下面的查询也为8-admin组合返回TRUE。

select xpath('//role/@num="8" and //role/text()="admin"', '<above xml>');

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

感谢。

1 个答案:

答案 0 :(得分:5)

  

我试图将管理员角色与数字10匹配

尝试:

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

或者,如果请求管理员的name元素:

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