69055

Формирование описания документа с помощью схем

Лекция

Информатика, кибернетика и программирование

Элемент age может быть проверен на принадлежность его содержимого заданному типу (PCDATA), поэтому содержимое обоих дескрипторов будет считаться правильным, т.е. при использовании DTD нельзя осуществить проверку как на соответствии определенному типу данных...

Русский

2014-09-29

271 KB

1 чел.

 12

Лекция 4-03

4.1.11. Формирование описания документа с помощью схем

4.1.12. Типы данных схемы XML

4.1.13. Встроенные типы данных схемы XML

 4.1.13.1. Примитивные типы данных

 4.1.13.2. Производные типы данных

4.1.14. Абстрактная модель данных схемы XML

4.1.15. Структура схемы

 4.1.15.1. Элемент <schema>

 4.1.15.2. Включение внешних фрагментов в схему

 4.1.15.3. Включение схемы в документ XML

4.1.11. Формирование описания документа с помощью схем

Использование DTD позволяет определить структуру документа, однако не позволяет задать ограничения для содержимого элемента или атрибута документа. Например, если элемент age задан с помощью следующего определения:

<!ELEMENT age (#PCDATA)>

то в документе XML можно задать следующие дескрипторы:

<age>25</age>

<age>привет</age>

Элемент age может быть проверен на принадлежность его содержимого заданному типу (PCDATA), поэтому содержимое обоих дескрипторов будет считаться правильным, т.е. при использовании DTD  нельзя осуществить проверку как на соответствии определенному типу данных (например, целому числу), так и ограничения на значения содержимого (например, диапазон изменения числа).  В этом случае проверка правильности содержимого дескриптора возлагается на приложение, использующее XML-документ.

Кроме того, при задании DTD используется один синтаксис, а при создании документа XML – другой синтаксис.

Чтобы преодолеть указанные недостатки DTD, консорциум W3 разработал спецификацию XML Schema (схема XML).

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

Спецификация XML Schema была принята консорциумом W3 в 2001 году. Вторая редакция спецификации (XML Schema Second Edition) принята в октябре 2004 года. В настоящее время консорциум W3 разрабатывает новую спецификацию – XML Schema 1.1.

4.1.12. Типы данных схемы XML

В отличие от DTD, в схеме XML определены различные типы данных. Типы данных в этой схеме разделяются на:

  •  атомарные (atomic) наборы данных;
  •  списки (list);
  •  объединения (unions).

Атомарные типы данных содержат одно данное и в свою очередь делятся на примитивные и производные (определяемые в терминах других типов данных).

Список является конечным набором атомарных значений. Список является производным типом данных и используемый в нем  атомарный тип данных определяется как itemType. Элементы списка в наборе отделяются друг от друга пробельными символами.

В отличие от списка, объединение включает в себя элементы различных типов данных (эти типы данных определяются как memberTypes данного объединения). Так же, как и список, объединение является производным типом данных.

Типы данных разделяются также на встроенные (определены спецификации схемы XML) и пользовательские типы данных – типы данных, определяемые пользователем для своей конкретной схемы.

Тип данных в схеме XML включает три компонента:

  •  набор значений, называемый пространством значений (value space);
  •  набор лексических представлений, называемый лексическим пространством (lexical space);
  •  набор свойств (facets), характеризующих пространство значений.

Каждое значение в пространстве значений типа данных обозначается одним или несколькими литералами в лексическом пространстве.

Пространство значений типа данных может быть определено одним из следующих способов:

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

Лексическое пространство представляет собой набор действительных литералов для данного типа данных. Например, 100 и 1.0E2 являются двумя различными литералами из лексического пространства float, которые обозначают одну и ту же величину. Учитывая данную неоднозначность в схеме XML введено каноническое лексическое представление – это такой набор литералов из допустимого полного набора литералов для данного типа, для которого существует однозначное соответствие  между литералами в этом представлении и значениями в пространстве значений.

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

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

Фундаментальными свойствами являются следующие свойства:

  •  equal  (равенство и неравенство величин в пространстве значений);
  •  ordered (полное или частичное отношение упорядоченности величин в пространстве значений);
  •  bounded (ограниченность пространства значений по минимуму, по максимуму или и по минимальному и по максимальному значению);
  •  cardinality (конечность или счетная бесконечность пространства имен);
  •  numeric (тип данных является числовым или нечисловым).

В схеме XML определены следующие ограничивающие свойства:

  •  length (длина – зависит от типа данных, например для строки – количество символов в строке, для списка – количество элементов списка);
  •  minLength и maxLength (минимальное и максимальное значение свойства length);
  •  pattern (шаблон – регулярное выражение, ограничивающее пространство значений, для формирования шаблона используются те же правила, что и в языке Perl);
  •  enumeration (ограничение пространства имен с помощью заданного набора значений);
  •  whiteSpace (ограничивает пространство значений типов данных, производных от типа string, причем свойство может иметь одно из трех значений: preserve – строка не меняется, replace – символы табуляции, новой строки и возврата каретки заменяются пробелами, collapse – после обработки строки, производимой для значения replace, в строке удаляются все пробелы в начале и конце строки, а также несколько пробелов внутри строки заменяются одним пробелом);
  •  maxInclusive и  minInclusive (включающая верхняя и нижняя граница пространства значений для набора данных со свойством ordered,т.е. значение границы входит в пространство значений);
  •  maxExclusive и  minExclusive (исключающая верхняя и нижняя граница пространства значений для набора данных со свойством ordered,т.е. значение границы не входит в пространство значений);
  •  totalDigits и fractionDigits (положительные числа, определяющие максимальное количество цифр в числе и его дробной части для типов данных, производных от decimal).

4.1.13. Встроенные типы данных схемы XML

Встроенные типы данных схемы XML образуют иерархию, представленную на рисунке 4.1.5.

Встроенные типы данных схемы XML определены в пространстве имен:

http://www.w3.org/2001/XMLSchema.

Встроенные типы данных разделяются на примитивные типы данных и производные типы данных.

4.1.13.1. Примитивные типы данных

Тип данных string определяет символьную строку. Пространством значений для string является конечный набор символов. Для типа string определены ограничивающие условия length, minLength, maxLength, pattern, enumeration и whiteSpace.

Тип данных boolean определяет логические данные и может иметь следующие литеральные значения: true, false, 1 и 0 (Каноническими значениями являются true и false). Для типа boolean определены ограничивающие условия pattern и whiteSpace.

Тип данных decimal представляет десятичные числа с произвольной точностью, например, -1.23, 12678967.543233, 210. и +100000.00. Для типа decimal определены ограничивающие условия totalDigits, fractionDigits, pattern, enumeration, whiteSpace, maxInclusive, maxExclusive, minInclusive и minExclusive.

Рис. 4.1.5. Встроенные типы данных схемы XML

Типы данных float и double представляют числа с плавающей точкой соответственно  одинарной и двойной точности, например, -1E4, 1267.43233E12, 12.78e-2, 12. Кроме числовых значений, для типов float и double определены специальные значения INF и INF (положительная и отрицательная бесконечность), а также значение NaN (не число). Для типов float и double определены ограничивающие условия pattern, enumeration, whiteSpace, maxInclusive, maxExclusive, minInclusive и minExclusive.

Тип данных duration представляет продолжительность времени. Пространством значений этого типа является шестимерное пространство, координаты которого – грегорианский год, месяц, день, час, минута и секунда. Лексическим представлением типа duration является:

PnYnMnDTnHnMnS 

где  nY – количество  лет, nM – количество месяцев, nD – количество дней, nH – количество часов, nM – количество минут, nS – количество секунд, например, продолжительность в 1 год, 2 месяца, 3 для, 10 часов и 30 минут записывается следующим образом:

P1Y2M3DT10H30M.

Для типа duration определены ограничивающие условия pattern, enumeration, whiteSpace, maxInclusive, maxExclusive, minInclusive и minExclusive.

Типы данных date, time и  dateTime представляют временные данные: дату время и отметку даты и времени.

Тип date представляет календарную дату в формате

CCYY-MM-DD

где  CCYY – год, MM – месяц, DD – день, например:    2002-12-30.

Тип time представляет время в формате

hh:mm:ss.sssзнакHH:MM 

где  hhчасы, mm – минуты, ss.sss – секунды, знак – символ "+"или "-", показывающий опережение или отставание местного времени по сравнению с координированным универсальным временем – UTC (Coordinated Universal Time), например:

 13:20:00+02:00.

Доли секунды и смещение времени относительно UTC можно опустить.

Тип данных dateTime объединяет дату и время в одном типе данных и имеет следующий формат:

CCYY-MM-DDThh:mm:ss.

например:

2002-12-30T13:20:00

Для типов date, time и  dateTime определены ограничивающие условия pattern, enumeration, whiteSpace, maxInclusive, maxExclusive, minInclusive и minExclusive.

Типы gYear, gMonth и gDay представляют собой грегорианский год, месяц и день. Их лексическими представлениями являются значения  соответственно CCYY, -MM- и -DD из формата представления типа данных date, например:

2006 – год 2006;

-08 – месяц – август;

-12 – число – 12.

 

Для типов gYear, gMonth и gDay определены ограничивающие условия pattern, enumeration, whiteSpace, maxInclusive, maxExclusive, minInclusive и minExclusive.

Типы gYearMonth и gMonthDay представляют собой пары значений  <год,месяц> и <месяц,день>. Их лексическими представлениями являются значения  соответственно CCYY-MM, -MM-DD из формата представления типа данных date, например:

2007-11 – ноябрь 2007 года;

-05-07 – 7 мая.

Для типов gYearMonth и gMonthDay определены ограничивающие условия pattern, enumeration, whiteSpace, maxInclusive, maxExclusive, minInclusive и minExclusive.

Типы hexBinary и base64Binary представляют собой шестнадцатеричные данные (тип base64Binary представляет данные, закодированные с использованием алгоритма Base64 Content-Transfer-Encoding). Шестнадцатеричные данные представляются с помощью цифр, а также букв A-F (прописных или строчных), например, "0FB7".

Для типов hexBinary и base64Binary определены ограничивающие условия length, minLength, maxLength, pattern, enumeration, whiteSpace.

Тип данных anyURI определяет идентификатор унифицированного ресурса URI (Uniform Resource Identifier), например, "http://www.company.com". Для типа anyURI определены ограничивающие условия length, minLength, maxLength, pattern, enumeration и whiteSpace.

Тип данных QName определяет квалифицированное имя XML, т.е. имя, перед которым указан префикс пространства имен, например xsd:element. Для типа QName определены ограничивающие условия length, minLength, maxLength, pattern, enumeration и whiteSpace.

Тип данных NOTATION определяет тип атрибута нотации. Пространство значений этого типа данных совпадает с пространством значений типа QName. Данные типа NOTATION напрямую не используются в схеме XML, а только в типах данных, производных от типа NOTATION. Для типа NOTATION определены ограничивающие условия length, minLength, maxLength, pattern, enumeration и whiteSpace.

4.1.13.2. Производные типы данных

Тип данных normalizedString является производным от типа string. Пространство значений типа normalizedString – это набор строк, не содержащих символов табуляции, перехода на новую строку и возврата каретки.  Для типа normalizedString определены ограничивающие условия length, minLength, maxLength, pattern, enumeration и whiteSpace.

Тип данных token является производным от типа normalizedString. Пространство значений типа token – это набор строк, не содержащих символов табуляции и перехода на новую строку, а также пробелов в начале или в конце строки. Кроме того, внутри строки не должно быть больше двух пробелов подряд.    Для типа token определены ограничивающие условия length, minLength, maxLength, pattern, enumeration и whiteSpace.

Тип данных language является производным от типа token. Пространство значений типа language – это набор строк, содержащих правильные идентификаторы языка, например, "uk", "ru" или "en-us". Для типа language определены ограничивающие условия length, minLength, maxLength, pattern, enumeration и whiteSpace.

Тип данных Name является производным от типа token. Пространство значений типа Name – это набор строк, соответствующих определению имени в XML (последовательность букв, цифр, а также символов '.', '-', '_' и ':', причем первым символом имени должна быть  буква или символ '_' или символ ':'). Для типа Name определены ограничивающие условия length, minLength, maxLength, pattern, enumeration и whiteSpace.

Тип данных NCName является производным от типа token. Пространство значений типа NCName – это набор строк, соответствующих определению имени в пространстве имен XML (последовательность букв, цифр, а также символов '.', '-' и '_', причем первым символом имени должна быть  буква или символ '_'). Для типа NCName определены ограничивающие условия length, minLength, maxLength, pattern, enumeration и whiteSpace.

Типы данных ID , IDREF и IDREFS определяют типы атрибутов ID , IDREF и IDREFS из DTD. Производным типом для ID и IDREF является тип данных token, а для IDREFS – тип IDREF. Пространство значений типов ID и IDREF – это набор строк, соответствующих типу NCName, а пространство значений типа IDREFS – это набор лексем типа IDREF. Для типов ID , IDREF и IDREFS определены ограничивающие условия length, minLength, maxLength, pattern, enumeration и whiteSpace.

Типы данных NMTOKEN и NMTOKENS определяют типы атрибутов NMTOKEN и NMTOKENS из DTD. Производным типом для NMTOKEN является тип данных token, а для NMTOKENS – тип NMTOKEN. Пространство значений типа NMTOKEN – это набор строк, соответствующих определению типа атрибута NMTOKEN в DTD, а пространство значений типа NMTOKENS – это набор строк типа  NMTOKEN. Для типов NMTOKEN и NMTOKENS определены ограничивающие условия length, minLength, maxLength, pattern, enumeration и whiteSpace.

Типы данных ENTITY и ENTITIES определяют типы атрибутов ENTITY и ENTITIES из DTD. Производным типом для ENTITY является тип данных NCName, а для ENTITIES – тип ENTITY. Пространство значений типа ENTITY – это набор строк, соответствующих определению типа атрибута NCName в DTD, а пространство значений типа ENTITIES – это набор строк типа NMTOKEN. Для типов ENTITY и ENTITIES определены ограничивающие условия length, minLength, maxLength, pattern, enumeration и whiteSpace. 

Типы данных integer, long, int, short и byte определяют целые числа (со знаком).

Тип данных integer является производным от класса decimal, в котором значение свойства fractionDigits равно 0. Тип данных long является производным от типа integer, у которого значение maxInclusive   установлено в 9223372036854775807, а значение minInclusive  в -9223372036854775808. Тип данных int является производным от типа long, у которого значение maxInclusive     установлено  в  2147483647,  а  значение   minInclusive  установлено  в -2147483648. Тип данных short является производным от типа int, у которого значение maxInclusive     установлено  в  32767,  а  значение   minInclusive  –  в -32768. Тип данных byte является производным от типа short, у которого значение maxInclusive     установлено  в  127,  а  значение   minInclusive  –  в -128.

Для  типов integer, long, int, short и byte определены ограничивающие условия totalDigits, fractionDigits, pattern, enumeration, whiteSpace, maxInclusive, maxExclusive, minInclusive и minExclusive.

Типы данных nonPositiveInteger, negativeInteger,  nonNegativeInteger и positiveInteger являются производными от типа integer.

Тип данных nonPositiveInteger получается установкой значения свойства maxInclusive   в 0, тип данных negativeInteger получается установкой maxExclusive в 0, тип данных nonNegativeInteger  получается установкой minInclusive в 0, а тип данных positiveInteger получается установкой minExclusive в 0. Для этих типов определены ограничивающие условия totalDigits, fractionDigits, pattern, enumeration, whiteSpace, maxInclusive, maxExclusive, minInclusive и minExclusive.

Типы данных unsignedLong, unsignedInt, unsignedShort и unsignedByte определяют целые числа без знака.

Тип данных unsignedLong является производным от типа nonNegativeInteger, у которого значение maxInclusive   установлено в 18446744073709551615. Тип данных unsignedInt является производным от типа unsignedLong, у которого значение maxInclusive     установлено  в  4294967295. Тип данных является производным от типа unsignedInt, у которого значение maxInclusive     установлено  в  65535. Тип данных unsignedByte является производным от типа unsignedShort, у которого значение maxInclusive     установлено  в  255.

4.1.14. Абстрактная модель данных схемы XML

Схема XML состоит из компонент, таких как компоненты определения и компоненты объявления. Если компонент не имеет содержимого, то его можно задавать как пустой элемент. Компоненты объявления связываются с помощью уточненного имени с элементами, которые необходимо проверить. Компоненты определения задают внутренние компоненты схемы, которые используются в других компонентах схемы. Некоторые виды компонент могут иметь целевое пространство имен (target namespace).    

Компоненты схемы XML разбиты на три группы:

  •  первичные компоненты (primary components);
  •  вторичные компоненты (secondary components);
  •  справочные компоненты ("helper" components).

В группу первичных компонент входят:

  •  определения простого типа (simple type definitions);
  •  определения сложного (комплексного) типа (complex type definitions);
  •  объявления атрибутов (attribute declarations);
  •  объявления элементов (element declarations).

Вторичными компонентами являются:

  •  определения группы атрибутов (attribute group definitions);
  •  определения ограничений (identity-constraint definitions);
  •  определение группы моделей (model group definitions);
  •  объявления нотации (notation declarations).

В группу справочных компонент входят:

  •  Аннотации (annotations);
  •  Группы моделей (model groups);
  •  Частицы (particles);
  •  Шаблоны (wildcards);
  •  Использования атрибутов (attribute uses).

Схема взаимодействия компонент представлена на рисунке.

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

За исключением определения ur-типа, любое определение является ограничением или расширением другого определения типа. Определение типа, чьи объявления находятся в отношении «один к одному» с другим заданным определением типа, каждый из которых ограничивает возможности того объявления, к которому он относится, называется ограничением (например, уменьшенные диапазоны величин). Определение комплексного типа, которое допускает дополнительные элементы или атрибуты по сравнению с указанным определением типа, называется расширением. Определение типа, на котором основано ограничение или расширение другого типа, называется базовым определением.

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

Объявление комплексного типа – это набор объявлений атрибутов и типа содержимого, применимого к атрибутам и потомкам элемента. Каждый комплексный тип является либо ограничением другого комплексного типа, либо расширением другого простого или комплексного типа, либо ограничением определения ur-типа.

В абстрактной модели определено три вида объявлений: элементы, атрибуты и нотации.

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

В XML 1.0 имя и содержание элемента должно точно соответствовать типу элемента в соответствующей модели содержания. С помощью механизма групп подстановки элементов схемы XML обеспечивают более мощную модель для подстановки одного именованного элемента вместо другого. Любое объявление элемента на верхнем уровне может служить определяющим элементом, или заголовком, для группы подстановки элементов.  Другие элементы верхнего уровня, независимо от целевого пространства имен, могут быть определены, как члены группы подстановки, возглавляемой этим элементом.  Все члены группы должны иметь либо одинаковые определения типа, либо должны являться расширениями ли ограничениями главы группы. В результате, ссылка на главу группы означают также ссылку на всех членов группы.  Группы подстановки не являются отдельными компонентами, а определены как значения свойств для определения элементов.

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

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

Компоненты группы моделей, частицы и шаблона вносят вклад в ту часть определения сложного типа, которая контролирует содержание компонента информационного элемента.

Группа моделей является ограничителем в форме грамматического фрагмента, который применяется к спискам  компонент информационных элементов. Существуют три разновидности групп моделей:

  •  последовательность (компоненты информационных элементов соответствуют частицам в заданном порядке);
  •  конъюнкция (компоненты информационных элементов соответствуют частицам в любом порядке);
  •  дизъюнкция (компоненты информационных элементов соответствуют одной из частиц).

Частица – это терминальный элемент в грамматике для содержимого элемента, состоящий либо из объявления элемента, шаблона или группы моделей вместе с ограничителями.  

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

Шаблон является специальным видом частицы, который сопоставляет   компоненты информационных элементов атрибута или элемента, учитывая их пространство имен, а не локальные имена.

Определение ограничения связывает имя с одним из нескольких разновидностей ограничений относящихся к уникальности и ссылкам. Все разновидности используют выражения XPath для выбора наборов информационных элементов.

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

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

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

Аннотация является информацией для человека или машины. Ее интерпретация определяется обработчиком документа XML (в частности она может просто игнорироваться).

4.1.15. Структура схемы

4.1.15.1. Элемент <schema>

Схема представляется в XML как один или более документов схемы, т.е. одним или более информационных элементов <schema>. Каждый документ схемы содержит определения типов и объявления элементов, которые имеет общее пространство имен. Документ схемы, который имеет один или более элементов <import>, соответствует схеме, компоненты которой имеют более одного  целевого пространства имен.

Элемент имеет следующий формат:

<schema

attributeFormDefault = (qualified | unqualified) : unqualified

elementFormDefault = (qualified | unqualified) : unqualified

blockDefault = (#all | List (extension | restriction |

substitution)) : ''

finalDefault = (#all | List (extension | restriction)) : ''

xmnls[:префикс] = anyURI

targetNamespace = anyURI 

id = ID 

version = token 

xml:lang = language

>

 ((include | import | redefine | annotation)*, 

(((simpleType | complexType | group | attributeGroup) | element | attribute | notation),

annotation*)*)

</schema>

Атрибут attributeFormDefault указывает,  должны ли в объявлениях атрибутов использоваться имена с префиксом пространства имен. Если значение этого атрибута unqualified, то все объявления локальных атрибутов не должны иметь префиксов пространства имен, а если значение равно qualified, то все объявления атрибутов в схеме должны содержать префиксы пространства имен. Если атрибут не указан, то его значение по умолчанию равно unqualified.

Атрибут elementFormDefault действует аналогично атрибуту attributeFormDefault, но по отношению к объявлениям элементов в схеме.

Атрибут blockDefault  запрещает замену элементов в схеме элементами их групп подстановки (значение substitution) или запрещает замену элементов их производными типами (значение restriction) или запрещает замену элементов, элементами тех типов, для которых данные типы являются производными (значение extension), если же задано значение #all, то блокируются все приведенные выше замены.

Атрибут finalDefault  действует аналогично атрибуту block, но блокирует только замены типа restriction и/или extension.

Атрибут xmnls задает одно или более пространство имен, используемое в этой схеме. Обычно в качестве префикса берется значение xsd, а в качестве значения атрибута – URI описания элементов схемы на сайте W3:

"http://www.w3.org/2001/XMLSchema".

Если префикс не задан, элементы схемы можно использовать без префикса пространства имен.

Атрибут targetNamespace задает идентификатор целевого пространства имен, т.е. элементы в этой схеме определены в пространстве имен по адресу URI. Если параметр не указан, то пространство имен, для документа XML, сформированного в соответствии с данной схемой, не определено.

Необязательные атрибуты id, version и xml:lang задают соответственно идентификатор элемента, версию и язык схемы XML.    

4.1.15.2. Включение внешних фрагментов в схему

Включение  в схему XML внешнего фрагмента с тем же целевым пространством имен выполняется  с помощью элемента <include>, который имеет следующий формат:

<include

  id = ID 

 schemaLocation = anyURI 

>

   (annotation?)

</include>

где атрибут id присваивает элементу уникальное имя (необязательный параметр), а атрибут schemaLocation задает местоположение вставляемого фрагмента, например:

<xsd:include schemaLocation="LibraryBook.xsd"/>

Если необходимо вставить в схему XML внешний фрагмент с другим целевым пространством имен, то эта операция выполняется  с помощью элемента <import>, который имеет следующий формат:

<import

  id = ID 

namespace = anyURI

 schemaLocation = anyURI

> 

   (annotation?)

</import>

который, помимо атрибутов id и schemaLocation, имеющих тот же смысл, что и для элемента <include>, задается атрибут namespace, указывающий местонахождение ресурса для пространства имен, например:

<import namespace="http://www.w3.org/1999/xhtml"

schemaLocation="myHTML.xsd"/>

Для переопределения существующих компонент компонентами внешнего фрагмента используется компонент <redefine>, имеющий следующий формат:

<redefine

  id = ID 

  schemaLocation = anyURI 

   (annotation | (simpleType | complexType | group | attributeGroup))*

</redefine>

где атрибуты id и schemaLocation, имеют тот же смысл, что и для элемента <include>.

Пример:

<xs:redefine schemaLocation="v1.xsd">

4.1.15.3. Включение схемы в документ XML

Для включения схемы в документ XML в спецификации определены атрибуты, schemaLocation или noNamespaceSchemaLocation, которые задают URI включаемой схемы. Эти атрибуты могут быть заданы в любом элементе документа XML (обычно задаются в корневом элементе). Наряду с одним из атрибутов schemaLocation или noNamespaceSchemaLocation, в элементе должен быть задан атрибут     xmnls  (с префиксом или без префикса), имеющий значение:

 "http://www.w3.org/2001/XMLSchema-instance".

Первый атрибут включает схему, для которой в дескрипторе <schema> задан атрибут  targetNamespace. Второй атрибут  включает схему, для которой не задано целевое пространство имен, т.е. в дескрипторе <schema> не задан атрибут  targetNamespace.

Примеры:

1. Пример использования атрибута schemaLocation:

1.1. Описание схемы (файл Library.xsd):

<?xml version="1.0"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"

           targetNamespace="http://www.library.org"

           xmlns="http://www.library.org"

           elementFormDefault="qualified">

</xsd:schema>

1.2. Включение схемы в документ XML:

<?xml version="1.0"?>

<Library xmlns="http://www.library.org"

        xmlns:xsi=

"http://www.w3.org/2001/XMLSchema-instance"

        xsi:schemaLocation=

              "http://www.library.org Library.xsd">

</Library>

2. 1. Пример использования атрибута noNamespaceSchemaLocation:

2.1. Описание схемы (файл simple.xsd):

<?xml version = "1.0"?>

<xsd:schema xmlns:xsd =

"http://www.w3.org/2001/XMLSchema">

 

</xsd:schema>

2.2. Включение схемы в документ XML:

<vehicles

   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"

   xsi:noNamespaceSchemaLocation = "simple.xsd">

</vehicles>

Файл: file:///web/1/5fan/public_html/www/files/13/5fan_ru_69055_a2ca3b8045f69c24092be6256204c89b.doc   Создан: 2008-02-10T08:10:00Z Модифицирован: 2008-02-10T08:10:00Z     Автор:


 

А также другие работы, которые могут Вас заинтересовать

18305. Логіка, 2 клас. Експериментальний навчальний посібник 3.45 MB
  Логіка 2 клас. Експериментальний навчальний посібник. Київ: Початкова школа 2002 112 с Кожна людина прагне передати свої думки іншим. Для того щоб інші розуміли плин твоїх думок треба чітко їх висловлювати. Якщо думку людини неможливо зрозуміти то кажуть: В його мірк
18308. ЛОГІКА З клас Експериментальний навчальний посібник 1.75 MB
  Олександр Митник ЛОГІКА З клас Експериментальний навчальний посібник Любий друже Дякую тобі що взяв до рук цю книгу. Отож ти вирішив продовжити освоювати стежки знань і мудрості. До цієї мандрівки запрошуються діти які люблять міркувати і прагнуть опанувати мис...
18310. ЛОГІКА 4 клас Експериментальний навчальний посібник 2.47 MB
  Митник О.Я. М 66 Логіка 4 клас. Навчальний посібник. Київ: Початкова школа 2009. 80 с. ІЗВМ 9789668087332 Навчальний посібник Логіка для 4 класу є продовженням певної системи ознайомлення дітей з основними поняттями сучасної логіки з основними видами логічних задач які...
18311. Умовиводи 97.5 KB
  Практичне заняття № 6 Тема: Умовиводи. І. Перетворення. Теоретичні питання. 1. Умовивід його структура. 2. Перетворення та його суть. 3. Схема перетворення для стверджувального судження загального і часткового. 4. Перетворення заперечного судження та його схема ...
18312. Математика. Практикум. Ч 1 3.21 MB
  Коберник Г.І. Чирва Г.М. Математика. Практикум. Ч 1. – Умань: РВЦ Софія 2009. – 185 с. Навчальний посібник написаний згідно навчальної програми курсу €œМатематика€ для педагогічних вузів спеціальності €œПочаткова освіта€. Посібник містить навчальну програму з цього
18313. Математика. Практикум. Ч ІІ 1.3 MB
  Коберник Г.І. Чирва Г.М. Математика. Практикум. Ч ІІ. – Умань: РВЦ Софія 2009. – 185 с. Навчальний посібник написаний згідно навчальної програми курсу €œМатематика€ для педагогічних вузів спеціальності €œПочаткова освіта€. Посібник містить навчальну програму з цьог