KnigaRead.com/

Стивен Холзнер - XSLT

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн "Стивен Холзнер - XSLT". Жанр: Интернет издательство -, год -.
Перейти на страницу:

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

<DOCUMENT>

 <GREETING>

  Hello From XML

 </GREETING>

 <MESSAGE>

  Welcome to the wild and woolly world of XML.

 </MESSAGE>

</DOCUMENT>

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

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

<DOCUMENT>

 <GREETING>

  Hello From XML

 </GREETING>

 <MESSAGE>

  Welcome to the wild and woolly world of XML.

 </MESSAGE>

</DOCUMENT>

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

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

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

<DOCUMENT>

 .

 .

 .

</DOCUMENT>

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

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

<DOCUMENT>

 <GREETING>

  Hello From XML

 </GREETING>

 .

 .

 .

</DOCUMENT>

После этого я могу добавить еще один элемент, <MESSAGE>, также образующий оболочку над текстовым содержимым:

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

<DOCUMENT>

 <GREETING>

  Hello From XML

 </GREETING>

 <MESSAGE>

  Welcome to the wild and woolly world of XML.

 </MESSAGE>

</DOCUMENT>

Сейчас корневой элемент <DOCUMENT> содержит два элемента — <GREETING> и <MESSAGE>, в каждом из которых имеется текст. Таким образом, я создал новый документ XML.

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

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

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

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

<DOCUMENT>

 <GREETING>

  Hello From XML

 <MESSAGE>

 </GREETING>

  Welcome to the wild and woolly world of XML.

 </MESSAGE>

</DOCUMENT>

Допустимые документы 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);

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*