Примеры путей расположения
Примеры путей расположения
Мы изучили достаточно теории путей расположения. Но, понятно, лучше всего осваивать этот материал на примерах, поэтому я привожу следующий список примеров путей расположения (сокращенные варианты рассматриваются после этого списка):
• child::PLANЕТ. Возвращает дочерние элементы <PLANЕТ> контекстного узла;
• child::text(). Возвращает все дочерние текстовые узлы контекстного узла;
• child::node(). Возвращает всех детей контекстного узла;
• attribute::UNIT. Возвращает атрибут UNIT контекстного узла;
• descendant::PLANET. Возвращает все элементы-потомки <PLANET> контекстного узла;
• ancestor::PLANET. Возвращает всех предков <PLANET> контекстного узла;
• ancestor-or-self::PLANET. Возвращает предков <PLANET> контекстного узла. Если контекстным узлом тоже является <PLANET>, возвращает также контекстный узел;
• descendant-or-self::PLANET. Возвращает элементы-потомки <PLANET> контекстного узла. Если контекстным узлом тоже является <PLANET>, возвращает также контекстный узел;
• self::PLANET. Возвращает контекстный узел, если им является элемент <PLANET>;
• child::PLANET/descendant::NAME. Возвращает элементы-потомки <NAME> дочерних элементов <PLANET> контекстного узла;
• child::*/child::PLANET. Возвращает всех внуков <PLANET> контекстного узла;
• /. Возвращает корневой узел;
• /descendant::PLANET. Возвращает все элементы <PLANET> в документе;
• /descendant::PLANET/child::NAME. Возвращает все элементы <NAME> с родителем <PLANET> в документе;
• child::PLANET[position()=3]. Возвращает третьего ребенка <PLANET> контекстного узла;
• child::PLANET[position()=last()]. Возвращает последнего ребенка <PLANET> контекстного узла;
• /descendant::PLANET[position() = 3]. Возвращает третий элемент <PLANET> в документе;
• child::PLANETS/child::PLANET[position()=4]/child::NAME[position()=3]. Возвращает третий элемент <NAME> четвертого элемента <PLANET> элемента <PLANETS>;
• child::PLANET[position()>3]. Возвращает всех детей <PLANET> контекстного узла после первых трех;
• preceding-sibling::NAME[position()=2]. Возвращает второй предыдущий элемент-брат <NAME> контекстного узла;
• child::*[self::NAME or self::MASS]. Возвращает детей <NAME> и <MASS> контекстного узла.
• child::*[self::NAME or self::MASS][position()=last()]. Возвращает последнего ребенка <NAME> или <MASS> контекстного узла.
Как видите, синтаксис некоторых выражений достаточно запутан, и набирать их также довольно долго. Но, как и для образцов, существует сокращенная форма синтаксиса XPath.