[EDIT] Похоже, что в редакторе XML, который я использую (XmlPad), есть ошибка, из-за которой запрос Xpath не возвращает правильные результаты. Я протестировал один и тот же запрос, используя два онлайн-инструмента (http://www.zrinity.com/xml/xpath/xpath.cfm и http://www.futurelab.ch/xmlkurs/xpath.en.html), и, похоже, он работает. Biziclop также отметил, что запрос работает правильно в Oxygen.
У меня есть эта структура:
<?xml version="1.0" encoding="utf-8"?>
<root>
<itemlist>
<item>
<code>0001.0.00</code>
<category>709</category>
</item>
<item>
<code>0001.0.00</code>
<category>709</category>
</item>
<item>
<code>0002.0.00</code>
<category>708</category>
</item>
</itemlist>
<itemlist>
<item>
<code>0016.0.00</code>
<category>52</category>
</item>
<item>
<code>0016.0.00</code>
<category>52</category>
</item>
<item>
<code>0016.0.00</code>
<category>51</category>
</item>
<item>
<code>0016.0.00</code>
<category>50</category>
</item>
<item>
<code>0869.0.00</code>
<category>52</category>
</item>
<item>
<code>0869.0.00</code>
<category>51</category>
</item>
<item>
<code>0869.0.00</code>
<category>50</category>
</item>
</itemlist>
</root>
Я хочу найти все элементы, в которых предыдущий элемент имеет ту же категорию.
Этот запрос Xpath:
//item[category = preceding-sibling::item[1]/category]
возвращает следующие узлы:
<item>
<code>0001.0.00</code>
<category>709</category>
</item>
<item>
<code>0016.0.00</code>
<category>52</category>
</item>
<item>
<code>0869.0.00</code>
<category>52</category>
</item>
Последний узел элемента в наборе результатов является неправильным, поскольку значение категории предыдущего элемента на входе не равно 52, поэтому его не следует возвращать.
Есть ли запрос Xpath, который вернет желаемые результаты?