
- •Лекция 4-04
- •4.2.7. Объявление атрибутов в схеме xml
- •4.2.7.1. Формат элементаattribute
- •4.2.7.2. Встроенные объявления атрибутов
- •4.2.8. Объявление элементов в схемеXml
- •4.2.8.1. Формат объявления элементаelement
- •4.2.8.2. Элементыunique,selectorиfield
- •4.2.8.3. Элементыkeyиkeyref
- •4.2.9. Определение комплексного типа в схемеXml
- •4.2.9.1. Формат определения элементаcomplexType
- •4.2.9.2. Элементы sequence, any, choice, all и group
- •4.2.9.3. ЭлементыattributeGroupиanyAttribute
- •4.2.9.4. ЭлементsimpleContent
- •4.2.9.5. ЭлементcomplexContent
- •4.2.10. Объявление нотации в схемеXml
- •4.2.11. Структура схемы
- •4.2.11.1. Элементschema
- •4.2.11.2. Включение внешних фрагментов в схему
- •4.2.11.3. Включение схемы в документXml
4.2.9.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.2.10. Объявление нотации в схеме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.