如何计算具有两个“限制”的元素?

时间:2019-05-20 22:29:13

标签: xquery

我的XML看起来像这样:

<books>
    <book id="b1">
      <title>Set theory and the continuum problem</title>
      <category>Mathematics</category>
      <location>
        <area>hall1</area>
        <case>1</case>
        <shelf>2</shelf>
      </location>
      <description>A lucid, elegant, and complete survey of set theory.</description>
      <history>
        <borrowed by="m4"/>
        <borrowed by="m2" until="2018-04-05"/>
      </history>
    </book>
    <book id="b2">
      <title>Computational Complexity</title>
      <isbn>978-0201-530-827</isbn>
      <category>Computer Science</category>
      <location>
        <area>hall1</area>
        <case>3</case>
        <shelf>3</shelf>
      </location>
      <description>.</description>
    </book>
    <book id="b3">
      <title>To mock a mockingbird</title>
      <isbn>1-292-09761-2</isbn>
      <category>Logic</category>
      <category>Mathematics</category>
      <location>
        <area>hall1</area>
        <case>1</case>
        <shelf>3</shelf>
      </location>
      <description>.</description>
     </book>
</books>

是否可以用area ='hall1'和case ='1'来计算有多少本书?

我尝试过:

count(//books/book[location/area='hall1'])

但是我也不知道如何包含case ='1'“限制”

2 个答案:

答案 0 :(得分:0)

这应该有效:

count(//books/book[location/area='hall1'][location/case='1'])

答案 1 :(得分:0)

**其他问题**

是否可以列出所有具有area ='hall1'和case ='1'的图书的书名?

for $bb in //books/book[location/area='hall1'][location/case='1']
    let $n := //books/book/title
return <book>$n</book>