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.