Спонсор: Microsoft
Воронежский государственный университет
Опубликован: 04.02.2009 | Доступ: свободный | Студентов: 1 / 0 | Оценка: 4.14 / 3.78 | Длительность: 19:54:00
Самостоятельная работа 11:

Структура XML документа. XML схемы

< Лекция 10 || Самостоятельная работа 11: 12345 || Лекция 11 >
Аннотация: Цель работы: знакомство со структурой XML-документа, основами синтаксиса языка и методами контроля содержимого документа с помощью схем

XML документ можно представить в виде древовидной структуры, которая начинается с "корня" и заканчивается "листьями".

Ниже приведен пример XML документа:

<?xml version="1.0" encoding="Windows-1251"?>
<mail>
<to>user1@domain.ru</to>
<from>user2@domain.ru </from>
<subject>Встреча</subject>
<body>Позвони мне завтра утром</body>
</mail>

В первой строке помещена XML декларация, описывающая версию XML и используемую кодировку

В следующей строке описан корневой элемент документа.

В последующих четырех строках описаны 4 дочерних элемента относительно корневого: ( to, from, subject и body ).

И в последней строке указывается конец корневого элемента.

XML документ должен содержать корневой элемент, который является родительским для всех остальных элементов. Любой элемент (кроме находящихся на самом нижнем уровне дерева) может иметь вложенные элементы (дочерние элементы).

С помощью терминов родитель, дочерний и потомок описываются отношения между элементами в дереве XML документа. Родители содержат дочерние элементы, а дочерние элементы одного уровня называются потомками (братьями или сестрами).

Элементы могут иметь текстовое содержимое и атрибуты.

Ниже приведена схема, показывающая отношения между элементами и атрибутами этого документа:


Кроме того в XML документе следует выполнять еще несколько несложных правил:

  • Каждый XML элемент иметь закрывающий тэг.
  • XML тэги чувствительны к регистру.
  • Должны соблюдаться правила вложенности элементов.
  • XML документы должны иметь корневой элемент, который является родительским для всех других элементов.
  • Значения XML атрибутов должны заключаться в двойные кавычки.

Некоторые из символов (их всего 5) имеют специальное значение в XML. Для их обозначения используются альтернативные сочетания:

замена символ
&lt; <
&gt; >
&amp; &
&apos; '
&quot; "

Комментарии в XML выделяются также как и в HTML:

<!-- Это комментарий -->

В отличие от HTML, который игнорирует повторы пробелов, XML сохраняет полную длину строки из пробелов.

XML документы, оформленные в соответствии с приведенными выше правилами, называются "правильно оформленными". Если при этом они еще и соответствуют правилам DTD (Document Type Definition), то они являются и "действительными".

Действительные XML документы содержат ссылку на DTD файл, например:

<!DOCTYPE note SYSTEM "mail.dtd">

DTD схема предназначена для определения структуры XML документа путем задания списка допустимых элементов, например

<!DOCTYPE mail [
  <!ELEMENT note (to,from,subject,body)>
  <!ELEMENT to      (#PCDATA)>
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT subject (#PCDATA)>
  <!ELEMENT body    (#PCDATA)>
]>

Консорциум W3C поддерживает альтернативную к DTD, основанную на XML схему, называемую как " XML Schema ":

<xs:element name="mail">
<xs:complexType>
  <xs:sequence>
    <xs:element name="to"      type="xs:string"/>
    <xs:element name="from"    type="xs:string"/>
    <xs:element name="subject" type="xs:string"/>
    <xs:element name="body"    type="xs:string"/>
  </xs:sequence>
</xs:complexType>
</xs:element>

Для проверки действительности XML документа можно использовать специальные валидаторы, например W3C валидатор (http://validator.w3.org/). Для проверки схем также существуют специальные валидаторы, например XML Schema валидатор (http://www.w3.org/2001/03/webdata/xsv).

Согласно спецификации W3C XML программа должна прекратить обработку XML документа, как только будет обнаружена ошибка в этом документе.

< Лекция 10 || Самостоятельная работа 11: 12345 || Лекция 11 >
Михаил Олифиренко
Михаил Олифиренко
Александр Табачук
Александр Табачук

Это только у меня не работает кнопочка "Получить код DreamSpark"? Пишет "временно не доступно..." А когда заработает?