Я получаю запутанное поведение при попытке выбрать узел предка в файле XML. XML выглядит так:
<?xml version="1.0" encoding="utf-8"?>
<document version="2">
<interlinear-text>
<paragraphs>
<paragraph>
<phrases>
<phrase>
<item type="segnum" lang="en">1.1</item>
<words>
<word>
<morphemes>
<morph type="stem">
<item type="cf" lang="tmy-Latn">yau</item>
<item type="txt" lang="tmy-Latn">yau</item>
<item type="gls" lang="en">1S</item>
</morph>
</morphemes>
</word>
<word>
<morphemes>
<morph type="stem">
<item type="cf" lang="tmy-Latn">ma</item>
<item type="txt" lang="tmy-Latn">ma</item>
<item type="gls" lang="en">and</item>
</morph>
</morphemes>
</word>
...
Итак, в XSLT я нахожусь в шаблоне, соответствующем узлам morph / item, и я пытаюсь использовать ancestor::*[word]
, и вместо этого он возвращает элемент <words>
. Даже если я скажу ancestor::*[word][1]
. Почему он выбирает элемент, который даже не соответствует тому, что я просил ?! Как заставить его выбрать элемент word по имени из элемента item с помощью функции предка?