XSLT — страница 3 из 124

Вы должны понимать, как работают документы XML, поэтому проверьте по материалам этого раздела, готовы ли вы к работе. Давайте посмотрим на примере документа XML:

  Hello From XML

  Welcome to the wild and woolly world of XML.

Вот как работает этот документ: я начал с инструкции обработки XML (все инструкции обработки XML начинаются с ), означающей, что используется XML версии 1.0, единственная определенная сейчас версия, и кодировка символов UTF-8, то есть используется восьмибитная сжатая версия Unicode:

  Hello From XML

  Welcome to the wild and woolly world of XML.

Затем я создаю новый тег (tag) с именем

. Для тега можно использовать любое имя, не обязательно DOCUMENT; необходимо только, чтобы имя начиналось с буквы или символа подчеркивания (_), а последующими символами были буквы, цифры, символы подчеркивания, точки (.) или дефисы (-), но не пробелы. В XML теги всегда начинаются с < и заканчиваются >.

Документы XML образованы из элементов XML; последние начинаются с открывающего тега, такого как

(за которым следует содержимое (content) элемента, если оно есть, — например, текст или другие элементы), и завершаются закрывающим тегом, парным тегу открытия (он начинается с символов
). Весь документ целиком, за исключением инструкций обработки, заключается в один элемент, называемый корневым (root) элементом; в нашем случае это элемент
:

 .

 .

 .

Теперь я добавлю новый элемент,

, в который заключено текстовое содержимое (здесь «Hello From XML», привет от XML) этого XML-документа:

  Hello From XML

 .

 .

 .

После этого я могу добавить еще один элемент,

, также образующий оболочку над текстовым содержимым:

  Hello From XML

  Welcome to the wild and woolly world of XML.

Сейчас корневой элемент

содержит два элемента —
и
, в каждом из которых имеется текст. Таким образом, я создал новый документ XML.

Однако следует добавить еще кое-что: документы XML могут быть также хорошо сформированными (well-formed) и допустимыми (valid). 

Хорошо сформированные документы XML

Для того чтобы быть хорошо сформированным, документ XML должен следовать правилам синтаксиса, установленным для XML консорциумом W3C в рекомендации XML 1.0 (которую можно найти по адресу www.w3.org/TR/REC-xml). Неформально «хорошо сформированный» означает главным образом то, что документ должен содержать один или более элементов, и один из них, корневой, обязан включать в себя все остальные элементы. Кроме того, для каждого элемента должны соблюдаться правила вложенности. Например, следующий документ не будет хорошо сформированным, потому что закрывающий тег встречается после открывающегося тега для следующего элемента:

  Hello From XML

  Welcome to the wild and woolly world of XML.

Допустимые документы XML

Большинство браузеров XML проверяют документы на то, являются ли они хорошо сформированными. Некоторые браузеры могут также проверить, допустим ли документ. Документ XML допустим (valid), если с ним связаны объявление типа документа (DTD — Document Type Declaration) или схема XML, и если документ удовлетворяет этим DTD или схеме. То есть DTD или схема задает набор правил для внутренней целостности самого документа, и если браузер может подтвердить, что документ удовлетворяет этим правилам, он является допустимым.

XML-схемы завоевывают популярность, и значительно большая поддержка схем присутствует в XSLT 2.0 (фактически поддержка XML-схем — одна из побудительных сил к переходу на XSLT 2.0), однако объявления DTD все еще остаются наиболее часто используемым средством проверки на допустимость. Объявления DTD могут быть сохранены в отдельном файле или в самом документе в элементе . Ниже этот элемент добавлен в разработанный нами пример:

]>

  Hello From XML

  Welcome to the wild and woolly world of XML

В этой книге не рассматриваются объявления DTD, но из них видно, что элемент

— корневой, а элементы
и
могут, во-первых, находиться внутри него, а во-вторых — содержать текст.

В документах XML могут присутствовать все виды иерархий, когда один элемент заключен в другой элемент и так далее на много уровней вложенности. Элементам можно также задавать атрибуты, например:

, где атрибут
COLOR
содержит значение "
blue
". При помощи таких атрибутов удобно хранить дополнительные данные об элементах. Еще в документы XML разрешается включать комментарии, поясняющие определенные элементы текстом внутри тегов
.

Ниже, в листинге 1.1, приведен пример XML-документа

planets.xml
, в котором эти возможности используются для хранения данных о планетах Меркурии (Mercury), Венере (Venus) и Земле (Earth) — таких как масса, длительность дня, плотность, расстояние от Солнца и т.д. Мы будем работать с этим документом во всей книге, поскольку в нем в компактной форме содержится большая часть возможностей XML, которые могут вам потребоваться.

Листинг 1.1. planets.xml

Mercury

.0553

58.65

1516

.983

43.4

Venus

.815

116.75

37l6

.943

66.8

Earth

1

1

2107

1

128.4

Вам нужно также усвоить ряд определений XML, принятых в этой книге:

• CDATA. Простые символьные данные (то есть текст, не содержащий какой-либо разметки);

• ID. Корректное имя XML, которое должно быть уникальным (то есть не использоваться в каких-либо других атрибутах типа ID);

• IDREF. Содержит значение атрибута ID некоторого элемента, как правило, отличного от элемента, с которым связан текущий элемент;

IDREFS. Несколько идентификаторов (ID) элементов, разделенных пробелами;

NAME Символ. Буква, разряд, точка, дефис, символ подчеркивания или двоеточие;

• NAME. Имя XML, которое должно начинаться с буквы, символа подчеркивания или двоеточия, за которыми, возможно, следуют дополнительные символы имени;

NAMES. Список имен, разделенных символом-разделителем;

• NMTOKEN. Лексема, образованная из одной или более букв, цифр, дефисов, символов подчеркивания, двоеточий и точек;

• NMTOKENS. Несколько корректных имен XML в списке, разделенных символом-разделителем;

NOTATION. Название нотации (которое должно быть объявлено в DTD);

• PCDATA. Разобранные символьные данные. PCDATA не содержит какой-либо разметки, и любые ссылки на сущности уже были в PCDATA раскрыты.

Теперь у нас есть представление о документах XML, в том числе о том, что такое хорошо сформированный и допустимый документ. Если вы еще не чувствуете себя достаточно уверенно в этом материале, прочитайте другую книгу по этой теме. Вы можете также просмотреть на некоторые ресурсы XML в Web:

• http://www.w3c.org/xml. Основной web-узел консорциума World Wide Web Consortium, посвященный XML, начальная точка для всех аспектов XML;

• http://www.w3.org/XML/1999/XML-in-10-points, «XML за 10 шагов» (в действительности только семь) — обзор XML;

• http://www.w3.org/TR/REC-xml. Официальная рекомендация W3C для XML 1.0, текущая (и единственная) версия. Не слишком просто для чтения,

• http://www.w3.org/TR/xml-stylesheet/. Все о работе таблиц стилей и XML;

• http://www.w3.org/TR/REC-xml-names/. Все о пространствах имен XML;

• http://www.w3.org/XML/Activity.html. Обзор текущей деятельности по XML в W3C;

• http://www.w3.org/TR/xmlschema-0/, http://www.w3.org/TR/xmlschema-1/ и http://www.w3.org/TR/xmlschema-2/. XML-схемы, альтернатива объявлениям DTD; 

• http://www.w3.org/TR/xlink/. Спецификация XLinks;

• http://www.w3.org/TR/xptr. Спецификация XPointers;

• http://www.w3.org/TR/xhtml1/. Спецификация XHTML 1.0;

• http://www.w3.org/TR/xhtml11/. Спецификация XHTML 1.1;

• http://www.w3.org/DOM/.W3C Объектная модель документа, DOM (Document Object Model).

Теперь мы научились создавать документы XML. Каковы они в наглядном виде?

Как XML выглядит в браузере?