Является ли этот элемент с самым низким листом последним в своей ветви? - PullRequest
0 голосов
/ 05 февраля 2012

Учитывая этот фрагмент XML и XPATH / XSLT 1.0

<corpus>
    <TEI id="first">
    . 
    .
    .
    </TEI>
    <TEI id="second">
        <text>
           <div n="A">
              <div n="1" />
              <div n="2" />
           </div>
           <div n="B">
              <div n="3" />
              <div n="4" />
           </div>
        </text>
    </TEI>
    <TEI id="third">
    . 
    .
    . 
    </TEI>
</corpus>

Когда текущий узел, скажем, n = 1, 2, 3 или 4, мне нужно знать, является ли он последним <div> в его <TEI>.

Я думал, что это будет работать

test="node()=ancestor::TEI//div[not(div)][last()]"

но, к моему удивлению,

ancestor::TEI//div[not(div)][last()]

возвращает оба элемента 2 и 4, а

ancestor::TEI//div[not(div)][last()][last()]

делает то же самое.

Как проверить, является ли текущий нижний лист <div>последний нижний лист <div> в текущем <TEI>?

1 Ответ

3 голосов
/ 05 февраля 2012

Ваше выражение,

ancestor::TEI//div[not(div)][last()]

находит любой листовой <div> элемент, который является последним дочерним элементом его родителя.

Это выражение,

(ancestor::TEI//div[not(div)])[last()]

находитпоследний лист <div> потомок предка TEI.Кажется, это то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...