Технология XSLT
Шрифт:
Узлы дерева XML-документа
Корневой узел
Корневой узел XML-документа — это узел, который является корнем дерева документа. Не следует путать его с корневым элементом документа, поскольку помимо корневого элемента дочерними узлами корня также являются инструкции по обработке и комментарии, которые находятся вне корневого элемента.
Мы будем помечать корневой узел документа символом "
Рис. 3.3.
На рис. 3.4 показано изображение документа,
корневой узел которого помимо корневого элемента содержит комментарии и инструкции по обработке.
Рис. 3.4. XML-документ и его изображение
Корневой элемент не имеет имени. Функция
Строковым значением корневого узла является конкатенация строковых значений всех его текстовых потомков в порядке просмотра документа.
Узлы элементов
Каждому элементу XML-документа соответствует узел элемента. Дочерними узлами узла элемента могут быть узлы его дочерних элементов, а также узлы комментариев, инструкций по обработке и текстовые узлы, которые представляют его непосредственное содержимое. Следует обратить внимание на то, что узлы атрибутов не считаются дочерними узлами своего элемента, они лишь только ассоциируются с ними.
При изображении деревьев мы будем помечать узлы элементов их именами. Например, элемент
Рис. 3.5. Изображение элемента
Каждый элемент имеет расширенное имя, которое состоит из локальной части и идентификатора пространства имен. Пространство имен, которому принадлежит элемент, может быть нулевым, если элемент не имеет префикса, и в его предках не было объявлено пространство имен по умолчанию.
Подобно корневому узлу, строковым значением узла элемента будет конкатенация значений его текстовых потомков в порядке просмотра документа. В силу того, что атрибуты не являются потомками элементов, их текстовые значения учитываться не будут.
Узлы атрибутов
Атрибутам того или иного элемента соответствуют узлы атрибутов. Считается, что узел элемента является родителем узла своего атрибута, но вместе с тем узел атрибута не является дочерним узлом узла его элемента. Такая ситуация несколько отличает дерево документа в XSLT от классического дерева, как оно было определено ранее — отношение между узлом элемента и узлом атрибута является отношением ассоциации. Говорят, что узел атрибута ассоциируется с узлом элемента.
Между тем, отношения
Рис. 3.6 показывает возможные варианты изображения элемента, определенного как
Рис. 3.6. Изображение элемента и принадлежащего ему атрибута
В случаях, когда значение атрибута не является важным, оно может отсутствовать в изображении узла.
Каждый атрибут имеет расширенное имя, состоящее из локальной части и идентификатора пространства имен. Пространство имен атрибута будет нулевым, если оно не было определено по умолчанию и у имени атрибута нет префикса.
Строковым значением узла атрибута является значение атрибута, который ему соответствует.
Текстовые узлы
Символьные данные, содержащиеся в документе, организуются в виде текстовых узлов. Последовательности символов, встречающиеся в документах, в целях экономии никогда не разбиваются на два или более текстовых узла, а текстовые узлы никогда не бывают пустыми. Содержание секций CDATA обрабатываются так, как если бы их содержимое было просто включено в документ с заменой символов "
Текст, содержащийся в значениях атрибутов, а также в комментариях и инструкциях по обработке не оформляется в виде текстовых узлов — эти данные принадлежат соответствующим узлам атрибутов, комментариев и инструкций.
Мы будем помечать текстовые узлы символьными последовательностями, которые они содержат, заключенными в кавычки. В случаях, когда сам текст не важен, мы будем помечать эти узлы как "
Элемент, заданный как
Рис. 3.7. Варианты изображения текстового узла элемента
Текстовые узлы не имеют имен. Строковым значением текстового узла является последовательность символов, которую он содержит.
Узлы пространств имен
Каждому пространству имен, которое определено для данного элемента, соответствует узел пространства имен, ассоциируемый с узлом этого элемента. Множество узлов пространств имен, которое ассоциируется с данным элементом, включает в себя следующие узлы.