Модель содержимого элемента
Под моделью содержимого в схеме данных понимают описание всех допустимых объектов XML- документа, использование которых внутри данного элемента является корректным. Модель содержимого определяется инструкциями, расположенными внутри блока <elementType>.
<elementType id="article">
<attribute name="id" atttype="ID">
<element type="#title">
<string/>
</elementType>
Для этого правила корректным будет являться следующий фрагмент документа:
<article id="0">
<title>Психи и маньяки в Интернет</title>
</article>
Вложенные элементы описываются при помощи инструкции element, в которой параметром type указывается класс объекта - ссылка на его определение:
<elementType id="article">
<element type="#title"/>
<element type="#author"/>
</elementType>
Если требуется указать режим использования вложенного элемента, то надо определить параметр occurs:
<elementType id="article">
<element type="#title" occurs="REQUIRED"/>
<element type="#author" occurs="OPTIONAL"/>
<element type="#subject" occurs="ONEORMORE"/>
</elementType>
Возможные значения этого параметра таковы:
- REQUIRED - элемент должен быть обязательно определен
- OPTIONAL - использование элемента не является обязательным
- ZEROORMORE - вложенный элемент может встречаться несколько раз или ни разу
- ONEORMORE - элемент должен встречаться хотя бы один раз
Примеры правильных XML-документа, использующих приведенную выше схему:
<article>
<title>Зачем он нужен, XML?</title>
<author>Иван Петров</author>
<subject>Что такое XML</subject>
<subject>нужен ли он нам</subject>
</article>
или
<article>
<title>Зачем он нужен, XML?</title>
<subject>Что такое XML</subject>
</article>
Кроме элементов, содержимым XML-документа могут также является обычный текст и области CDATA. Для обозначения типов содержимого текущего элемента в схемах используются следующие инструкции:
- <string/> - указывает на то, что содержимым элемента является только свободная текстовая информация(секция PCDATA) :
<elementType id="flower">
<string/>
</elementType>
- <any/> - указывает на то, что содержимым элемента должны являться только элементы, без текста, незаключенного ни в один элемент:
<elementType id="issue">
<any/>
</elementType>
- <mixed> - любое сочетание элементов и текста
<elementType id="contacts">
<mixed/>
</elementType>
- <empty> - пустой элемент
Пример:
<elementType id="title">
<string/>
</elementType>
<elementType id="chapter">
<string/>
</elementType>
<elementType id="chapters-list">
<any/>
</elementType>
<elementType id="content">
<element type="#chapters-list" occurs="OPTIONAL">
</elementType>
<elementType id="article">
<mixed><element type="#title"></mixed>
<element type="#content" occurs="OPTIONAL">
</elementType>
О типах данных, которые можно определять с помощью схем, мы поговорим чуть позже
[Назад]
[Содержание]
[Вперед]
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|