XML Schema Definition Language (XSD)
Download
Report
Transcript XML Schema Definition Language (XSD)
XML Schema Definition
Language (XSD)
Презентацию подготовил Габдрахманов Рамиль,
гр.950б
Схемы XSD решают следующие задачи
Перечисление элементов в документе XML и проверка наличия в
документе объявленных элементов.
Объявление и определение атрибутов, модифицирующих элементы
документа.
Определение родительско-дочерних отношений между элементами.
Определение состояний и моделей содержания для элементов и
атрибутов.
Задание типов данных.
Установка значений по умолчанию.
Возможность расширения.
Поддержка использования пространств имен.
Примеры элементов простого и сложного
типов
Простой тип:
<message>Remember to buy milk on the way home from work</message>
<delivery>email</delivery>
Сложный тип:
<message number="10" date="2001-07-29" from="Kathy Shepherd">
Remember to buy milk on the way home from work
<receipt>
<complete/>
</receipt>
</message>
Пространства имен XSD
Листинг 1. Схема XSD для проверки документа message01.xsd
1: <?xml version="1.0"?>
2: <xsd:schema
3: xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
4 : elementFormDefault="qualified">
5: <xsd:element name="note" type="xsd:string"/>
6: </xsd:schema>
Листинг 2. Экземпляр XML, в котором показано пространство инен XSD,
message01.xml.
1: <?xml version="1.0"?>
2: <note
3:
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
4:
xsi:noNamespaceSchemaLocation="message01.xsd">
5:
Remember to buy milk on the way home from work
6: </note>
Простые типы данных, используемые в схемах
XSD
Простой тип
string
normalizedString
byte
unsignedByte
base64Binary
hexBinary
integer
positivelnteger
negativelnteger
nonNegativelnteger
nonPositivelnteger
decimal
float
double
boolean
time
dateTime
duration
date
gMonth
gYear
gYearMonth
gDay
gMonthDay
Name
Описание
Буквенно-цифровая строка
Строка без пробелов
-1126
0,126
GpM7
OFB7
-126789, -1, 0, 1, 126789
1,126789
-1267879,-1
О, 1, 126789
-1267879,-1,0
-1.23, 0, 123.4, 1000.0
-INF, -1E4, -0, 0, 12.78E-2, 12, INF, Nan
-INF, -1E4, -0, 0, 12.78E-2, 12, INF, Nan
True, false, 1, 0
13:20:00.000, 13:20:00.000-5:00
1999-05-31T1313:20:00.000-5:00
P1Y2M3DT10H30M12.S3
1999-05-31
-051999
1999-02
—31
-05-31
shipTo
Примеры с элементами сложных типов
Листинг З. Документ XML, в котором содержится элемент с вложенным элементом, message02.xml
1: <?xml version="l.0"?>
2: <note
3: xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
4: xsi:noNamespaceSchemaLocation="message02.xsd">
5: <message>Remember to buy milk on the way home from work</message>
6: </note>
Листинг 4. Схема XSD, содержащая элемент xsd:ComplexType, message02. xsd
1: <:?xml version="l. 0"?>
2: <xsd:schema
3: xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
4 : <xsd:element name="message" type="xsd:string"/>
5: <xsd:element name="note">
6:
<xsd:complexType>
7:
<xsd:sequence>
8:
<xsd:element ref="message"/>
9:
</xsd:sequence>
10: </xsd:complexType>
11: </xsd:element>
12: </xsd:scheraa>
Ограничения вхождений в схемах XSD
Листинг 5. Экземпляр XML со сложным вложением message03. xml
1: <?xml version-"l. 0"?>
2: <note
3: xmlns:xsi="http://www.w3.org/2 000/10/XMLSchema-instance"
4: xsi:noNamespaceSchemaLocation="message03.xsd">
5: <notes>
6:
<number/>
7:
<message>Remember to buy milk on the way home from work</message>
8:
<message>Skim Milk is preferred</message>
9: </notes>
10: <notes>
11: <number/>
12: <message>Pick up shirts from the cleaners</message>
13: <message>Got to the bank</message>
14: <message>Cut the lawn</message>
15: </notes>
16: </note>
Ограничения вхождений в схемах XSD
Листинг 6. Атрибуты minOccur и maxOccur в схеме XSD — messageO3. xsd
1: <?xml version="l.0"?>
2: <xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
3:
<xsd:element name="message" type="xsd:string"/>
4:
<xsd:element name="number"/>
5:
<xsd:element name="note">
6:
<xsd:complexType>
7:
<xsd:sequence>
8:
<xsd:element name="notes" minOccurs="0" maxOccurs="2"/>
9:
</xsd:sequence>
10:
</xsd:complexType>
11: </xsd:element>
12: <xsd:complexType name="notesType">
13:
<xsd:sequence>
14 :
<xsd:element ref="number"/>
15:
<xsd:element ref="message" maxOccurs="unbounded"/>
16:
</xsd:sequence>
17: </xsd:complexType>
18: </xsd:schema>
Атрибуты в схемах XSD
Листинг 7. Использование нескольких атрибутов message04.xml
1: <?xml version="l.0"?>
2: <note
3: xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
4: xsi:noNamespaceSchemaLocation="message04.xsd">
5: <message number="10" date="2001-07-29" from="Kathy Shepherd">
6:
Remember to buy milk on the way home from work
7: </message>
8: </note>
Атрибуты в схемах XSD
Листинг 8. Схема XSD для проверки экземпляра XML с несколькими атрибутами
message04.xsd.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<?xml version="l.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
<xsd:complexType name="messageType">
<xsd:simpleContent>
<xsd:restriction base="xsd:string">
<xsd:attribute name="number" type="xsd:integer" use="required"/>
<xsd:attribute name="date" type="xsd:date" use="required"/>
<xsd: attribute name=“from" type="xsd : string" use="required"/>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
<xsd:element name="note">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="message" type="messageType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
The End.