XPath: получить корневой узел набора узлов из указанного узла

Можно ли написать выражение XPath, которое получает корневой узел узла в наборе узлов только со ссылкой на узел?

Использование «/» для меня не сработает, потому что это относится только к корню входного документа. Также я хотел бы, чтобы он работал без контекста и использовал его для общего набора узлов, который может быть создан динамически во время обработки.

Например...

<xsl:function name="my:getRoot">
    <xsl:param name="n" />
    <xsl:variable name="rootnode" select="some_solution($n)"/>
</xsl:function>

Спасибо за помощь.


person ricosrealm    schedule 29.02.2012    source источник


Ответы (1)


Использование XPath 1.0:

ancestor-or-self::node()[last()]

Это выбирает самого дальнего из предков текущего узла - его документ-узел.

Использование XPath 2.0:

 root(.)
person Dimitre Novatchev    schedule 29.02.2012
comment
Спасибо, Димитр, я подумал, что есть простое решение для Xpath 2.0, просто не смог найти его в документации. И +1 для решения Xpath 1.0. - person ricosrealm; 01.03.2012