• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
XML Schema
 

XML Schema

on

  • 7,235 views

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

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

Statistics

Views

Total Views
7,235
Views on SlideShare
7,220
Embed Views
15

Actions

Likes
1
Downloads
19
Comments
0

1 Embed 15

http://www.slideshare.net 15

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    XML Schema XML Schema Presentation Transcript

    • XML схема (XML Schema) [email_address] Фёдор Малышкин
    • Фазы использования
      • Конфигурация (всё пока нормально)
        • малое использование
        • код писался одним человеком
        • большой вопрос по необходимости, вообще
      • Веб-сервисы (мелкие странности)
        • скрытие деталей библиотеками JAXB & JAX-WS
      • Клерки (начинаются проблемы)
        • ОЧЕНЬ много XML данных
        • Отсутствие общей договорённости о форматах XML
        • Регрессионные ошибки при изменении форматов
        • Сложность поддержания модульных тестов в актуальном состоянии (проекты “eks-scripts” & “docFlow-engine” )
    • ОЧЕНЬ много 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>
    • Отсутствие общей договорённости о форматах 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>
    • Регрессионные ошибки при изменении форматов XML
    • Сложность поддержания модульных тестов в актуальном состоянии
    • XML Schema (XML схема )
      • XML Schema – название стандарта, формат и синтаксис XML документа, описывающий XML структуры.
      • Можно сказать, что это правила (типа регулярных выражений). Потом по этим правилам проверяется – соответствует ли XML документ этим правилам?
      • XML документ может сам заявлять, что он соответствует определённой схеме.
    • Какие проблемы решит
      • Моментальная проверка существующих XML на соответствие новым правилам (быстрая корректировка кодов по провалившимся тестам)
      • Единообразие XML данных – уменьшение количества и упрощение кода по работе с XML
      • Создание общего словаря с аналитиками, которые всё же хотят знать какие данные передаются между клерками.
    • 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 – местоположение схемы
    • Введение
      • Схема определяет список элементов и атрибутов, которые могут быть использованы в документе.
      • Она также определяет порядок, в котором они появляются в XML и их типы.
      • Язык описания XML Schema – XML Schema Definition (XSD)
    • Преимущества
      • XSD обеспечивает больше контроля над структурой и типами, чем DTD .
      • XSD позволяет создавать собственные типы данных.
      • XSD позволяет накладывать ограничения на данные.
      • Синтаксис схемы такой же как у самого документа - XML .
      • XML схема расширяема.
    • XML Spy
    • Oxygen
    • Типы данных
      • Тип данных определяет, что может храниться внутри элемента .
      • XSD предоставляет ряд предопределённых типов, которые можно классифицировать так :
        • Примитивные : базовые типы .
        • Наследованные : определены с использованием других типов (называемых «базовыми»)
        • Атомарные : примитивные или наследованные, которые не могут быть разбиты на более мелкие куски
        • Списки : наследованный тип, содержащий серию атомарных
        • Объединённые : Результат объединения атомарных типов и списков
    • Элементы
      • Существует 2 тип элементов: простые и сложные.
      • Простой элемент
        • Простой элемент не содержит атрибутов или дочерних узлов
        • Синтаксис объявления простого элмента :
      • <xsd:element name=&quot;element-name&quot; type=&quot;data type&quot; minOccurs=&quot;nonNegativeInteger&quot; maxOccurs=&quot;nonNegativeInteger|unbounded&quot;/>
      • < 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;/>
    • Элементы
      • Сложные элементы
        • Сложные элементы содержат другие элементы, атрибуты и сложный контент.
        • Синтаксис:
        • <xsd:complexType name=&quot;data type name&quot;> Content model declaration
        • </xsd:complexType>
    • Элементы
      • Определение нового простого типа на базу существующего простого типа :
      • <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 >
    • Элементы
      • <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>
    • Элементы
      • Элемент, для того, что бы быть объявленным сложным, должен быть ассоциирован со сложным типом
        • Синтаксис :
      • <xsd:element name=“ElementName&quot; type=“ComplexDataType&quot;/>
    • Элементы
      • <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>
    • Прекращаем обучение…
      • Полноценное устное обучение XML схемам может занять до 4 часов – так что прекратим.
      • Остались не упомянутыми вопросы:
        • Атрибуты (определение, типы значения и использование)
        • Повторное использование определений в других схемах
        • Пространство имён
        • Типы расширений («расширение» и «ограничение» типа)
    • Где можно углубить свои знания по XML схемам
      • http://www.w3.org
      • Teach Yourself XML in 21 Days
      • Learning XML, 2nd Edition
      • XML tutorial http://www.w3schools.com/w3c/
    • Где можно углубить свои знания по XML схемам
      • Есть в Confluence…
    • Использование в модульных тестах
      • Создан специальный под-проект “big-archive-client-docFlow-schemas”.
      • У проектов “big-archive-client-docFlow-engine” & “big-archive-client-docFlow-scripts” есть зависимости от него со scope “test”.
    • Пример использования
      • @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;);
      • }
    • Предполагаемое использование в модульных тестах клерков
    • Дополнительные возможности
      • Каждый редактор XML схем ( XML Spy & Oxygen ) могут составлять тестовые данные по схеме: т.е. генерировать XML.