2010-07-27 3 views

ответ

8

, что// in xslt? например ($ CurrentPage // узел)

В XPath аббревиатуры:

// is short for /descendant-or-self::node()/

Значение некоторых атрибутов инструкций XSLT (например, атрибут select) должен быть Выражение XPath.

Поэтому

($currentPage//node) 

обозначает

($currentPage/descendant-or-self::node()/node) 

Это выбирает все элементы, названные node, которые являются дочерними узлами, которые либо содержащиеся в переменной $currentPage или являются потомками узлов, которые содержатся в переменная $currentPage.

Обратите внимание, что в предоставленном выражении node() является узла-тестом (он выбирает все типы узлов на descendant-or-self:: оси, такие как элементы, текстовые узлы, комментарии и обработку-инструкции.

On с другой стороны, somePath/node является обобщающим для somePath/child::node и выбирает только элементы с именем node, которые являются потомками узла контекста.

я настоятельно рекомендую не использовать имя node для элемента для того, чтобы избежать это путаница.

+0

@Dimitre - Я задираю то, что в противном случае хороший ответ, но неверный абзац неверен. Они не будут дочерними узлами контекста, они будут дочерними узлами, выбранными «somePath» – Alohci

+1

@Alohci: Да, и «контекстным узлом» в любой момент является узел, из которого следующий шаг местоположения Выполнено - это означает, что 'child :: node' определяется в' somePath/child :: node', контекстным узлом является любой узел, который выбирается 'somePath'. Итак, мы и я говорим то же самое :) –

+0

'node()/node' запутан.'node()' является предопределенной функцией, а 'node' является переменной-заполнителем? 'node()/foo' будет менее запутанным. – Joren

4

Это выглядит как это часть XPath, который может быть использован в рамках XSLT для поиска по дереву для заданных узлов, в соответствии путь. Это аналогичная технология для селекторов CSS.

двойной слэш выполняет поиск потомков на любой глубине.

Например:

elementa//elementb 

будет соответствовать любому elementb элемент, который является потомком из Elementa элемента, даже если существуют другие уровни между ними, например:

<elementa> 
    <someelement> 
    <elementb> 
    </elementb> 
    </someelement> 
</elementa> 
Смежные вопросы