Атрибут элемента XSD

<Complete Reference XML — схемы

Все атрибуты объявлены как простые типы.

В этой главе будет показано, как написать XML-схемы. Вы также узнаете, что схема может быть записана по-разному.

Цель лабораторной работы:

Что такое атрибут?

Простые элементы не могут иметь атрибуты. Если элемент имеет атрибуты, он считается сложного типа. Но сам атрибут всегда объявляется как простого типа.

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

XSD элементы

О применении XSD ограничителей!

Элемент attribute определяет атрибут.

Синтаксис элемента

(Знак ? указывает на то, что элемент может появляться ноль или один раз внутри элемента attribute.)

Атрибуты элемента

Пример №1
В следующем примере декларируется атрибут «code» с ограничениями. Его приемлемым значением может быть строка из двух заглавных букв в диапазоне от A до Z.

Пример №2
Чтобы декларировать атрибут внутри сложного типа, используя существующий атрибут, используют атрибут ref:

Пример №3
У атрибутов можно определять значение по умолчанию ИЛИ фиксированное значение. Значение по умолчанию присваивается атрибуту автоматически, если никакое другое значение не определено. В следующем примере значением по умолчанию будет строка «EN»:

Фиксированное значение также присваивается атрибуту автоматически, если никакое другое значение не определено. Однако, в отличие от значения по умолчанию, если вы определите другое значение, то документ будет считаться невалидным. В следующем примере фиксированным значением будет строка «EN»:

Пример №4
По умолчанию все атрибуты декларируются как не обязательные. Чтобы явно указать, что атрибут не обязательный, используют атрибут use:

Чтобы сделать атрибут обязательным:

Элемент element определяет элемент.

(Знак ? указывает на то, что элемент может появляться ноль или один раз, знак * указывает на то, что элемент может появляться ноль, один или больше раз внутри элемента element.)

Пример №1
В следующем примере декларируется XML схема с четырьмя простыми элементами «fname», «lname», «age» и «dateborn»:

Пример №2
В следующем примере декларируется XML схема с элементом «note» сложного типа. Элемент «note» содержит четыре простых элемента — «to», «from», «heading» и «body»:

Пример №3
Следующий пример аналогичен примеру №2. Разница лишь в том, что для ссылки на имена элементов используется атрибут ref:

Консорциум W3C выработал рекомендацию языка определения схем XML (XSD), объединив наиболее популярные языки описания схем в один стандарт.
Основная цель, которая при этом преследовалась, — получение стандарта, который можно широко реализовать и при этом он платформно-независимый.

Язык XML Schema Definition Language, который также называют XML Schema Language, во многом похож на язык XDR, с которым вы познакомились раньше.
Схемы XSD способны решать следующие задачи:

Корневым элементом в схеме XML является элемент Schema, который содержит все остальные элементы в документе схемы.
В рамках корневого элемента схемы XSD атрибутом xmlns определяется пространство имен XMLSchema,
которое содержит элементы и атрибуты XSD схемы.

Все элементы XSD начинаются с префикса xsd:, который указывается для пространства имен XSD, объявленного в корневом элементе экземпляра схемы.

XML-документ, который проверяется с помощью схемы, также должен содержать объявление пространства имен.
Пространство имен всегда указывается в корневом элементе экземпляра документа с помощью атрибута xmlns:

Это пространство имен содержит элементы и атрибуты XMLSchema, которые можно включать в документ XML.
По общему соглашению префикс xsi используется для этого пространства имен и добавляется в начале имен всех элементов и атрибутов,
принадлежащих пространству имен, отделяясь от них двоеточием.

Процесс создания схемы включает в себя два шага — определение и объявление типов элементов или типов атрибутов. Элементы и атрибуты XML-документа объявляются элементами схемы xsd:element и xsd:attribute. Структура же XML-документа определяется элементами схемы xsd:simpleType и xsd:complexType.

Основное объявление элемента состоит из имени и типа данных

В схемах XSD дескрипторы, используемые в документах XML, разделяются на две категории — сложные типы и простые типы. Элементы сложных типов могут содержать другие элементы, а также обладают определенными атрибутами; элементы простых типов такими возможностями не обладают.

Атрибут — объявление простого типа, которое не может содержать другие элементы. Объявление атрибута похоже на объявление элемента:

Простые типы данных

Есть две главных категории простых типов:

Язык XSD имеет большое количество встроенных простых типов данных.
Встроенные типы включают в себя примитивные типы и производные.
Примитивные типы данных не получены из других типов данных.
Например, числа с плавающей запятой — математическое понятие, которое не получено из других типов данных.
Производные типы данных определены в терминах существующих типов данных.
Например, целое число — частный случай, полученный из десятичного типа данных.

Следующая таблица представляет список примитивных типов данных XML-схемы, аспекты, которые могут быть применены к типу данных и описания типа данных.

Читайте также:  Адреса и телефоны филиалов ФСС в г. Москва и Московской области - Монолит Консалт

Следующая таблица представляет список производных типов данных XML-схемы,
аспекты, которые могут быть применены к типу данных и описания типа данных.

Определённые пользователем простые типы

Получены из встроенных типов, применением к ним именованых ограничений, называемыми аспектами(Facets).
Аспекты ограничивают допустимые значения простых типов. Синтаксис применения аспектов ограничения следующий:

Аспекты могут быть указаны только однажды в определении типа, кроме enumeration и pattern
— они могут иметь многократные вхождения и группируются.

Именованный тип данных

В языке XSD, в отличие от тех двух, с которыми вы познакомились раньше, существует концепция именованных типов.
Например, при создании определения, можно присвоить этому определению имя, чтобы повторно использовать его в схеме XSD.
Вы можете создать определение простого типа simpleType и назвать его, например, txt15pre.
В результате вы получите именованное ограничение. После этого вы сможете применять это ограничение и к другим элементам в схеме.
Это особенно полезно, когда в определении применяются аспекты ограничения типа данных, чтобы не повторять их каждый раз в других определениях.
Например, элемент simpleType может быть связан с элементом Фамилия и атрибутом Телефон
для объявления содержания этих элемента и значения атрибута как строковых данных:

Обратили внимание на ключевое слово required в объявлении атрибута?
Как и в предыдущих схемах, оно все так же означает обязательность использования объявленного атрибута.
Другими предопределенными значениями атрибута use элемента схемы xsd:attribute
могут быть ключевые слова optional и prohibited.
Если первое из них означает необязательность использования, то второе запрещает использование объявленного атрибута.
Такая необходимость возникает в случае локального объявления ранее определенной группы атрибутов элементом схемы xsd:attributeGroup,
например:

далее в контексте определения элемента сложного типа мы делаем ограничение на применение атрибутов этой группы:

Сложные типы данных

Модель содержания элемента сложного типа
— формальное описание структуры и допустимого содержания элемента, которое используется для проверки правильности XML документа.
Модели содержания Схемы предоставляют больший контроль структуры элементов, чем модели содержания DTD.
Кроме того, модели содержания схемы позволяют проверять правильность смешанного содержания.

Модель содержания может ограничивать документ до некоторого набора элементных типов и атрибутов,
описывать и поддерживать связи между этими различными компонентами и уникально обозначать отдельные элементы.
Свободное использование модели содержания позволяет разработчикам изменять структурную информацию.

Перечень объявлений дочерних элементов приводится в структуре группирующих XSD-элементов choice, sequence, и all.

Элемент xsd:choice позволяет только одному из элементов, содержащихся в группе присутствовать в составе элемента.
Элемент xsd:sequence требует появления элементов группы в точно установленной последовательности в составе элемента.
xsd:all элемент позволяет элементам в группе быть (или не быть) в любом порядке в составе элемента.

Определение элемента сложного типа

Определения сложных типов создаются с использованием элемента complexType, его атрибутов и любых допустимых аспектов.
Обычно, сложные типы будут содержать набор элементных объявлений, объявлений атрибутов и элементных ссылок.

Листинг 1. Пример XSD-схемы «Картотека. xsd»

Атрибуты могут иметь значение по умолчанию или фиксированное значение, указанное.

Значение по умолчанию автоматически присваивается атрибут, если не указано другое значение.

В следующем примере значение по умолчанию :

Фиксированное значение также автоматически присваивается атрибут, и вы не можете указать другое значение.

В следующем примере фиксированное значение :

Разделите схемы

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

Следующий метод дизайн основан на определении всех элементов и атрибутов, а затем ссылаясь на них , используя атрибут.

Вот новый дизайн файла схемы :

Как определить атрибут?

Синтаксис определения атрибута:

где ххх это имя атрибута и ууу определяет тип данных атрибута.

XML-схема имеет много встроенных типов данных. Наиболее распространенными типами являются:

Вот XML-элемент с атрибутом:

А вот определение атрибута:

Определение и использование

Элемент атрибута определяет атрибут.

Элемент информации

(Знак? Заявляет, что элемент может появиться ноль или один раз внутри элемента атрибута)

Пример 1

Приведенный выше пример показывает , что атрибут имеет ограничение. Единственное приемлемое значение два заглавными буквами от а до г.

Пример 2

Для того, чтобы объявить атрибут с использованием существующего определения атрибута внутри сложного типа, используйте атрибут:

Пример 3

Атрибуты могут иметь либо значение по умолчанию, либо фиксированное значение, указанное. Значение по умолчанию автоматически присваивается атрибут, если не указано другое значение. В следующем примере значение по умолчанию :

Фиксированное значение также автоматически присваивается атрибут, если не указано другое значение. Но в отличие от значений по умолчанию; если вы укажете другое значение, чем фиксированный, документ считается недействительным. В следующем примере фиксированное значение :

Пример 4

Все атрибуты не являются обязательными по умолчанию. Чтобы явно указать, что атрибут является необязательным, используйте атрибут:

Для того, чтобы атрибут необходимый:

Факультативные и обязательные атрибуты

Атрибуты не являются обязательными по умолчанию. Для того, чтобы указать , что требуется атрибут, используйте атрибут:

W3C парсеры для XML.

Проблемой при валидации (проверка правилоьности XML документа согласно схеме) является тот факт, что соответствие
документов их схемам некоторые броузеры не проверяют. В связи с этим возникает необходимость использовать
возможности DOM (Document Object Model — см. лаб.раб. №5) для проверки правильности. Функция валидации так или
иначе присутствует в любом парсере. Ее необходимо правильно вызвать. Проверить соответствие XDR схеме в ОС
Windows несколько легче, поскольку XML парсер от Microsoft является частью операционной системы. Достаточно
воспользоваться Java скриптом для проверке (как в прошлой лабораторной работе).

Читайте также:  В 1С можно просмотреть полный процесс получения сертификата фсс. Загрузить его в систему и настроить?

XSD является стандартом, поддерживаемым и развиваемым консорциумом W3C. В рамках этой поддержкиThe Apache Software Foundation создала набор ПО, представляющего
собой парсеры и другое обеспечение для работы с XML. Одним из таких
известных парсеров является Xerces. Он существует в
виде отдельного ПО, реализованного на С++ или Java. Чтобы не ограничивать Вас в выборе инструментальной среды и
ОС, будем использовать Java реализацию ввиду ее кроссплатформенности и простоты использования.

Замечание. Для запуска Java приложения необходимо, чтобы на компьютере была установлена Java
машина от Sun. Желательно с Java SDK.

Предположим у нас есть XML документ SONNET. XML

=
=
=

  Shakespeare
  William
  British
  1564
  1616

Sonnet 130

  My mistress’ eyes are nothing like the sun,
  Coral is far more red than her lips red.
  If snow be white, why then her breasts are dun,
  If hairs be wires, black wires grow on her head.
  I have seen roses damasked, red and white,
  But no such roses see I in her cheeks.
  And in some perfumes is there more delight
  Than in the breath that from my mistress reeks.
  I love to hear her speak, yet well I know
  That music hath a far more pleasing sound.
  I grant I never saw a goddess go,
  My mistress when she walks, treads on the ground.
  And yet, by Heaven, I think my love as rare
  As any she belied with false compare.

И есть соответсвенно схема SONNET. XSD

=
=
 
   
      =
      = =
      =
   
    = =
      =
 

=
  =
    =
    =
 

=
 
   
      =
      =
      =
      = =
      = =
   
 

= =
= =
= =
= =
= =
= =
=
 
   
      = = =
   
 

= =

Скомпилировать DOMValidator можно коммандой:

Проверить правильность SONNET. XML относительно схемы SONNET. XSD (должна находится в том же каталоге) можно
коммандой

java DomValidator sonnet.xml xsd

Создание XML-схемы

Теперь мы хотим создать схему для документа XML выше.

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

В схеме выше мы используем стандартные пространства имен , и URI , связанный с этим пространством имен является определение языка схемы, который имеет стандартное значение http://www.w3.org/2001/XMLSchema.

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

Затем мы должны определить элемент в качестве простого типа (так как она не содержит каких — либо атрибутов или других элементов). В типа с префиксом префикс пространства имен , связанного с XML — схемы , которая указывает заранее определенный тип данных схемы:

Далее, мы должны определить два элемента , которые имеют сложного типа: и . Мы начнем с определения элемент:

С помощью схем, которые мы можем определить количество возможных появлений для элемента с MaxOccurs и атрибутами MinOccurs. MaxOccurs определяет максимальное число вхождений для элемента и MinOccurs определяет минимальное число вхождений для элемента. Значение по умолчанию для обоих MaxOccurs и MinOccurs 1!

Теперь мы можем определить элемент. Этот элемент может появляться несколько раз внутри элемента. Это определяется установкой атрибут элемента , что означает , что там может быть много вхождений элемент , как автор хочет. Обратите внимание на то, что элемент не является обязательным. Мы определили это, установив атрибут к нулю:

Теперь мы можем объявить атрибут элемента. Поскольку это обязательный атрибут мы указываем использование = «требуется».

Note: Заявления атрибутов всегда должны прийти в последний раз :

Вот полный список файла схемы под названием :

Ограничения на содержании

Когда XML-элемент или атрибут имеет тип данных, определенный, это накладывает ограничения на содержимое элемента или атрибута.

Если XML — элемент имеет тип и содержит строку типа , элемент не будет проверять.

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

Документа XML

Давайте посмотрим на этот XML — документ под названием :

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

Линия выше: Xmlns: XSI = «http://www.w3.org/2001/XMLSchema-instance» говорит XML-анализатору, что этот документ должен быть проверен на схеме. Линия: XSI: noNamespaceSchemaLocation = «shiporder.xsd» указывает , где находится схемы (here it is in the same folder as «shiporder.xml») что и (here it is in the same folder as «shiporder.xml») .

Задание на лабораторную работу

Необходимо для XML документа, созданого в первой лабораторной работе, определить его струткуру с помощью XSD.
Осуществить проверку соответсвия документа описанию его структуры.

Теоретические сведения

Консорциум W3C выработал рекомендацию языка определения схем XML (XSD), объединив наиболее популярные языки
описания схем в один стандарт. Основная цель, которая при этом преследовалась, — получение стандарта,
который можно широко реализовать и при этом он платформно-независимый.

Читайте также:  Фсс сарапул адрес

Язык XML Schema Definition Language, который также называют XML Schema Language, во многом похож на язык XDR, с
которым вы познакомились раньше. Схемы XSD способны решать следующие задачи:

Корневым элементом в схеме XML является элемент Schema, который содержит все остальные элементы в
документе схемы. В рамках корневого элемента схемы XSD атрибутом xmlns определяется
пространство имен XMLSchema, которое содержит элементы и атрибуты XSD схемы.

Все элементы XSD начинаются с префикса xsd:, который указывается для пространства имен XSD,
объявленного в корневом элементе экземпляра схемы.

XML-документ, который проверяется с помощью схемы, также должен содержать объявление пространства имен.
Пространство имен всегда указывается в корневом элементе экземпляра документа с помощью
атрибута xmlns:

Это пространство имен содержит элементы и атрибуты XMLSchema, которые можно включать в документ
XML. По общему соглашению префикс xsi используется для этого пространства имен и
добавляется в начале имен всех элементов и атрибутов, принадлежащих пространству имен, отделяясь от них
двоеточием.

Ссылка на конкретную схему приводится в атрибуте

Процесс создания схемы включает в себя два шага — определение и объявление типов элементов или типов
атрибутов. Элементы и атрибуты XML-документа объявляются элементами
схемы xsd:element и xsd:attribute. Структура же XML-документа определяется
элементами схемы xsd:simpleType и xsd:complexType.

Основное объявление элемента состоит из имени и типа данных

В схемах XSD дескрипторы, используемые в документах XML, разделяются на две категории — сложные типы и
простые типы. Элементы сложных типов могут содержать другие элементы, а также обладают определенными атрибутами;
элементы простых типов такими возможностями не обладают.

Атрибут — объявление простого типа, которое не может содержать другие элементы. Объявление
атрибута похоже на объявление элемента:

Есть две главных категории простых типов:

Язык XSD имеет большое количество встроенных простых типов данных. Встроенные типы включают
в себя примитивные типы и производные. Примитивные типы данных не получены из других типов
данных. Например, числа с плавающей запятой — математическое понятие, которое не получено из других типов
данных. Производные типы данных определены в терминах существующих типов данных. Например,
целое число — частный случай, полученный из десятичного типа данных.

Следующая таблица представляет список примитивных типов данных XML-схемы, аспекты, которые могут быть применены к
типу данных и описания типа данных.

Следующая таблица представляет список производных типов данных XML-схемы, аспекты, которые могут быть применены к
типу данных и описания типа данных.

Получены из встроенных типов, применением к ним именованых ограничений, называемыми
аспектами(Facets). Аспекты ограничивают допустимые значения простых типов. Синтаксис
применения аспектов ограничения следующий:

Аспекты могут быть указаны только однажды в определении типа,
кроме enumeration и pattern — они могут иметь многократные вхождения и
группируются.

В языке XSD, в отличие от тех двух, с которыми вы познакомились раньше, существует концепция именованных типов.
Например, при создании определения, можно присвоить этому определению имя, чтобы повторно использовать его в
схеме XSD. Вы можете создать определение простого типа simpleType и назвать его,
например, txt15pre. В результате вы получите именованное ограничение. После этого вы сможете
применять это ограничение и к другим элементам в схеме. Это особенно полезно, когда в определении применяются
аспекты ограничения типа данных, чтобы не повторять их каждый раз в других определениях. Например,
элемент simpleType может быть связан с элементом Фамилия и
атрибутом Телефон для объявления содержания этих элемента и значения атрибута как строковых
данных:

Обратили внимание на ключевое слово required в объявлении атрибута? Как и в предыдущих
схемах, оно все так же означает обязательность использования объявленного атрибута. Другими предопределенными
значениями атрибута use элемента схемы xsd:attributeмогут быть ключевые
слова optional и prohibited. Если первое из них означает необязательность
использования, то второе запрещает использование объявленного атрибута. Такая необходимость возникает в случае
локального объявления ранее определенной группы атрибутов элементом схемы xsd:attributeGroup,
например:

Модель содержания элемента сложного типа — формальное описание структуры и допустимого содержания
элемента, которое используется для проверки правильности XML документа. Модели содержания Схемы предоставляют
больший контроль структуры элементов, чем модели содержания DTD. Кроме того, модели содержания схемы позволяют
проверять правильность смешанного содержания.

Модель содержания может ограничивать документ до некоторого набора элементных типов и атрибутов, описывать и
поддерживать связи между этими различными компонентами и уникально обозначать отдельные элементы. Свободное
использование модели содержания позволяет разработчикам изменять структурную информацию.

Перечень объявлений дочерних элементов приводится в структуре группирующих
XSD-элементов choice, sequence, и all.

Элемент xsd:choice позволяет только одному из элементов, содержащихся в группе
присутствовать в составе элемента. Элемент xsd:sequence требует появления элементов группы
в точно установленной последовательности в составе элемента. xsd:all элемент позволяет
элементам в группе быть (или не быть) в любом порядке в составе элемента.

Определения сложных типов создаются с использованием элемента complexType, его атрибутов и любых
допустимых аспектов. Обычно, сложные типы будут содержать набор элементных объявлений, объявлений атрибутов и
элементных ссылок.

Способ третий дизайн определяет классы или типы, что позволяет повторно использовать определения элементов. Это делается путем именования элементов simpleTypes и complexTypes, а затем указать на них через атрибута элемента.

Вот уже третий дизайн файла схемы :

Элемент ограничение указывает на то, что тип данных был получен из пространства имен типа данных XML-схемы W3C. Таким образом, следующий фрагмент означает, что значение элемента или атрибута должно быть значение строки:

Элемент ограничение чаще используется, чтобы применить ограничения к элементам. Посмотрите на следующие строки из приведенной выше схеме:

Это указывает на то, что значение элемента или атрибута должно быть строкой, оно должно быть ровно шесть символов в строке, и эти символы должны быть числом от 0 до 9.

Оцените статью
ФСС Help
Добавить комментарий