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

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

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

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

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/css" href="first.css"?>

<!DOCTYPE DOCUMENT [

 <!ELEMENT DOCUMENT (GREETING, MESSAGE)>

 <!ELEMENT GREETING (#PCDATA)>

 <!ELEMENT MESSAGE (#PCDATA)>

]>

<DOCUMENT>

 <GREETING>

  Hello From XML

 </GREETING>

 <MESSAGE>

  Welcome to the wild and woolly world of XML

 </MESSAGE>

</DOCUMENT>

В этой книге не рассматриваются объявления DTD, но из них видно, что элемент <DOCUMENT> — корневой, а элементы <GREETING> и <MESSAGE> могут, во-первых, находиться внутри него, а во-вторых — содержать текст.

В документах XML могут присутствовать все виды иерархий, когда один элемент заключен в другой элемент и так далее на много уровней вложенности. Элементам можно также задавать атрибуты, например: <CIRCLE COLOR="blue">, где атрибут COLOR содержит значение "blue". При помощи таких атрибутов удобно хранить дополнительные данные об элементах. Еще в документы XML разрешается включать комментарии, поясняющие определенные элементы текстом внутри тегов <!-- и -->.

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

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

<?xml version="1.0"?>

<PLANETS>

 <PLANET>

  <NAME>Mercury</NAME>

  <MASS UNITS="(Earth = 1)">.0553</MASS>

  <DAY UNITS="days">58.65</DAY>

  <RADIUS UNITS="miles">1516</RADIUS>

  <DENSITY UNITS="(Earth = 1)">.983</DENSITY>

  <DISTANCE UNITS="million miles">43.4</DISTANCE><!--B перигелии-->

 </PLANET>

 <PLANET>

  <NAME>Venus</NAME>

  <MASS UNITS="(Earth = 1)">.815</MASS>

  <DAY UNITS="days">116.75</DAY>

  <RADIUS UNITS="miles">37l6</RADIUS>

  <DENSITY UNITS="(Earth = 1)">.943</DENSITY>

  <DISTANCE UNITS="million miles">66.8</DISTANCE><!--В перигелии-->

 </PLANET>

 <PLANET>

  <NAME>Earth</NAME>

  <MASS UNITS="(Earth = 1)">1</MASS>

  <DAY UNITS="days">1</DAY>

  <RADIUS UNITS="miles">2107</RADIUS>

  <DENSITY UNITS="(Earth = 1)">1</DENSITY>

  <DISTANCE UNITS="million miles">128.4</DISTANCE><!--B перигелии-->

 </PLANET>

</PLANETS>

Вам нужно также усвоить ряд определений 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. Каковы они в наглядном виде?