xml схема

Корректность и валидность XML-документов

XML-документ может быть корректным и валидным.

Корректные XML-документы (well-formed) — документы, полностью соответствующие правилам оформления XML. Корректность проверяется XML-парсером.

Валидные XML-документы (valid) — корректные XML-документы, которые соответствуют заранее определенному набору правил. Валидность проверяется валидатором. Т.е. проверка идет на основе какого-то шаблона, образца.

Чтобы определить валидность xml-документа, нужно автору этого документа описать его структуру: DTD – Document Type Definition (определение типа документа) и XML-схему.

Пример DTD

<!ELEMENT catalog (book+)>
<!ELEMENT book (title, author+, price,
exists?)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT exists (#PCDATA)>
<!ATTLIST price currency CDATA #IMPLIED>

Из примера видим, что есть корневой элемент catalog. Внутри него могут содержаться только элементы book+ (+ — значит минимум 1 и до бесконечности). Внутри элемента book находятся элементы title (только один), author (минимум 1 и до бесконечности), price, exists? (либо 0, либо 1). А внутри этих вложенных документов может лежать только текст (строки №3-6). Далее у price есть атрибут currency, который необязателен и включает в себя текст, который не анализируется парсером, т.е. как-будто в одинарных кавычках (строка №7).

Потом этот документ вставляется в xml:

<?xml version="1.0"?>
<!DOCTYPE catalog SYSTEM "catalog.dtd">

XML-схема

<xs:schema xmlns:xs=
"http://www.w3.org/2001/XMLSchema">
<xs:element name="страна"type="Страна"/>
<xs:complexType name="Страна">
<xs:sequence>
<xs:element name="название"type="xs:string"/>
<xs:element name="население"type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

Сейчас чаще используют более продвинутую xml-схему, чем DTD. По сути xml-схема — это обычный xml-документ. Но здесь появляется обозначение типов данных (string, decimal). Можно делать комплексные типы (по аналогии с php-массивом, где есть именованные и нумерованные ячейки).

По коду: есть элемент страна по типу ‘страна’. Далее в строку №4 идет описание этого типа: он состоит из простых типов — элемент название и элемент население (строки №6,7).

<страна xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="country.xsd">
<название>Франция</название>
<население>59.7</население>
</страна>



Добавить комментарий

Ваш e-mail не будет опубликован.