Язык XML - практическое введение

       

Модель содержимого элемента


Под моделью содержимого в схеме данных понимают описание всех допустимых объектов 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>

О типах данных, которые можно определять с помощью схем, мы поговорим чуть позже


Содержание раздела