Книга: Технология XSLT
Семантика паттернов
Разделы на этой странице:
Семантика паттернов
Остановимся подробнее на вопросе — что же означает "соответствие узла некоторому паттерну".
Прежде всего, заметим, что любой паттерн является также и XPath-выражением. Тогда строгое определение соответствия узла паттерну можно дать следующим образом.
Узел X
соответствует паттерну P тогда и только тогда, когда существует такой узел Y
, принадлежащий оси ancestor-or-self
узла X
, что множество, получаемое в результате вычисления выражения P в контексте узла Y
будет содержать узел X
.
Пример
Рассмотрим это определение на примере паттерна body//а
. Строго говоря, узел будет соответствовать этому паттерну, если во множестве его предков (плюс сам узел) найдется такой узел, что множество body//а
, вычисленное в его контексте, будет содержать проверяемый узел. На практике первые два элемента а
приведенного ниже документа соответствуют этому паттерну, потому что существует элемент html
, содержащий элемент body
, потомками которого эти элементы а
являются.
Листинг 6.2
<html>
<body>
<a>
<!-- Соответствует паттерну body//a -->
</a>
<p>
<a>
<!-- Соответствует паттерну body//a -->
</a>
</p>
</body>
<а>
<!-- Не соответствует паттерну body//а -->
</а>
</html>
Существует также и более простое определение соответствия. Узел X
соответствует паттерну P тогда и только тогда, когда X
принадлежит множеству //P
. В приведенном выше примере паттерну body//а
соответствуют все узлы множества //body//а
.
Эти определения эквивалентны. На практике следует пользоваться тем, которое кажется более понятным.
- 1.2. Базовый синтаксис и семантика Ruby
- Инварианты класса и семантика ссылок
- Семантика вызова
- Семантика использования псевдонимов
- Фиксированная семантика компонентов copy, clone и equality
- Глава 2 Синтаксис и семантика Пролог-программ
- 2.4. Процедурная семантика
- Волшебство сеомантики, или Семантика в SEO
- СЕМАНТИКА
- Семантика параметров
- 16.6. Семантика вызовов
- Семантика сигналов POSIX