Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
24.05.2015
Размер:
4.52 Mб
Скачать

Ограничение или расширение составных типов

Разновидности составных типов:

simpleContent – содержит simpleType

complexContent – содержит вложенные элементы

Типы преобразований:

restriction extension

Пример расширения типа

<xsd:element name="book"> <xsd:complexType>

<xsd:attribute name="isbn" type="isbnType"/> </xsd:complexType>

</xsd:element>

<xsd:element name="book"> <xsd:complexType>

<xsd:simpleContent>

<xsd:extension base="xsd:string"> <xsd:attribute name="isbn" type="isbnType"/>

</xsd:extension>

</xsd:simpleContent>

</xsd:complexType>

</xsd:element>

Пример расширения типа

<xs:complexType name="address"> <xs:sequence>

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

</xs:sequence>

</xs:complexType>

<xs:complexType name="USAddress"> <xs:complexContent>

<xs:extension base="address"> <xs:sequence>

<xs:element name="state" type="xs:string" /> </xs:sequence>

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

</xs:complexContent>

</xs:complexType>

Создание пустых элементов

<image source=“picture.gif” height=“256” width=“512”/>

<xsd:element name=“image”>

<xsd:complexType>

<xsd:complexContent>

<xsd:restriction base=“xsd:anyType”> <xsd:attribute name=“source” type=“xsd:string”/> <xsd:attribute name=“height” type=xsd:decimal”/> <xsd:attribute name=“width” type=xsd:decimal”/>

</xsd:restriction>

</xsd:complexContent>

</xsd:complexType>

</xsd:element>

Повторное использование

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

xsd:group xsd:attributeGroup

Определения групп должны иметь атрибут name, а ссылки на них – атрибут ref

Проверка действительности документов XML при помощи DTD

<HTML>

<HEAD><TITLE>Using DTD</TITLE></HEAD> <BODY>

<CENTER><H1>Using DTD</H1></CENTER> <SCRIPT LANGUAGE="JavaScript">

var doc = new ActiveXObject("MSXML2.DOMDocument.4.0"); doc.validateOnParse = true;

if (doc.load(“xml-doc.xml”))

document.write("<p>The document is valid.</p>"); else {

document.write("<p>The document is not valid.</p>"); if (doc.parseError.errorCode != 0)

document.write("<p>Error: " + doc.parseError.reason + "</p>");} </SCRIPT>

</BODY>

</HTML>

Проверка действительности документов XML при помощи XSD

<HTML>

<HEAD><TITLE>Using XML Schemas</TITLE></HEAD> <BODY>

<CENTER><H1>Using XML Schemas</H1></CENTER> <SCRIPT LANGUAGE="JavaScript">

var schemaCache = new ActiveXObject("MSXML2.XMLSchemaCache.4.0"); schemaCache.add("", “schema.xsd");

var doc = new ActiveXObject("MSXML2.DOMDocument.4.0"); doc.schemas = schemaCache;

doc.validateOnParse = true;

if (doc.load(“xml-doc.xml"))

document.write("<p>The document is valid.</p>"); else {

document.write("<p>The document is not valid.</p>"); if (doc.parseError.errorCode != 0)

document.write("<p>Error: " + doc.parseError.reason + "</p>");} </SCRIPT>

</BODY>

</HTML>

Резюме: сравнение DTD и XSD

 

DTD

XSD

 

 

 

Синтаксис

EBNF

XML 1.0

 

 

 

Поддержка DOM

Отсутствует

Есть

 

 

 

Типизация

Слабая

Сильная

данных

 

 

 

 

 

Расширяемость

Отсутствует

Неограниченная

 

 

 

Поддержка

Нет – только одно DTD

Да – с использованием

нескольких

на документ

пространств имѐн

словарей

 

 

 

 

 

Динамические

Нет – DTD применяется

Да – схемы можно

схемы

только для чтения

модифицировать во

 

 

время работы

 

 

 

Соседние файлы в папке Презентации и примеры