Мой 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' "ограничение" также
Это должно работать:
count(//books/book[location/area='hall1'][location/case='1'])
** ДОПОЛНИТЕЛЬНЫЙ ВОПРОС **
Можно ли перечислить все названия книг, в которых есть area='hall1' и case='1'?
for $bb in //books/book[location/area='hall1'][location/case='1']
let $n := //books/book/title
return <book>$n</book>