Чтение онлайн

на главную - закладки

Жанры

Технология XSLT

Валиков Алексей Н.

Шрифт:

□ Узел, который соответствует пространству имен

xml
. Это пространство неявно определено в любом XML-документе.

□ Узел, который соответствует пространству имен, заданному по умолчанию, если такое есть.

□ По одному узлу на каждый префикс пространств имен, доступный в данном элементе.

Напомним, что пространства имен, доступные в данном элементе, и пространство имен по умолчанию могут быть определены в его предках.

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

Расширенные имена узлов пространств имен состоят из локальной части имени, которая равна префиксу, использованному

для объявления этого пространства и нулевого идентификатора пространства имен. Локальная часть пространства, определенного по умолчанию, будет пустой.

Строковым значением узла пространства имен является уникальный идентификатор ресурса (URI), с которым оно связано.

Мы будем помечать узлы пространств имен метками вида

xmlns:префикс
для обычного пространства и
xmlns
для пространства имен по умолчанию. Мы не будем показывать в деревьях узлы пространства имен
xml
, поскольку они ассоциируются со всеми узлами элементов. При необходимости в нижней части изображения узла мы будем приводить URI пространства, которое ему соответствует.

Пример

Приведем изображение дерева (рис. 3.8) документа

<а xmlns="urn:a"><b:b xmlns:b="urn:b"/></a>

Рис. 3.8. Изображение дерева документа с узлами пространств имен

Узлы инструкций по обработке

Каждой инструкции по обработке соответствует свой узел. В дерево не включаются узлы инструкций, которые были приведены в декларации типа документа (DTD). Кроме этого, поскольку декларация XML не является инструкцией по обработке, ей не будет соответствовать никакой узел в дереве документа.

Локальной частью расширенного имени инструкции по обработке является имя целевого приложения инструкции. Пространство имен инструкции по обработке всегда нулевое.

Строковым значением инструкции по обработке является ее содержание — последовательность символов, которая начинается после имени приложения и следующего за ним пробела и заканчивается перед символами "

?>
", которые закрывают инструкцию. Напомним, что символьные данные инструкции по обработке не выделяются в отдельный текстовый узел.

Узел инструкции по обработке помечается именем целевого приложения, заключенным в символы "

<?
" и "
?>
". В нижней части изображения узла пространства имен может быть указано содержимое инструкции.

Пример

Узел инструкции по обработке

<?xsql quit?>
может быть изображен следующим образом (рис. 3.9):

Рис. 3.9. Изображение узла инструкции по обработке

Узел комментария

Узел комментария соответствует каждому из комментариев, которые присутствуют в документе кроме тех, которые находятся в декларации типа документа (DTD). Узлы комментариев не имеют имен; их строковым значением является текст комментария — последовательность символов после "

<!--
" и до "
– ->
". В изображении дерева узлы комментариев будут помечаться символами "
<!-- -->
". В нижней части при необходимости будет указываться текст комментария.

Пример

Узел комментария

<!-- To do...
– ->
может быть изображен следующим образом (рис. 3.10):

Рис. 3.10. Изображение

узла комментария

Сводная таблица характеристик узлов

Для удобства использования мы можем свести в одну таблицу (табл. 3.1) такие характеристики узлов, как строковое значение, локальная часть имени, пространство имен и так далее.

Таблица 3.1. Характеристики различных типов узлов

Тип узла Характеристики
Строковое значение Расширенное имя Дочерние узлы Родительские узлы
Локальная часть имени Пространство имен
Корневой узел Конкатенация текстовых потомков Нет Узлы элементов, комментариев, инструкций по обработке Нет
Узел элемента Конкатенация текстовых потомков Имя элемента Пространство имен элемента Узлы элементов, комментариев, инструкций по обработке, текстовые узлы Корневой узел или узел элемента
Узел атрибута Значение атрибута Имя атрибута Пространство имен атрибута Нет Узел элемента
Текстовый узел Символьные данные Нет Нет Узел элемента
Узел пространства имен URI пространства имен Префикс пространства имен Нулевое Нет Узел элемента
Узел инструкции по обработке Содержимое инструкции Имя целевого приложения Нулевое Нет Корневой узел или узел элемента
Узел комментария Текст комментария Нет Нет Корневой узел или узел элемента

Ограничения модели XML-документа

Модель XML-документа, описанная выше, является вполне достаточной для того, чтобы манипулировать структурой документа и данными, которые он содержит. Между тем, эта модель имеет определенные ограничения, а именно:

□ Не учитывается информация, содержащаяся в блоке DTD. Как следствие, в XSLT невозможно манипулировать определениями сущностей, элементов, атрибутов и так далее.

□ Не учитываются некоторые синтаксические особенности входящего XML-документа. Например: использовались ли в определенном атрибуте одинарные или двойные кавычки; была ли определенная строка задана сущностью или просто текстом, был ли текст заключен в секции CDATA или нет.

□ Если атрибут элемента был определен в DTD со значением по умолчанию, то в преобразовании нельзя точно сказать, присутствовал ли он физически во входящем документе или нет.

□ Не учитывается, был ли пустой элемент определен как

<b></b>
или
<b/>
.

Одним словом, предложенная выше модель не учитывает информацию, которая не важна с точки зрения структуры документа. На практике помимо структуры бывает также важен и детальный синтаксис документа (например, необходимо вместо

&#160;
выводить
&nbsp;
). К сожалению, применение XSLT для таких задач ограничено вследствие ограничений самой модели документа.

Поделиться:
Популярные книги

Ученичество. Книга 1

Понарошку Евгений
1. Государственный маг
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Ученичество. Книга 1

Матабар III

Клеванский Кирилл Сергеевич
3. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар III

Кодекс Охотника. Книга XXIII

Винокуров Юрий
23. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXIII

Вопреки судьбе, или В другой мир за счастьем

Цвик Катерина Александровна
Любовные романы:
любовно-фантастические романы
6.46
рейтинг книги
Вопреки судьбе, или В другой мир за счастьем

Идеальный мир для Лекаря 23

Сапфир Олег
23. Лекарь
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 23

Довлатов. Сонный лекарь

Голд Джон
1. Не вывожу
Фантастика:
альтернативная история
аниме
5.00
рейтинг книги
Довлатов. Сонный лекарь

Мама из другого мира. Дела семейные и не только

Рыжая Ехидна
4. Королевский приют имени графа Тадеуса Оберона
Любовные романы:
любовно-фантастические романы
9.34
рейтинг книги
Мама из другого мира. Дела семейные и не только

Великий род

Сай Ярослав
3. Медорфенов
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Великий род

Проданная Истинная. Месть по-драконьи

Белова Екатерина
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Проданная Истинная. Месть по-драконьи

Треск штанов

Ланцов Михаил Алексеевич
6. Сын Петра
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Треск штанов

Лучший из худших

Дашко Дмитрий
1. Лучший из худших
Фантастика:
фэнтези
попаданцы
5.25
рейтинг книги
Лучший из худших

На границе империй. Том 8. Часть 2

INDIGO
13. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 8. Часть 2

Гром над Академией Часть 3

Машуков Тимур
4. Гром над миром
Фантастика:
фэнтези
5.25
рейтинг книги
Гром над Академией Часть 3

Сила рода. Том 3

Вяч Павел
2. Претендент
Фантастика:
фэнтези
боевая фантастика
6.17
рейтинг книги
Сила рода. Том 3