Я пытаюсь написать запрос XPath, чтобы найти места авторов статей, опубликованных в 2008 году. У меня есть два файла: authors.xml
и papers.xml
. Я добавил фрагмент каждого файла ниже, чтобы проиллюстрировать структуры каждого из них.Использование XPath с более чем одним файлом XML
Как написать запрос XPath, который получает информацию из обоих файлов? Я написал запрос, чтобы получить расположение каждого автора, но я не знаю, как расширить это, чтобы ограничить результаты авторов, опубликованных в 2008 году
Мой текущий запрос XPath:
doc("authors.xml")//author/location
Текущий вывода (расположение всех авторов):
<location>Berkeley</location>
<location>Stanford</location>
Желаемая выход (расположение только авторов, опубликованных в 2008 году):
<location>Berkeley</location>
authors.xml
:
<authorRoot>
<author>
<first>John</first>
<last>Doe</last>
<location>Berkeley</location>
</author>
<author>
<first>Don</first>
<last>Knuth</last>
<location>Stanford</location>
</author>
</authorRoot>
papers.xml
:
<paperRoot>
<paper>
<journal>
<author>Don Knuth</author>
<title>TeX for fun</title>
<year>1995</year>
</journal>
</paper>
<paper>
<book>
<author>Jack Daniels</author>
<title>The Ballmer Peak</title>
<year>2004</year>
</book>
</paper>
<paper>
<journal>
<author>John Doe</author>
<title>P equals NP</title>
<year>2008</year>
</journal>
</paper>
</paperRoot>
В какой среде/платформе вы пытаетесь это сделать? XSLT, возможно? – bjimba
Функция 'document' доступна только в XSLT, а не в чистом XPath. XPath 2.0 имеет очень похожую функцию 'doc', но в чистом XPath 1.0 нет эквивалента. –
Я пересмотрел функцию 'document' /' doc'. Я не знал, что существует различие, так как в моем запросе работали обе формы. Я использую Galax для запуска моих запросов XPath. – user41419