Xpath非单调查询

时间:2013-11-10 14:09:28

标签: xml xpath

如何在Xpath中执行非单调查询?

例如:

<PetOwners>
   <OwnerID oid= "01">
      <Name>John</Name>
      <Pets>
        <Pet> <No>1</No><Type>dog</Type></Pet>
        <Pet> <No>2</No><Type>cat</Type></Pet>
      </Pets>
   </OwnerID>
   <OwnerID oid= "02">
      <Name>Jack</Name>
      <Pets>
        <Pet> <No>1</No><Type>dog</Type></Pet>
        <Pet> <No>2</No><Type>bird</Type></Pet>
      </Pets>
   </OwnerID>
</PetOwners>   

查找拥有狗但没有猫的主人的查询是什么?

1 个答案:

答案 0 :(得分:2)

  

查找拥有狗但没有猫的主人的查询是什么?

/PetOwners/OwnerID[Pets/Pet/Type = 'dog'][not(Pets/Pet/Type = 'cat')]

对于“没有猫”位,您必须使用not(Pets/Pet/Type = 'cat')而不是Pets/Pet/Type != 'cat',因为后者意味着“至少有一只宠物不是猫”(这总是要是的,因为我们已经确定他们有一只狗了。