Your SlideShare is downloading. ×
0
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
XML Schema
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

XML Schema

4,353

Published on

Описание XML Schema стандарта и его применение в разработке фирмы Magnetosoft

Описание XML Schema стандарта и его применение в разработке фирмы Magnetosoft

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,353
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
19
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. XML схема (XML Schema) [email_address] Фёдор Малышкин
  • 2. Фазы использования
    • Конфигурация (всё пока нормально)
      • малое использование
      • код писался одним человеком
      • большой вопрос по необходимости, вообще
    • Веб-сервисы (мелкие странности)
      • скрытие деталей библиотеками JAXB & JAX-WS
    • Клерки (начинаются проблемы)
      • ОЧЕНЬ много XML данных
      • Отсутствие общей договорённости о форматах XML
      • Регрессионные ошибки при изменении форматов
      • Сложность поддержания модульных тестов в актуальном состоянии (проекты “eks-scripts” & “docFlow-engine” )
  • 3. ОЧЕНЬ много XML данных
    • <inbox action=&quot;new-inbox-item&quot; format=&quot;standart&quot;> <from>fromId</from>
    • <to>toId</to> <route>REVIEW</route> <item>docId-123</item>
    • <cause>TO_REVIEW</cause> <to-date>2008-05-15T15:46:49.081+04:00</to-date> <tag>route-id:route-id</tag>
    • <tag>action:review</tag> <tag>reviewer:reviewerId</tag> <tag>parent-route-id:incomingRouteId</tag>
    • <tag>parent-klerk:INCOMING</tag> <extended>
    • <comment>comment</comment> <file-attachment>file-id-01</file-attachment>
    • </extended> <operation type=&quot;reply&quot; id=&quot;reply-yes-no&quot; behaviour=&quot;close-on-reply&quot;>
    • <yes-no> <data-validator klerk=&quot;REVIEW&quot; question=&quot;ValidateData_review&quot;/>
    • </yes-no> </operation>
    • <operation type=&quot;action&quot; id=&quot;action-start-instruction&quot;>
    • <start-workflow workflow='INSTRUCTION'>
    • <parent-route-id>new assigned to review id</parent-route-id>
    • <parent-klerk>REVIEW</parent-klerk>
    • <parent-user>b470e114-a0be-46ee-bba5-aee66c52e349</parent-user>
    • </start-workflow> </operation> </inbox>
  • 4. Отсутствие общей договорённости о форматах XML
    • <parent-route-id>parent_route_id</parent-route-id>
    • <parent-klerk>ORDER</parent-klerk>
    • <parent-user>parent_user_id</parent-user>
    • и
    • <tag>route-stage:ASSIGNMENT</tag>
    • <tag>parent-route-id:parentRouteId</tag>
    • <tag>parent-klerk:CONTRACT</tag>
  • 5. Регрессионные ошибки при изменении форматов XML
  • 6. Сложность поддержания модульных тестов в актуальном состоянии
  • 7. XML Schema (XML схема )
    • XML Schema – название стандарта, формат и синтаксис XML документа, описывающий XML структуры.
    • Можно сказать, что это правила (типа регулярных выражений). Потом по этим правилам проверяется – соответствует ли XML документ этим правилам?
    • XML документ может сам заявлять, что он соответствует определённой схеме.
  • 8. Какие проблемы решит
    • Моментальная проверка существующих XML на соответствие новым правилам (быстрая корректировка кодов по провалившимся тестам)
    • Единообразие XML данных – уменьшение количества и упрощение кода по работе с XML
    • Создание общего словаря с аналитиками, которые всё же хотят знать какие данные передаются между клерками.
  • 9. XML документ со схемой
    • <rootElement xmlns=&quot;http://ru.sefer/schema/1&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://ru.sefer/schema/1 http://ru.sefer/schema/1.xsd&quot; >
    • xmlns – пространство имён по-умолчанию
    • schemaLocation – местоположение схемы
  • 10. Введение
    • Схема определяет список элементов и атрибутов, которые могут быть использованы в документе.
    • Она также определяет порядок, в котором они появляются в XML и их типы.
    • Язык описания XML Schema – XML Schema Definition (XSD)
  • 11. Преимущества
    • XSD обеспечивает больше контроля над структурой и типами, чем DTD .
    • XSD позволяет создавать собственные типы данных.
    • XSD позволяет накладывать ограничения на данные.
    • Синтаксис схемы такой же как у самого документа - XML .
    • XML схема расширяема.
  • 12. XML Spy
  • 13. Oxygen
  • 14. Типы данных
    • Тип данных определяет, что может храниться внутри элемента .
    • XSD предоставляет ряд предопределённых типов, которые можно классифицировать так :
      • Примитивные : базовые типы .
      • Наследованные : определены с использованием других типов (называемых «базовыми»)
      • Атомарные : примитивные или наследованные, которые не могут быть разбиты на более мелкие куски
      • Списки : наследованный тип, содержащий серию атомарных
      • Объединённые : Результат объединения атомарных типов и списков
  • 15. Элементы
    • Существует 2 тип элементов: простые и сложные.
    • Простой элемент
      • Простой элемент не содержит атрибутов или дочерних узлов
      • Синтаксис объявления простого элмента :
    • <xsd:element name=&quot;element-name&quot; type=&quot;data type&quot; minOccurs=&quot;nonNegativeInteger&quot; maxOccurs=&quot;nonNegativeInteger|unbounded&quot;/>
  • 16.
    • < PRODUCTDATA >
    • < PRODUCT PRODUCTID =&quot;P001&quot; CATEGORY =&quot;BOOKS&quot;>
    • < PRODUCTNAME >Gone With the Wind</ PRODUCTNAME >
    • < DESCRIPTION > The backdrop of this book is the American Civil War</ DESCRIPTION >
    • < PRICE >25.00</ PRICE >
    • < QUANTITY >35</ QUANTITY >
    • </ PRODUCT >
    • </ PRODUCTDATA >
    • <xsd:element name=&quot;PRODUCTNAME&quot; type=&quot;xsd:string&quot;/>
    • <xsd:element name=&quot;DESCRIPTION&quot; type=&quot;xsd:string&quot;/>
    • <xsd:element name=&quot;PRICE&quot; type=&quot;xsd:positiveInteger&quot;/>
    • <xsd:element name=&quot;QUANTITY&quot; type=&quot;xsd:nonNegativeInteger&quot;/>
  • 17. Элементы
    • Сложные элементы
      • Сложные элементы содержат другие элементы, атрибуты и сложный контент.
      • Синтаксис:
      • <xsd:complexType name=&quot;data type name&quot;> Content model declaration
      • </xsd:complexType>
  • 18. Элементы
    • Определение нового простого типа на базу существующего простого типа :
    • <xsd:simpleType name=&quot;phoneno&quot;>
    • <xsd:restriction base=&quot;xsd:string&quot;>
    • <xsd:length value=&quot;8&quot;/>
    • <xsd:pattern value=&quot;d{3}-d{4}&quot;/>
    • </xsd:restriction>
    • </xsd:simpleType >
  • 19. Элементы
    • <xsd:simpleType name=&quot;num&quot;>
    • <xsd:restriction base=&quot;xsd:positiveInteger&quot;>
    • <xsd:maxInclusive value=&quot;400&quot;/>
    • <xsd:minInclusive value=&quot;10&quot;/>
    • </xsd:restriction>
    • </xsd:simpleType>
  • 20. Элементы
    • Элемент, для того, что бы быть объявленным сложным, должен быть ассоциирован со сложным типом
      • Синтаксис :
    • <xsd:element name=“ElementName&quot; type=“ComplexDataType&quot;/>
  • 21. Элементы
    • <xsd:complexType name=&quot;prdt&quot;>
    • <xsd:sequence>
    • <xsd:element name=&quot;PRODUCTNAME&quot; type=&quot;xsd:string&quot;/>
    • <xsd:element name=&quot;DESCRIPTION&quot; type=&quot;xsd:string&quot;/>
    • <xsd:element name=&quot;PRICE&quot; type=&quot;xsd:positiveInteger&quot;/>
    • <xsd:element name=&quot;QUANTITY&quot; type=&quot;xsd:nonNegativeInteger&quot;/>
    • </xsd:sequence>
    • </xsd:complexType>
  • 22. Прекращаем обучение…
    • Полноценное устное обучение XML схемам может занять до 4 часов – так что прекратим.
    • Остались не упомянутыми вопросы:
      • Атрибуты (определение, типы значения и использование)
      • Повторное использование определений в других схемах
      • Пространство имён
      • Типы расширений («расширение» и «ограничение» типа)
  • 23. Где можно углубить свои знания по XML схемам
    • http://www.w3.org
    • Teach Yourself XML in 21 Days
    • Learning XML, 2nd Edition
    • XML tutorial http://www.w3schools.com/w3c/
  • 24. Где можно углубить свои знания по XML схемам
    • Есть в Confluence…
  • 25. Использование в модульных тестах
    • Создан специальный под-проект “big-archive-client-docFlow-schemas”.
    • У проектов “big-archive-client-docFlow-engine” & “big-archive-client-docFlow-scripts” есть зависимости от него со scope “test”.
  • 26. Пример использования
    • @Test
    • public void testValidateResourcePath() throws XMLSchemaValidationException {
      • XMLSchemaValidator testable = XMLSchemaValidator.newInstance(&quot;ru/magnetosoft/bigarchive/client/docflow/schema/assignment-route.xsd&quot;);
      • testable.validateResourcePath(&quot;ru/magnetosoft/bigarchive/client/docflow/schema/assignment-route.xml&quot;);
    • }
    • @Test(expected=XMLSchemaValidationException.class)
    • public void testValidateXml_InvalidXml() throws XMLSchemaValidationException {
      • XMLSchemaValidator testable = XMLSchemaValidator.newInstance(&quot;ru/magnetosoft/bigarchive/client/docflow/schema/assignment-route.xsd&quot;);
      • testable.validateXml(&quot;<tag></tag>&quot;);
    • }
  • 27. Предполагаемое использование в модульных тестах клерков
  • 28. Дополнительные возможности
    • Каждый редактор XML схем ( XML Spy & Oxygen ) могут составлять тестовые данные по схеме: т.е. генерировать XML.

×