□ parent::node()— выберет родительский узел контекстного узла вне зависимости от его типа. Единственный случай, когда этот шаг выберет пустое множество — это когда контекстный узел является корневым узлом документа;
□ parent::xsl:template— выберет родительский узел, если тот является элементом с именем template и имеет пространство имен с префиксом xsl, иначе выберет пустое множество;
□ self::*— выберет контекстный узел, если он является элементом и пустое множество узлов, если контекстный узел имеет другой тип;
□ self:*— выберет все дочерние элементы контекстного узла, принадлежащие пространству имен с префиксом self;
□ self::text()— выберет контекстный узел, если он является текстовым узлом;
□ self::node()— выберет контекстный узел вне зависимости от его типа;
□ self::query— выберет контекстный узел, если он является элементом с именем query, и пустое множество, если контекстный узел имеет другое имя или не является элементом;
□ preceding::para— выберет все элементы para, которые предшествуют контекстному узлу в порядке просмотра документа;
□ preceding::comment()— выберет все узлы комментариев, которые предшествуют контекстному узлу в порядке просмотра документа;
□ preceding-sibling::*— выберет все братские (принадлежащие тому же родителю) элементы контекстного узла, которые предшествуют ему в порядке просмотра документа;
□ following::processing-instruction('fop')— выберет все узлы инструкций по обработке, которые имеют имя (целевое приложение) "fop"и следуют за контекстным узлом в порядке просмотра документа;
□ following-sibling::text()— выберет все текстовые узлы, которые являются братьями контекстного узла и следуют за ним в порядке просмотра документа;
□ descendant::*— выберет все элементы-потомки контекстного узла;
□ descendant::node()— выберет все узлы-потомки контекстного узла;
□ descendant::b— выберет все элементы b, являющиеся потомками контекстного узла;
□ descendant-or-self::*— выберет все элементы-потомки контекстного узла, а также сам контекстный узел, если он также является элементом;
□ ancestor::*— выберет все элементы, которые являются предками контекстного узла; выбранное множество не будет включать корневой узел, поскольку он не является элементом;
□ ancestor::node()— выберет все узлы, являющиеся предками контекстного узла; выбранное множество будет включать корневой узел (за исключением того случая, когда контекстный узел сам является корневым);
□ ancestor::p— выберет все элементы p, являющиеся предками контекстного узла;
□ ancestor-or-self::node()— выберет контекстный узел, а также все узлы, являющиеся его предками. Выбранное этим шагом множество будет всегда включать корневой узел;
□ ancestor-or-self::body— выберет все элементы body, которые являются предками контекстного узла, а также сам контекстный узел, если он является элементом body;
□ namespace::*— выберет все узлы пространств имен, ассоциированные с контекстным узлом; это множество будет, как минимум, содержать узел пространства имен xml;
□ namespace::xyz— выберет узел пространства имен, определяемого префиксом xyz; поскольку один префикс может соответствовать только одному пространству, возвращаемое множество будет содержать не более одного узла.
Шаги выборки с предикатами:
□ child::*[1]— выберет первый дочерний элемент контекстного узла; этот шаг выборки равносилен child::*[position()=1];
□ child::p[1]— выберет первый дочерний элемент p контекстного узла; этот шаг выборки равносилен child::p[position()=1];
□ child::*[last()]— выберет последний дочерний узел контекстного узла; этот шаг выборки равносилен child::*[position()=last()];
□ child::*[last()-1]— выберет предпоследний дочерний узел контекстного узла; этот шаг выборки равносилен шагу child::*[position()=last()]. Если контекстный узел имеет только один дочерний элемент, выбираемое множество будет пустым;
□ child::p[position() mod 2 = 0]— выберет все четные элементы p;
□ child::p[position() mod 2 = 1]— выберет все нечетные элементы p;
□ child::а[2][attribute::name='b']— Выберет второй дочерний элемент аконтекстного узла, если он имеет атрибут nameсо значением "b";
□ child::a[attribute::name='b'][2]— выберет второй дочерний элемент а контекстного узла из тех, которые имеют атрибут nameсо значением "b"; этот шаг выборки отличается от шага выборки в предыдущем примере — порядок следования предикатов имеет значение;
Читать дальше