69056

Объявление атрибутов в схеме XML

Лекция

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

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

Русский

2014-09-29

187 KB

1 чел.

 17

Лекция 4-04

4.1.17. Объявление атрибутов в схеме XML

 4.1.17.1. Формат элемента attribute

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

4.1.18. Объявление элементов в схеме XML

 4.1.18.1. Формат объявления элемента element

 4.1.18.2. Элементы unique, selector и field

 4.1.18.3. Элементы key и keyref

4.1.19. Определение комплексного типа в схеме XML

 4.1.19.1. Формат определения элемента complexType

 4.1.19.2. Элементы sequence, any, choice, all и group

 4.1.19.3. Элементы attributeGroup и anyAttribute

 4.1.19.4. Элемент simpleContent

 4.1.19.5. Элемент complexContent

4.1.20. Объявление нотации в схеме XML

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

 4.1.21.1. Элемент schema

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

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

4.1.17. Объявление атрибутов в схеме XML

4.1.17.1. Формат элемента attribute

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

<префикс:attribute

  name = NCName

ref = QName 

type = QName 

default = string

  fixed = string 

  use = (optional | prohibited | required) : optional

    id = ID 

form = (qualified | unqualified)

> 

 (annotation?, (simpleType?))

</префикс:attribute>

Атрибуты в элементе attribute имеют следующий смысл:

  •  name – имя атрибута;
  •  refссылка на объявление атрибута;
  •  type – тип данных значения атрибута;
  •  default – значение атрибута по умолчанию;
  •  fixed – используется для присвоения атрибуту постоянного (фиксированного) значения;
  •  use – используется для того, чтобы указать, что атрибут является необязательным (optional) – значение по умолчанию, обязательным (required) или запрещенным (prohibited).
  •  id – связывает с атрибутом уникальный идентификатор;
  •  form – используется для отмены значения заданного в атрибуте attributeFormDefault элемента schema или в атрибуте form элемента-родителя.

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

Примеры использования элемента attribute:

1. <xs:attribute name="age" type="xs:positiveInteger"

 use="required"/>

Объявление обязательного атрибута age, значение которого – целое положительное число.

2.  <xs:attribute name="RGBColor"

 default="red" use="optional">

<xs:simpleType>

     <xs:restriction>

  <xs:enumeration value="red"/>

<xs:enumeration value="green"/>

<xs:enumeration value="blue"/>

</xs:restriction>

</xs:simpleType>

 </xs:attribute>

Объявление необязательного атрибута RGBColor, значением которого является один из цветов RGB. Значение атрибута по умолчанию – "red".

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

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

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

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

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

Объявления атрибутов schemaLocation и noNamespaceSchemaLocation задают местонахождения схемы соответственно с указанием пространства имен и без указания пространства имен. Значения для этих атрибутов имеют тип данных anyURI.

4.1.18. Объявление элементов в схеме XML

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

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

4.1.18.1. Формат объявления элемента element

Объявление элемента element имеет следующий формат:

<префикс:element

    name = NCName 

ref = QName 

type = QName 

id = ID  

default = string

form = (qualified | unqualified)

fixed = string 

abstract = boolean : false

block = (#all| List(extension | restriction | substitution)) 

  final = (#all | List(extension | restriction)) 

  maxOccurs = (nonNegativeInteger | unbounded)  : 1

  minOccurs = nonNegativeInteger : 1

  nillable = boolean : false

    substitutionGroup = QName

>

   (annotation?, ((simpleType | complexType)?, (unique | key | keyref)*))

</префикс:element>

Атрибуты name, ref, type, id, default, form и fixed в элементе element имеют тот же смысл, что и в элементе attribute (атрибут name является обязательным только в том случае, если родительским элементом данного элемента является элемент schema или элемент redefine). Остальные атрибуты задают следующие свойства:

  •  abstract – указывает, что элемент просто задает другие элементы, которые находятся в его группе подстановки (substitutionGroup);
  •  block – запрещает замену этого элемента элементом его группы подстановки (значение substitution) или запрещает замену этого типа элемента производным сужающим типом  (значение restriction) или расширенным типом (значение extension), если же задано значение #all, то блокируются все приведенные выше замены;
  •  final – действует аналогично атрибуту block, но блокирует только замены типа restriction и/или extension;
  •  maxOccurs – задает максимальное число появлений элемента в документе (элемент может также появляться в документе сколько угодно раз – значение unbounded), по умолчанию элемент может появиться в документе только один раз;
  •  minOccurs – задает минимальное число появлений элемента (по умолчанию значение этого атрибута равно 1);
  •  nillable  указывает, что для элемента недоступно никакое значение, когда для него задается атрибут nil;  
  •  substitutionGroup – указывает, что данный элемент может замещаться элементом, заданным в группе подстановки.

Примеры объявления элементов:

1. <xs:element name="birthDate" type="xs:date"/>

Объявление элемента birthDate (дата рождения) с типом данных date.

2. <xs:element name="author" minOccurs="1" maxOccurs="5">

<xs:simpleType>

     <xs:restriction>

  <xs:pattern

value="[A-Я][а-я]{1,18} [A-Я]\. [A-Я]\.">

</xs:restriction>

</xs:simpleType>

 </xs:element>

Объявление элемента author (автор). Минимальное количество элементов в документе  XML – 1, максимальное – 5. Значением элемента является шаблон для фамилии и инициалов автора.

4.1.18.2. Элементы unique, selector и field

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

<префикс:unique

  id = ID 

  name = NCName 

>

  (annotation?, (selector, field+))

</префикс:unique>

Необязательный атрибут id задает уникальный идентификатор элемента, а обязательный атрибут name – имя элемента.

Дочерний элемент selector элемента unique  определяет выражение  XPath, которое задает набор элементов для ограничений идентификации (элементы unique, key и keyref) и имеет следующий формат:

<префикс:selector 

  id = ID 

  xpath = подмножество-выражений-XPath

>

 (annotation?)

</префикс:selector>

Необязательный атрибут id задает уникальный идентификатор элемента, а обязательный атрибут xpath определяет выражение  XPath относительно объявленного элемента, идентифицирующее элементы, к которым применяются ограничения идентификации.

Дочерний элемент field элемента unique  определяет выражение  XPath, которое задает значение, используемое для определения ограничений идентификации,  и имеет следующий формат:

<префикс:field 

  id = ID 

  xpath = подмножество-выражений-XPath

>

 (annotation?)

</префикс:field>

Необязательный атрибут id задает уникальный идентификатор элемента, а обязательный атрибут xpath определяет единственный элемент или атрибут, содержимое или значение которого используется в качестве ограничения.

Пример использования элементов unique, selector и field:

<xs:unique name="unique-index">

 <xs:selector xpath=".//header"/>

 <xs:field xpath="index"/>

</xs:unique>

Значение элемента index – дочернего элемента header должно быть уникальным.  

4.1.18.3. Элементы key и keyref

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

<префикс:key

  id = ID 

  name = NCName 

>

(annotation?, (selector, field+))

</префикс:key>

Атрибуты id и name имеют тот же смысл, что и для элемента unique.

Пример использования элементов key, selector и field:

<xs:key name="fullName">

<xs:selector xpath=".//person"/>

<xs:field xpath="forename"/>

<xs:field xpath="surname"/>

</xs:key>

В этом примере поля "forename" и  "surname" используются в качестве ключа с именем fullName.

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

<префикс:keyref

  id = ID 

  name = NCName 

 refer = QName

>

 (annotation?, (selector, field+))

</префикс:keyref>

Атрибуты id и name имеют тот же смысл, что и для элемента unique, а обязательный атрибут refer определяет имя ключа или уникального элемента, определенного в данной или другой схеме.

Пример использования элементов keyref, selector и field:

<xs:keyref name="personRef" refer="fullName">

<xs:selector xpath=".//personPointer"/>

<xs:field xpath="@first "/>

<xs:field xpath="@last"/>

</xs:keyref>

В этом примере поля "@first" и  "@last"  соответствуют значениям ключа определенного выше элемента с именем fullName.

4.1.19. Определение комплексного типа в схеме XML

Комплексный элемент типа complexType – это элемент XML, содержащий другие элементы и/или атрибуты. Существует четыре вида комплексных элементов:

  •  пустые элементы;
  •  элементы, содержащие только другие элементы;
  •  элементы, содержащие только текст;
  •  элементы, содержащие и другие элементы, и текст.

4.1.19.1. Формат определения элемента complexType

Определение комплексного типа имеет следующий формат:

<префикс:complexType

  name = NCName

id = ID 

abstract = boolean : false

mixed = boolean : false

  block = (#all| List(extension | restriction)) 

  final = (#all | List(extension | restriction))

>

 (annotation?, (simpleContent | complexContent |

((sequence | group | all | choice)?,

((attribute | attributeGroup)*, anyAttribute?))))

</префикс:complexType>

Атрибуты name и id в элементе complexType имеют тот же смысл, что и в элементе attribute, а атрибуты abstract, block и finalтот же смысл, что и в элементе element. Атрибут mixed определяет, могут ли символьные данные появляться между дочерними элементами определения комплексного типа.

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

  •  элемент simpleContent;  
  •  элемент complexContent;
  •  один из элементов group, all, choice или sequence (0 или 1 раз), один из элементов attribute или attributeGroup (0 и более раз) и элемент anyAttribute (0 или 1 раз).

Рассмотрим дочерние элементы элемента complexType.

4.1.19.2. Элементы sequence, any, choice, all и group

Элемент sequence определяет, что дочерние элементы данного элемента должны появляться в заданной последовательности и имеет следующий формат:

<префикс:sequence

  id = ID 

  maxOccurs = (nonNegativeInteger | unbounded)  : 1

 minOccurs = nonNegativeInteger : 1

>

    (annotation?, (element | group | choice | sequence | any)*)

</префикс:sequence>

Необязательный атрибут id задает уникальный идентификатор элемента, а необязательные атрибуты maxOccurs и minOccurs задают максимальное и минимальное значение для количества включений данной последовательности в родительский элемент.

Пример использования элемента sequence:

<xs:element name="personinfo">

 <xs:complexType>

   <xs:sequence>

     <xs:element name="firstname" type="xs:string"/>

     <xs:element name="lastname" type="xs:string"/>

     <xs:sequence minOccurs="0" maxOccurs="unbounded">

 <xs:element name="child" type="xs:string"/>

</xs:sequence>

   </xs:sequence>

 </xs:complexType>

</xs:element>

В примере задан элемент с именем personinfo (данные о сотруднике). Этот элемент содержит дочерние элементы firstname и lastname, а также последовательность элементов child (ребенок) – эта последовательность может отсутствовать или содержать неограниченное количество элементов child.

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

<префикс:any

  id = ID 

 maxOccurs = (nonNegativeInteger | unbounded)  : 1

  minOccurs = nonNegativeInteger : 1

  namespace = ((##any | ##other) | List (anyURI |

 (##targetNamespace | ##local))) : ##any

  processContents = (strict | lax | skip) : strict

>

 (annotation?)

</префикс:any>

Необязательный атрибут id задает уникальный идентификатор элемента, а необязательные атрибуты maxOccurs и minOccurs задают максимальное и минимальное значение для количества включений элемента any в родительский элемент. Необязательный атрибут namespace определяет пространства имен, содержащих элементы, которые могут быть использованы в родительском элементе, и может иметь одно из следующих значений:

  •  ##any – допустимы элементы из любого пространства имен;
  •  ##other – могут присутствовать элементы из любого пространства имен, отличного от пространства имен, заданного для родительского элемента;
  •  ##local – элементы должны задаваться не из пространства имен;
  •  ##target Namespace  – могут присутствовать элементы из пространства имен, заданного для родительского элемента;
  •  List (anyURI | (##targetNamespace | ##local))) – могут присутствовать элементы из заданного списка.

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

  •  strict – процессор XML должен получить схему необходимых пространств имен и проверить действительность элементов;
  •  lax – аналогично  strict, но если схема не может быть получена, сообщение об ошибке не генерируется;
  •  skip – процессор  XML пропускает  проверку действительности элементов.

Пример использования элемента any:

<xs:element name="person">

 <xs:complexType>

   <xs:sequence>

     <xs:element name="firstname" type="xs:string"/>

     <xs:element name="lastname" type="xs:string"/>

     <xs:any minOccurs="0"/>

   </xs:sequence>

 </xs:complexType>

</xs:element>

С помощью использования элемента any можно расширить содержимое элемента person (после элемента lastname) любым другим элементом.

Элемент choice разрешает задавать в родительском элементе только один из присутствующих в списке элементов и имеет следующий формат:

<префикс:choice

  id = ID 

  maxOccurs = (nonNegativeInteger | unbounded)  : 1

 minOccurs = nonNegativeInteger : 1

>

    (annotation?, (element | group | choice | sequence | any)*)

</префикс:choice>

Необязательный атрибут id задает уникальный идентификатор элемента, а необязательные атрибуты maxOccurs и minOccurs задают максимальное и минимальное значение для количества включений выбранного элемента в родительский элемент.

Пример использования элемента choice:

<xs:element name="employee">

</xs:element>

<xs:element name="freelance">

</xs:element>

 <xs:element name="person">

 <xs:complexType>

   <xs:choice>

     <xs:element ref="employee"/>

     <xs:element ref="freelance"/>

   </xs:choice>

 </xs:complexType>

</xs:element>

Элемент person должен содержать один из описанных ранее элементов: employee (постоянный сотрудник) или freelance (контрактник).

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

<префикс:all

  id = ID 

  maxOccurs = 1  : 1

 minOccurs = (0 | 1) : 1

>

    (annotation?, element*)

</префикс:all>

Необязательный атрибут id задает уникальный идентификатор элемента. Необязательный атрибут maxOccurs должен иметь значение 1, а необязательный атрибут minOccurs задает минимальное значение для количества включений выбранного элемента в родительский элемент (0 или 1).

Пример использования элемента all:

 <xs:element name="person">

 <xs:complexType>

   <xs:all minOccurs="0">

     <xs:element name="firstname" type="xs:string"/>

     <xs:element name="lastname" type="xs:string"/>

   </xs:all>

 </xs:complexType>

</xs:element>

Элементы firstname и lastname могут появляться в элементе в элементе  person в любом порядке и один или оба элемента могут отсутствовать.

Элемент group используется для задания группы элементов в определении комплексного типа и имеет следующий формат:

<префикс:group

id = ID

 name = NCName 

ref = QName

maxOccurs = nonNegativeInteger | unbounded  : 1

minOccurs = nonNegativeInteger : 1

>

(annotation?, (all | choice | sequence)) 

</префикс:group>

Атрибут name задает имя элемента. Он является обязательным только в том случае, если родительским элементом данного элемента является элемент schema или элемент redefine. Атрибут ref задает ссылку на имя другой группы (атрибуты name и ref являются взаимоисключающими). Необязательные атрибуты maxOccurs и minOccurs задают максимальное и минимальное значение для количества включений элементов группы в родительский элемент.

 

Пример использования элемента group:

<xs:group name="custGroup">

 <xs:sequence>

 <xs:element name="customer" type="xs:string"/>

 <xs:element name="orderDetails" type="xs:string"/>

</xs:sequence>

</xs:group>

<xs:element name="order" type="orderType"/>

<xs:complexType name="orderType">

 <xs:group ref="custGroup"/>

 <xs:attribute name="status" type="xs:string"/>

</xs:complexType>

В этом примере определена группа custGroup, состоящая из двух элементов: customer (покупатель) и orderDetails (детали заказа), а затем эта группа использована (с помощью ссылки) в определении комплексного типа orderType.

4.1.19.3. Элементы attributeGroup и anyAttribute

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

<префикс:attributeGroup

  id = ID

 name = NCName 

 ref = QName

> 

(annotation?),((attribute | attributeGroup)*,anyAttribute?))

</префикс:attributeGroup>

Необязательный атрибут id задает уникальный идентификатор элемента. Атрибуты name и ref имеют тот же смысл, что и для элемента group.

 

Пример использования элемента attributeGroup:

<xs:attributeGroup name="personAttrs">

 <xs:attribute name="name" type="xs:string"/>

 <xs:attribute name="age" type="xs:positiveInteger"/>

</xs:attributeGroup>

<xs:complexType name="person">

 <xs:attributeGroup ref="personAttrs"/>

</xs:complexType>

В этом примере в комплексном типе (person личность)  используется определенная ранее группа атрибутов personAttrs для имени и возраста.

Элемент anyAttribute позволяет расширить документ XML атрибутами, которые не определены в схеме, и имеет следующий формат:

<префикс:anyAttribute

  id = ID 

 namespace = ((##any | ##other) | List (anyURI |

 (##targetNamespace | ##local))) : ##any

  processContents = (strict | lax | skip) : strict

>

(annotation?)

</префикс:anyAttribute>

Атрибуты id,  namespace и processContents в этом элементе имеют тот же смысл, что и в элементе any.

Пример использования элемента anyAttribute:

<xs:element name="person">

 <xs:complexType>

   <xs:sequence>

     <xs:element name="firstname" type="xs:string"/>

     <xs:element name="lastname" type="xs:string"/>

   </xs:sequence>

   </xs:anyAttribute>

 </xs:complexType>

</xs:element>

С помощью элемента anyAttribute можно добавить любое число атрибутов в элементе person.

4.1.19.4. Элемент simpleContent

Элемент simpleContent содержит расширения и ограничения для комплексного типа, содержащего только текст или для простого типа, не содержащего элементов, в качестве содержимого.  

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

 <префикс:simpleContent

  id = ID 

>

 (annotation?, (restriction | extension))

</префикс:simpleContent>

Необязательный атрибут id определяет уникальный идентификатор элемента.

В свою очередь, элемент simpleContent может содержать аннотацию и должен содержать один из элементов restriction или extension.

Как и в элементе simpleType, элемент restriction определяет ограничения, но для элемента simpleContent он  имеет следующий формат:

<префикс:restriction

  base = QName 

  id = ID 

>

 (annotation?, (simpleType?, (minExclusive | minInclusive |

 maxExclusive | maxInclusive | totalDigits | fractionDigits |

length | minLength | maxLength |

enumeration | whiteSpace | pattern)*)?, 

((attribute | attributeGroup)*,  anyAttribute?))

</префикс:restriction>

Атрибуты id и base имеют тот же смысл, что и для элемента restriction в simpleType.

 

Пример использования элемента restriction:

<xs:element name="shoeSize">

 <xs:complexType>

   <xs:simpleContent>

       <xs:restriction base="xs:integer">

        <xs:minInclusive value="5"/>

        <xs:maxInclusive value="47"/>

     </xs:restriction>

   </xs:simpleContent>

 </xs:complexType>

</xs:element>

В этом примере объявляется элемент комплексного типа shoeSize (размер обуви) и задаются ограничения на допустимый диапазон размеров обуви.

Элемент extension определяет расширения для элементов  simpleContent и complexContent и имеет следующий формат:

<префикс:extension

  base = QName 

  id = ID 

>

 (annotation?, ((attribute | attributeGroup)*, anyAttribute?)) 

</префикс:extension>

Атрибуты id и base имеют тот же смысл, что и для элемента restriction в simpleContent.

Пример использования элемента extension:

<xs:element name="shoeSize">

 <xs:complexType>

   <xs:simpleContent>

     <xsd:extension base="xs:positiveInteger">

       <xs:attribute name="country" type="xs:string" />

     </xs:extension>

   </xs:simpleContent>

 </xs:complexType>

</xs:element>

В этом примере объявляется элемент комплексного типа shoeSize (размер обуви), содержимое которого имеет целый положительный тип данных и, кроме того, для элемента определен атрибут country (страна) с текстовым содержимым.

4.1.19.5. Элемент complexContent

Элемент complexContent определяет расширения или ограничения для комплексного типа, содержащего только элементы или имеющего смешанное содержимое (текст и элементы). Определение элемента имеет следующий формат:

<префикс:complexContent 

  id = ID 

 mixed = boolean : false 

>

 (annotation?, (restriction | extension))

</префикс:complexContent>

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

Как и для элементов simpleType и simpleContent, элемент restriction для complexContent определяет ограничения, но имеет свой формат определения:

<префикс:restriction

  base = QName 

  id = ID 

>

 (annotation?, (sequence | choice| group | all)?,

((attribute | attributeGroup)*, anyAttribute?)) 

</префикс:restriction>

Атрибуты id и base имеют тот же смысл, что и для элемента restriction в simpleContent.

Дочерний элемент  extension, так же, как и для элемента simpleContent, определяет расширения элемента, но имеет другой формат объявления:

<префикс:extension

  base = QName 

  id = ID 

>

 (annotation?, (sequence | choice| group | all)?,

((attribute | attributeGroup)*, anyAttribute?)) 

</префикс:extension>

Атрибуты id и base имеют тот же смысл, что и для элемента restriction в complexContent.

Пример использования элемента complexContent:

<xs:complexType name="personinfo">

 <xs:sequence>

   <xs:element name="firstname" type="xs:string"/>

   <xs:element name="lastname" type="xs:string"/>

 </xs:sequence>

</xs:complexType>

<xs:complexType name="fullPersonInfo">

 <xs:complexContent>

   <xs:extension base="personInfo">

     <xs:sequence>

       <xs:element name="address" type="xs:string"/>

       <xs:element name="city" type="xs:string"/>

       <xs:element name="country" type="xs:string"/>

     </xs:sequence>

   </xs:extension>

 </xs:complexContent>

</xs:complexType>

В этом примере комплексный тип с именем fullPersonInfo (полная информация о сотруднике) является производным от другого комплексного типа personInfo (информация о сотруднике) с помощью расширения наследуемого типа тремя элементами (address, city и country).

4.1.20. Объявление нотации в схеме XML

Элемент notation описывает формат данных, не являющихся данными XML, в документе XML.

Объявление элемента notation имеет следующий формат:

<префикс:notation

  id = ID 

 name = NCName 

 public = anyURI 

  system = anyURI 

>

 (annotation?)

</префикс:notation>

Для элемента определены следующие атрибуты:

  •  id – уникальный идентификатор элемента (необязательный атрибут);
  •  name – имя элемента (обязательный атрибут);
  •  public – определяет ссылку на общедоступное URI (обязательный атрибут);
  •  system – определяет ссылку на системное URI (необязательный атрибут).

Пример использования элемента notation:

<xs:notation name="gif"

public="image/gif" system="view.exe"/>

<xs:notation name="jpeg" public="image/jpeg"

system="view.exe"/>

<xs:element name="image">

 <xs:complexType>

   <xs:simpleContent>

     <xs:attribute name="type">

       <xs:simpleType>

         <xs:restriction base="xs:NOTATION">

           <xs:enumeration value="gif"/>

           <xs:enumeration value="jpeg"/>

         </xs:restriction>

       </xs:simpleType>

     </xs:attribute>

   </xs:simpleContent>

 </xs:complexType>

</xs:element>

В этом примере задается нотация для изображений в форматах gif и jpeg с использованием программы просмотра view.exe.

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

4.1.21.1. Элемент schema

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

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

<префикс: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 задает одно или более пространство имен, используемое в этой схеме. Обычно в качестве префикса берется значение xs или xsd, а в качестве значения атрибута – URI описания элементов схемы на сайте W3:

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

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

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

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

4.1.21.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.21.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"?>

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

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

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

           elementFormDefault="qualified">

</xs: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"?>

<xs:schema

xmlns:xs="http://www.w3.org/2001/XMLSchema">

</xs: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_69056_c51f0a09633f57829f4cddc8007ac3ba.doc   Создан: 2008-02-13T15:33:00Z Модифицирован: 2008-02-13T15:33:00Z     Автор:


 

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

42857. Веб-браузер. Понятие «Браузерный движок» 1.06 MB
  Так как данная курсовая работа является частью большого информационного проекта мне была дана задача изучить и описать некоторые моменты создания портала которые нужны для обеспечения полноценной работы проекта позволяющего нашим студентам и не только студентам полностью узнать нужную им информацию не отходя от своего персонального компьютера. Данная работа являет собой больше теоретическую основу для создания и полноценной работы нашего портала так как никаких практических...
42858. НОВІ ІНФОРМАЦІЙНІ ТЕХНОЛОГІЇ В ОСВІТІ 379.97 KB
  Однією з найважливіших сфер розвитку євроінтеграції є галузь вищої освіти, де вона набула форм болонського процесу. На сьогодні 46 європейських країн, включно з Україною, є його учасниками. Крім того, значна кількість міжнародних організації підтримують ідеї процесу та сприяють його реалізації.
42862. Проектний тепловий розрахунок рідинно-рідинного теплообміного апарата 112.76 KB
  У трубчатому теплообмінному апараті гаряче трансформаторне масло протікає в середині сталевих трубок діаметром . Кількість трубок . Швидкість руху масла . Трансформаторне масло охолоджується від до. Вода, що охолоджує масло, рухається із швидкістю уздовж трубок, які розташовані у кожусі теплообмінника внутрішнім діаметром D. Повздовжній та поперечній кроки труб у пучку складають.
42864. Розрахунок раціональної структури та використанням парку автотранспортних засобів (АТЗ). 423 KB
  Розрахунок імовірності вимог на використання автомобілів різної вантажопідйомності.Визначення необхідної кількості автомобілів. Отже у даному курсовому проекті ми повинні: з урахуванням правил перевезень обрати необхідну кількість марок автомобілів різної вантажопідйомності; обираємо розташування вантажовідправника та вантажоодержувачів на схемі; знаходимо оптимальний план закріплення вантажовідправників та вантажоодержувачів;обираємо вантажоотримувача за критерієм максимального обсягу перевезень;...
42865. Бесіда як метод навчання, її методичні особливості у вивченні дисципліни “Інформаційні технології” 63.89 KB
  Макаренка Курсова робота з дисципліни: Методика викладання спецдисциплін на тему: Бесіда як метод навчання її методичні особливості у вивченні дисципліни “Інформаційні технологіїâ€ Студента IV курсу 29 БП групи напряму підготовки 0101 Педагогічна освіта...