МУ_ЛР_ЛиПОАС. Методические указания по выполнению лабораторных работ по дисциплине (модулю) Лингвистическое и программное обеспечение автоматизированных систем
Скачать 2.76 Mb.
|
2.9. Язык XML Sсhema Definition (XSD)Язык XML Schema Definition (XSD) основан на XML и обладает более широкими возможностями описания структуры документа, чем DTD. Он поддерживает типизацию данных, пространства имен, регулярные выражения. XML Schema содержит описание элементов и атрибутов XMLдокумента, правила наследования элементов, включая порядок и количество потомков, тип содержимого элементов, типы данных элементов и атрибутов, значения элементов и атрибутов и дополнительные ограничения на значения. Кроме того, использование XML Schema обеспечивает трансформацию XML-документа в иерархию объектов определенных типов, доступ к которым может быть осуществлен программным способом с помощью интерфейса (функциональность PSV1). Основным преимуществом языка XML Schema является поддержка строго типизированных данных. При обмене данными между различными приложениями и базами данных задача согласования типов данных всегда остается актуальной, поскольку в разных системах определения типов данных могут отличаться. К таким отличиям относятся: максимальное и минимальное возможные значения, наибольшая длина, поддержка дробных чисел, внутренняя кодировка и внешний формат (например, для даты и времени). Таким образом, несмотря на возможное совпадение названий типов данных, их реализация в различных продуктах может отличаться. Применение типов данных в схемах позволяет проводить необходимую верификацию данных документа при обмене или совместном использовании данных несколькими системами. Данные пособие не является подробным руководством по языку XML Schema, поэтому здесь мы ограничимся только базовыми сведениями о языке XSD, которые необходимы для понимания последующего материала. XML Schema всегда создается в отдельном файле, имеющем расширение xsd. Файл XML связывается с соответствующей схемой с помощью атрибута schemaLocation пространства имен схемы. Для того чтобы использовать атрибут schemaLocation, необходимо определить пространство имен схемы. Все эти определения указываются в корневом элементе документа XML. <КорневойЭлемент xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:schemaLocation="Схема.xsd"> Рассмотрим основные элементы структуры XML Schema. Корневым элементом всегда является элемент Таблица 2.8 Описание атрибутов элемента
Корневой элемент < notation> — содержит определение нотации, описывающей формат не-XML-данных в XML-документе; XML Schema поддерживает три основные категории типов данных: предопределенные примитивные типы — фундаментальные типы данных, на которые можно ссылаться и применять их к элементам и атрибутам. Примерами примитивных типов данных являются String, Float, Double, Time, Date, Decimal, AnyURI; предопределенные производные типы — встроенные типы, полученные на основании примитивных типов. Примерами производных типов данных являются Integer, Long, Byte, Short, nonPositiveInteger, nonNegativeInteger, ID и др.; нестандартные типы — определяемые пользователем типы данных, которые создаются на основании примитивных или производных типов путем введения дополнительных ограничений. Поддержка нестандартных типов данных исключительно полезна для верификации данных с учетом бизнес-логики. Для описания элементов и атрибутов, имеющих предопределенные (примитивные и производные) типы данных, в XML Schema используются следующие синтаксические конструкции: Дополнительно для элементов и атрибутов можно указать атрибуты fixed или default для задания фиксированных значений элементов/атрибутов или значений по умолчанию. Если необходимо описать нестандартный тип данных для элемента или атрибута, то это следует делать с помощью тега объединения (union) простых типов; использования списка (list) простых типов. Новые нестандартные простые типы данных получают путем: сужения (restriction) встроенного или ранее определенного Описание нестандартного типа данных Пример использования нового простого типа данных, полученного путем сужения предопределенного типа (на базовый тип String накладываются ограничения на максимально и минимально допустимую длину строки): Пример использования нового простого типа данных, полученног о путем объединения базовых типов (элемент или атрибут могут при- нимать неотрицательные или неположительные целые значения): Пример использования списка простых типов (атрибут shoeSizes объявляется в качестве списка, содержащего десятичные значения 10.5, 9, 8 и 11): Язык XML Schema использует различные типы ограничений на данные (см. табл. 2.6): ограничения длины (количество символов); границы значений (наибольшее и наименьшее значения как диапазон или порог); ограничения количества цифр десятичного числа (общее количество цифр или количество цифр после запятой); список допустимых значений; шаблоны; обработка символов пробела. Примеры использования различных ограничений приведены в табл. 2.9. Таблица 2.9 Примеры использования ограничений
Элементы, имеющие простой тип или предопределенные стандартные типы, могут содержать только данные (не могут содержать атрибутов и дочерних элементов). Любой простой тип данных может содержать произвольный набор ограничений, который определяется бизнес-логикой приложения, работающего с данными. Если простому типу данных присвоено имя, то ссылка на новый нестандартный тип данных может быть использована многократно в пределах данной схемы (аналогично ссылке на предопределенные типы данных). В данном примере определен нестандартный тип данных с именем «Код», базирующийся на типе «string»: он использован как тип данных для элементов «Код1» и «Код2». Для описания элементов XML-документа, содержащих дочерние элементы и атрибуты, в схеме используется сложный тип данных, который задается с помощью тега Описание сложного типа данных При описании сложного типа указываются порядок вхождения дочерних элементов (с помощью специальных тегов — индикаторов порядка, см. табл. 2.9), а также степень кардинальности повторяющихся элементов (с использованием атрибутов minOccurs и maxOccurs). Атрибут minOccurs определяет минимальную степень кардинальности, то есть наименьшее возможное количество повторений дочернего элемента. Значение minOccurs, равное нулю, указывает на необязательность (опциональность) элемента. Атрибут maxOccurs определяет максимальную степень кардинальности, или наибольшее количество повторений элемента. Максимальная и минимальная степени кардинальности задаются определенными значениями. Для maxOccurs может быть указано значение unbounded (элемент встречается любое количество раз). В данном примере описан сложный тип данных для элемента «Книга», содержащего дочерние элементы «Название», «Автор», «Код», «Цена». Тег Таблица 2.10 Теги индикатора порядка
Индикатор порядка choice указывает, что элемент этого типа «Цена» может содержать либо элемент «Рубли», либо элемент «Доллары», но не оба. |