Шрифт:
Можно также указать, какую именно инструкцию обработки вы хотите выбрать, задав имя инструкции (исключая
РАЗЛИЧИЕ МЕЖДУ КОРНЕВЫМИ УЗЛАМИ И КОРНЕВЫМИ ЭЛЕМЕНТАМИ
Одна из основных причин различия корневого узла в самом начале документа и корневого элемента заключается в том, что при этом у вас есть доступ к инструкциям обработки и другим узлам в прологе документа.
На этом мы заканчиваем обсуждение возможных условий узлов в образцах шага. Третья и последняя часть образцов шага — предикаты
Образцы шага, часть 3: предикаты
Предикаты, третья часть образцов шага, содержат выражения XPath. Предикат можно заключить в операцию [] и проверить, верно ли заданное условие.
Например, можно проверить:
• значение атрибута в заданной строке;
• значение элемента;
• содержит ли элемент определенного ребенка, атрибут или другой элемент;
• позицию узла в дереве узлов.
Подробнее выражения XPath обсуждаются в главе 7, но здесь будет представлено введение в тему, так как эти выражения можно применять в предикатах образцов.
Выражения XPath более сложны, чем образцы выбора. Если при их создании у вас возникнут затруднения, вам может помочь удобная программа-пример ApplyXPath.java из пакета Xalan, при помощи которой можно применить к документу выражение XPath и посмотреть на результаты. Например, если применить выражение XPath "
Если предикат имеет числовое значение, последнее представляет условие позиции (position test). Например, NAME[1] выбирает первого ребенка
Предикаты являются полными выражениями XPath, хотя на предикаты, используемые в образцах, накладывается два ограничения:
• когда образец используется в атрибуте
• образцы не могут использовать в предикатах функцию XPath
В следующем примере образец выбирает элементы
Этот образец выбирает любой элемент с дочерним элементом
Теперь я задал элементам