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

ЖАНРЫ

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

Шрифт:

<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="#"?>

<!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><!--В перигелии-->

Поделиться с друзьями: