Jaxb (xjc) генерация классов из xml schema (xsd) с описаниями классов и полей в виде аннотаций. xjc плагин

Содержание:

Поиск информации в XML файлах (XPath)¶

XPath ( англ. XML Path Language) — язык запросов к элементам
XML-документа. XPath расширяет возможности работы с XML.

XML имеет древовидную структуру. В документе всегда имеется корневой
элемент (инструкция к дереву отношения не имеет).
У элемента дерева всегда существуют потомки и предки, кроме корневого
элемента, у которого предков нет, а также тупиковых элементов (листьев
дерева), у которых нет потомков. Каждый элемент дерева находится на
определенном уровне вложенности (далее — «уровень»). У элементов на
одном уровне бывают предыдущие и следующие элементы.

Это очень похоже на организацию каталогов в файловой системе, и строки
XPath, фактически, — пути к «файлам» — элементам. Рассмотрим пример
списка книг:

<?xml version="1.0" encoding="windows-1251"?>
<bookstore>
   <book category="COOKING">
     <title lang="it">Everyday Italian</title>
     <author>Giada De Laurentiis</author>
     <year>2005</year>
     <price>30.00</price>
   </book>
   <book category="CHILDREN">
     <title lang="en">Harry Potter</title>
     <author>J K. Rowling</author>
     <year>2005</year>
     <price>29.99</price>
   </book>
   <book category="WEB">
     <title lang="en">Learning XML</title>
     <author>Erik T. Ray</author>
     <year>2003</year>
     <price>39.95</price>
   </book>
</bookstore>

XPath запрос вернет следующий результат:

<price>30.00</price>
<price>29.99</price>
<price>39.95</price>

Сокращенная форма этого запроса выглядит так: .

С помощью XPath запросов можно искать информацию по атрибутам. Например,
можно найти информацию о книге на итальянском языке: вернет .

Чтобы получить больше информации, необходимо модифицировать запрос вернет:

<book category="COOKING">
     <title lang="it">Everyday Italian</title>
     <author>Giada De Laurentiis</author>
     <year>2005</year>
     <price>30.00</price>
   </book>

В приведенной ниже таблице представлены некоторые выражения XPath и
результат их работы:

DateTime Тип данных

Тип данных DATETIME используется для указания даты и времени.

DATETIME задается в следующем виде «YYYY-MM-DDThh:mm:ss» , где:

  • YYYY указывает год
  • ММ указывает месяц
  • DD означает день
  • T указывает на начало требуемого времени раздела
  • чч указывает на час
  • мм указывает на минуту
  • сс указывает второй

Note: Все компоненты необходимы!

Ниже приведен пример декларации DATETIME в схеме:

<xs:element name=»startdate» type=»xs:dateTime»/>

Элемент в документе может выглядеть следующим образом:

<startdate>2002-05-30T09:00:00</startdate>

Или это может выглядеть следующим образом:

<startdate>2002-05-30T09:30:10.5</startdate>

Часовые пояса

Чтобы указать часовой пояс, вы можете либо ввести DATETIME во времени UTC, добавив «Z» за время — как это:

<startdate>2002-05-30T09:30:10Z</startdate>

или вы можете задать смещение от времени UTC путем добавления положительного или отрицательного времени за время — как это:

<startdate>2002-05-30T09:30:10-06:00</startdate>
or
<startdate>2002-05-30T09:30:10+06:00</startdate>

Element

Schema is the root element of XSD and it is always required.

<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema">
targetNamespace = "http://www.tutorialspoint.com"

The above fragment specifies that elements used in this schema are defined in http://www.tutorialspoint.com namespace. It is optional.

xmlns = "http://www.tutorialspoint.com"

The above fragment specifies that default namespace is http://www.tutorialspoint.com.

elementFormDefault = "qualified"

The above fragment indicates that any elements declared in this schema must be namespace qualified before using them in any XML Document.It is optional.

Create an XML Schema

Now we want to create a schema for the XML document above.

We start by opening a new file that we will call «shiporder.xsd». To create the schema we could simply follow
the structure in the XML document and define each element as we find it. We will start with the standard XML declaration followed by the xs:schema element that defines a schema:

<?xml version=»1.0″ encoding=»UTF-8″ ?>
<xs:schema xmlns:xs=»http://www.w3.org/2001/XMLSchema»>…
</xs:schema>

In the schema above we use the standard namespace (xs), and the URI
associated with this namespace is the Schema language definition, which has the
standard value of http://www.w3.org/2001/XMLSchema.

Next, we have to define the «shiporder» element. This element has an
attribute and it contains other elements, therefore we consider it as a complex
type. The child elements of the «shiporder» element is surrounded by a
xs:sequence element that defines an ordered sequence of sub elements:

<xs:element name=»shiporder»>
 
<xs:complexType>
   
<xs:sequence>
     

   
</xs:sequence>
 
</xs:complexType>
</xs:element>

Then we have to define the «orderperson» element as a simple type (because it does
not contain any attributes or other elements). The type (xs:string) is prefixed
with the namespace prefix associated with XML Schema that indicates a predefined
schema data type:

<xs:element name=»orderperson» type=»xs:string»/>

Next, we have to define two elements that are of the complex type: «shipto» and
«item». We start by defining the «shipto» element:

<xs:element name=»shipto»>
 
<xs:complexType>
   
<xs:sequence>
     
<xs:element name=»name» type=»xs:string»/>
     
<xs:element name=»address» type=»xs:string»/>
     
<xs:element name=»city» type=»xs:string»/>
     
<xs:element name=»country» type=»xs:string»/>
   
</xs:sequence>
 
</xs:complexType>
</xs:element>

With schemas we can define the number of possible occurrences for an element
with the maxOccurs and minOccurs attributes. maxOccurs specifies the maximum
number of occurrences for an element and minOccurs specifies the minimum number
of occurrences for an element. The default value for both maxOccurs and
minOccurs is 1!

Now we can define the «item» element. This element can appear multiple times
inside a «shiporder» element. This is specified by setting the maxOccurs
attribute of the «item» element to «unbounded» which means that there can be as
many occurrences of the «item» element as the author wishes. Notice that the
«note» element is optional. We have specified this by setting the minOccurs
attribute to zero:

<xs:element name=»item» maxOccurs=»unbounded»>
 
<xs:complexType>
   
<xs:sequence>
     
<xs:element name=»title» type=»xs:string»/>
     
<xs:element name=»note» type=»xs:string» minOccurs=»0″/>
     
<xs:element name=»quantity» type=»xs:positiveInteger»/>
     
<xs:element name=»price» type=»xs:decimal»/>
   
</xs:sequence>
 
</xs:complexType>
</xs:element>

We can now declare the attribute of the «shiporder» element. Since
this is a required attribute we specify use=»required».

Note: The attribute declarations must always come last:

<xs:attribute name=»orderid» type=»xs:string» use=»required»/>

Here is the complete listing of the schema file called «shiporder.xsd»:

<?xml version=»1.0″ encoding=»UTF-8″ ?>
<xs:schema xmlns:xs=»http://www.w3.org/2001/XMLSchema»>
<xs:element name=»shiporder»>
 
<xs:complexType>
   
<xs:sequence>
     
<xs:element name=»orderperson» type=»xs:string»/>
     
<xs:element name=»shipto»>
       
<xs:complexType>
         
<xs:sequence>
           
<xs:element name=»name» type=»xs:string»/>
           
<xs:element name=»address» type=»xs:string»/>
           
<xs:element name=»city» type=»xs:string»/>
           
<xs:element name=»country» type=»xs:string»/>
         
</xs:sequence>
       
</xs:complexType>
     
</xs:element>
     
<xs:element name=»item» maxOccurs=»unbounded»>
       
<xs:complexType>
         
<xs:sequence>
           
<xs:element name=»title» type=»xs:string»/>
           
<xs:element name=»note» type=»xs:string» minOccurs=»0″/>
           
<xs:element name=»quantity» type=»xs:positiveInteger»/>
           
<xs:element name=»price» type=»xs:decimal»/>
         
</xs:sequence>
       
</xs:complexType>
     
</xs:element>
   
</xs:sequence>
   
<xs:attribute name=»orderid» type=»xs:string» use=»required»/>
 
</xs:complexType>
</xs:element>
</xs:schema>

Verify the output

You’ll see the following result −

students.xml is valid against students.xsd

XSD — Simple Types

In this chapter, we’ll see Simple Types that XSD defines.

S.No. Simple Type & Description
1

Simple Element can contain only text. It can not contain any other element.

2

Attribute is itself a type and is used in Complex Element.

3

Restriction defines the acceptable values of an XML element.

XSD — Complex Types

Complex Element is an XML element which can contain other elements and/or attributes. We can create a complex element in two ways −

  • Define a complex type and then create an element using the type attribute

  • Define a complex type directly by naming

Define a Complex Type and then create an element using type attribute.

<xs:complexType name = "StudentType">
   <xs:sequence>
      <xs:element name = "firstname" type = "xs:string"/>
      <xs:element name = "lastname" type = "xs:string"/>
      <xs:element name = "nickname" type = "xs:string"/>
      <xs:element name = "marks" type = "xs:positiveInteger"/>
   </xs:sequence>
   <xs:attribute name = 'rollno' type = 'xs:positiveInteger'/>
</xs:complexType>

<xs:element name = 'student' type = 'StudentType' />			 

Define a Complex Type directly by naming.

<xs:element name = "student">
   <xs:complexType>   
      <xs:sequence>
         <xs:element name = "firstname" type = "xs:string"/>
         <xs:element name = "lastname" type = "xs:string"/>
         <xs:element name = "nickname" type = "xs:string"/>
         <xs:element name = "marks" type = "xs:positiveInteger"/>
      </xs:sequence>
   <xs:attribute name = 'rollno' type = 'xs:positiveInteger'/>
   </xs:complexType>
<xs:element>

Following is the list of Complex Types that XSD supports.

S.No. Simple Type & Description
1

Complex Empty complex type element can only have attributes but no contents.

2

Elements-Only complex type element can only contain elements

3

Text-Only complex type element can only contain attribute and text.

4

Mixed complex type element can contain element, attribute and text.

5

Indicators controls the ways how elements are to be organized in an XML document.

6

The <any> element is used for elements which are not defined by schema

7

The <anyAttribute> attribute is used for attribute which are not defined by schema.

String data types are used to represent characters in the XML documents.

Как открыть XML-файл

Существует несколько способов открыть XML-файл напрямую. Вы можете открывать и редактировать их с помощью любого текстового редактора, просматривать их с помощью любого веб-браузера или использовать веб-сайт, который позволяет просматривать, редактировать и даже конвертировать их в другие форматы.

Используйте текстовый редактор при регулярной работе с XML

Поскольку XML-файлы – это просто текстовые файлы, их можно открыть в любом текстовом редакторе. Однако, многие текстовые редакторы, такие как Notepad, просто не предназначены для отображения XML-файлов с их правильной структурой. Это может быть полезно для быстро ознакомления с содержанием XML-файла. Но, существуют более удобные инструменты для работы с ними.

  1. Щелкните правой кнопкой мыши файл XML, который вы хотите открыть, выберите Открыть с помощью в контекстном меню, а затем выберите Блокнот.

    Примечание: мы используем Windows, но то же самое справедливо и для других операционных систем. Найдите хороший сторонний текстовый редактор, предназначенный для поддержки XML-файлов.

  2. Файл открывается, но, как вы можете видеть, он теряет большую часть своего форматирования и записывает всё в две строки.
  3. Таким образом, блокнот может быть полезен для быстрой проверки XML-файла. Но, гораздо удобнее использовать более продвинутый инструмент, такой как Notepad++, который подсвечивает синтаксис и формат файла, как это можно ожидать.

    Вот тот же XML-файл, открытый в Notepad++

Использование веб-браузера для просмотра XML-файла

Если Вам не нужно редактировать XML-файл, но просто нужно просмотреть содержимое, с этой задачей справиться ваш браузер. Более того, ваш веб-браузер, скорее всего, уже настроен как стандартное средство просмотра XML-файлов. Таким образом, двойной щелчок XML-файла должен открыть его в браузере.

Если нет, вы можете щелкнуть правой кнопкой мыши файл, чтобы найти варианты его открытия с любым другим приложением. Просто выберите ваш веб-браузер из списка программ.

Когда файл откроется, вы должны увидеть хорошо структурированные данные. Это не так красиво, как цветной вид, который вы получаете в Notepad++, но гораздо лучше, чем блокнот.

Использование онлайн-редактора для XML-файлов

Если вы хотите редактировать случайный XML-файл и не хотите загружать новый текстовый редактор, или Вам нужно конвертировать XML-файл в другой формат, существует несколько достойных онлайн-редакторов XML, доступных бесплатно.

Для примера используем CodeBeautify.org. Страница разделена на три раздела. Слева находится XML-файл, с которым вы работаете. В середине вы найдете несколько функций. Справа вы увидите результаты некоторых вариантов, которые вы можете выбрать.

Например, на рисунке ниже слева находится наш полный XML-файл, а на панели результатов отображается представление в виде дерева, так как мы нажали кнопку Tree View посередине.

Используйте кнопку Browse для загрузки XML-файла с вашего компьютера или кнопку Load URL для извлечения XML из интернет-источника

Кнопка Tree View отображает данные в хорошо отформатированной древовидной структуре на панели результатов, со всеми тегами, выделенными оранжевым цветом, и атрибутами справа от тегов.

Beatify отображает ваши данные в аккуратном, легко читаемом виде.

Кнопка Minify отображает ваши данные, используя наименьшее количество пробелов. Эта функция будет разместить каждый каждый кусок данных на одной строке. Это пригодится при попытке сделать файл меньше, что сэкономит некоторое пространство.

И, наконец, Вы можете использовать кнопку XML to JSON для преобразования XML в формат JSON, и кнопку Export to CSV для сохранения данных в виде файла значений, разделенных запятыми, или кнопку Download для загрузки любых изменений, которые вы сделали в новом XML-файле.

Дата Тип данных

Тип дата данные используются, чтобы указать дату.

Дата указывается в следующем виде «YYYY-MM-DD» , где:

  • YYYY указывает год
  • ММ указывает месяц
  • DD означает день

Note: Все компоненты необходимы!

Ниже приведен пример дату декларации в схеме:

<xs:element name=»start» type=»xs:date»/>

Элемент в документе может выглядеть следующим образом:

<start>2002-09-24</start>

Часовые пояса

Чтобы указать часовой пояс, вы можете либо ввести дату в время UTC путем добавления «Z» за сегодняшний день — как это:

<start>2002-09-24Z</start>

или вы можете задать смещение от времени UTC путем добавления положительного или отрицательного времени за сегодняшний день — как это:

<start>2002-09-24-06:00</start>
or
<start>2002-09-24+06:00</start>

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

Стандартом определены два уровня правильности документа XML:

Правильно построенный (Well-formed). Правильно построенный документ соответствует всем общим правилам синтаксиса XML, применимым к любому XML-документу. И если, например, начальный тег не имеет соответствующего ему конечного тега, то это неправильно построенный документ XML. Документ, который неправильно построен, не может считаться документом XML; XML-процессор (парсер) не должен обрабатывать его обычным образом и обязан классифицировать ситуацию как фатальная ошибка.

Действительный (Valid). Действительный документ дополнительно соответствует некоторым семантическим правилам. Это более строгая дополнительная проверка корректности документа на соответствие заранее определённым, но уже внешним правилам, в целях минимизации количества ошибок, например, структуры и состава данного, конкретного документа или семейства документов. Эти правила могут быть разработаны как самим пользователем, так и сторонними разработчиками, например, разработчиками словарей или стандартов обмена данными. Обычно такие правила хранятся в специальных файлах — схемах, где самым подробным образом описана структура документа, все допустимые названия элементов, атрибутов и многое другое. И если документ, например, содержит не определённое заранее в схемах название элемента, то XML-документ считается недействительным; проверяющий XML-процессор (валидатор) при проверке на соответствие правилам и схемам обязан (по выбору пользователя) сообщить об ошибке.

Данные два понятия не имеют достаточно устоявшегося стандартизированного перевода на русский язык, особенно понятие valid, которое можно также перевести, как имеющий силу, правомерный, надёжный, годный, или даже проверенный на соответствие правилам, стандартам, законам. Некоторые программисты применяют в обиходе устоявшуюся кальку «Валидный».

Сущности¶

Некоторые символы в XML имеют особые значения и являются служебными. Если вы поместите,
например, символ внутри XML элемента, то будет
сгенерирована ошибка, так как парсер интерпретирует его, как начало
нового элемента.

В примере ниже будет сгенерирована ошибка, так как в значении атрибута содержатся символы и .

<НПЮЛ ИННЮЛ="7718962261" КПП="771801001" НаимОрг="ООО<Мосавтогруз>"/>

Также ошибка будет сгенерирована и в слудющем примере, если название организации взять в обычные кавычки (английские двойные):

<НПЮЛ ИННЮЛ="7718962261" КПП="771801001" НаимОрг="ООО"Мосавтогруз""/>

Чтобы ошибки не возникали, нужно заменить символ на его
сущность. В XML существует 5 предопределенных сущностей:

Таблица I.1 — Сущности

Сущность
Символ
Значение

меньше, чем

больше, чем

амперсанд

апостроф

кавычки

Примечание

Только символы и строго запрещены в XML. Символ допустим, но лучше его всегда заменять на сущность.

Таким образом, корректными будут следующие формы записей:

<НПЮЛ ИННЮЛ="7718962261" КПП="771801001" НаимОрг="ООО&quot;Мосавтогруз&quot;"/>

или

<НПЮЛ ИННЮЛ="7718962261" КПП="771801001" НаимОрг="ООО«Мосавтогруз»"/>

Что такое XSD

Термин «XSD» является аббревиатурой от английских слов «XML Schema definition». Файл с таким расширением являет собой схему описания XML-данных, использующую свой собственный язык для описания структуры документов XML.

В файле xsd описываются элементы, находящиеся в документе XML. Обычно это фиксированные данные, значения по умолчанию, синтаксис данных, правила, которым должен соответствовать данный документ и так далее, при этом некоторые элементы часто взаимосвязаны с другими элементами, и ссылаются на них.

Стандарт XSD 1.1 получил одобрение Консорциума Всемирной Паутины в апреле 2012 года, обладая несколькими важными преимуществами перед существовавшими до него схемами XML, такими как DTD (Document Type Definition) или SOX (Simple Object XML). К примеру, это то, что XSD написан на XML, имеется автоматическое создание схемы и так далее.

XML Technology данные записанные в файл

An XML Document

Let’s have a look at this XML document called «shiporder.xml»:

<?xml version=»1.0″ encoding=»UTF-8″?>
<shiporder orderid=»889923″
xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»
xsi:noNamespaceSchemaLocation=»shiporder.xsd»>
 
<orderperson>John Smith</orderperson>
 
<shipto>
   
<name>Ola Nordmann</name>
   
<address>Langgt 23</address>
   
<city>4000 Stavanger</city>
   
<country>Norway</country>
 
</shipto>
 
<item>
   
<title>Empire Burlesque</title>
   
<note>Special Edition</note>
   
<quantity>1</quantity>
   
<price>10.90</price>
 
</item>
 
<item>
   
<title>Hide your heart</title>
   
<quantity>1</quantity>
   
<price>9.90</price>
 
</item>
</shiporder>

The XML document above consists of a root element, «shiporder»,
that contains a required attribute called «orderid». The «shiporder» element contains three
different child elements: «orderperson», «shipto» and «item». The «item» element
appears twice, and it contains a «title», an optional «note» element, a «quantity», and a «price»
element.

The line above: xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» tells the XML parser that this document should be validated against a schema.
The line: xsi:noNamespaceSchemaLocation=»shiporder.xsd» specifies WHERE the schema resides (here it is in the same folder as «shiporder.xml»).

Как открыть xsd формат

Для открытия большинства файлов xsd будет достаточно использовать любые подручные текстовые редакторы (тот же «Блокнот», Notepad++, PSPad Editor и др.). Также в открытии xsd формата могут пригодиться такие программы как Microsoft XML Notepad, Oxygen XML Editor, Liquid XML Studio и другие аналоги.

Если же данный файл являет собой результат работы программы Pattern Maker for Cross stitch (обычно это рисунок-схема для вышивки), то такой файл можно просмотреть или с помощью указанной программы, или с помощью специального просмотрщика под названием «Pattern Maker Viewer».

Вышивка формата .XSD

Файл не соответствует xsd схеме — что это?

При этом бывают ситуации, когда описание файла XML, содержащееся в файле XSD, не совпадает с фактическими данными, имеющимися в файле XML. Ошибка может быть как в самих данных, так и в способе введения этих данных, при этом система реагирует стандартным образом, выдавая упомянутое сообщение «Файл не соответствует xsd схеме».

Скриншот ошибки Документ не соответствует xsd схеме

Часто такая ситуация происходит в случае подачи бухгалтерской и иной формы отчётности, когда специалист контролирующего органа, при попытке открытия xml-файла, обнаруживает упомянутую ошибку.

Что делать в данной ситуации? Рекомендую выполнить следующее:

  1. Проверьте корректность данных в файле xml, делая акцент на наличие синтаксических ошибок (лишние дефисы, пробелы и так далее);
  2. Обновите программу, в которой вы работали с xml-файлом (возможно её текущая версия устарела);
  3. Обратитесь в техническую поддержку, занимающуюся обслуживанием данного программного продукта (или в техподдержку контролирующего органа).

Разделите схемы

Предыдущий метод дизайн очень прост, но может быть трудно читать и поддерживать, когда документы являются сложными.

Следующий метод дизайн основан на определении всех элементов и атрибутов, а затем ссылаясь на них , используя ref атрибут.

Вот новый дизайн файла схемы («shiporder.xsd») :

<?xml version=»1.0″ encoding=»UTF-8″ ?>
<xs:schema xmlns:xs=»http://www.w3.org/2001/XMLSchema»>
<!— definition of simple elements —>
<xs:element name=»orderperson» type=»xs:string»/>
<xs:element name=»name» type=»xs:string»/>
<xs:element name=»address» type=»xs:string»/>
<xs:element name=»city» type=»xs:string»/>
<xs:element name=»country» type=»xs:string»/>
<xs:element name=»title» type=»xs:string»/>
<xs:element name=»note» type=»xs:string»/>
<xs:element name=»quantity» type=»xs:positiveInteger»/>
<xs:element name=»price» type=»xs:decimal»/>
<!— definition of attributes —>
<xs:attribute name=»orderid» type=»xs:string»/>
<!— definition of complex elements —>
<xs:element name=»shipto»>
 
<xs:complexType>
   
<xs:sequence>
     
<xs:element ref=»name»/>
     
<xs:element ref=»address»/>
     
<xs:element ref=»city»/>
     
<xs:element ref=»country»/>
   
</xs:sequence>
 
</xs:complexType>
</xs:element>
<xs:element name=»item»>
 
<xs:complexType>
   
<xs:sequence>
     
<xs:element ref=»title»/>
     
<xs:element ref=»note» minOccurs=»0″/>
     
<xs:element ref=»quantity»/>
     
<xs:element ref=»price»/>
   
</xs:sequence>
 
</xs:complexType>
</xs:element>
<xs:element name=»shiporder»>
 
<xs:complexType>
   
<xs:sequence>
     
<xs:element ref=»orderperson»/>
     
<xs:element ref=»shipto»/>
     
<xs:element ref=»item» maxOccurs=»unbounded»/>
   
</xs:sequence>
   
<xs:attribute ref=»orderid» use=»required»/>
 
</xs:complexType>
</xs:element>
</xs:schema>

Использование именованных типов

Способ третий дизайн определяет классы или типы, что позволяет повторно использовать определения элементов. Это делается путем именования элементов simpleTypes и complexTypes, а затем указать на них через type атрибута элемента.

Вот уже третий дизайн файла схемы («shiporder.xsd») :

<?xml version=»1.0″ encoding=»UTF-8″ ?>
<xs:schema xmlns:xs=»http://www.w3.org/2001/XMLSchema»>
<xs:simpleType name=»stringtype»>
 
<xs:restriction base=»xs:string»/>
</xs:simpleType>
<xs:simpleType name=»inttype»>
 
<xs:restriction base=»xs:positiveInteger»/>
</xs:simpleType>
<xs:simpleType name=»dectype»>
 
<xs:restriction base=»xs:decimal»/>
</xs:simpleType>
<xs:simpleType name=»orderidtype»>
 
<xs:restriction base=»xs:string»>
   
<xs:pattern value=»{6}»/>
 
</xs:restriction>
</xs:simpleType>
<xs:complexType name=»shiptotype»>
 
<xs:sequence>
   
<xs:element name=»name» type=»stringtype»/>
   
<xs:element name=»address» type=»stringtype»/>
   
<xs:element name=»city» type=»stringtype»/>
   
<xs:element name=»country» type=»stringtype»/>
 
</xs:sequence>
</xs:complexType>
<xs:complexType name=»itemtype»>
 
<xs:sequence>
   
<xs:element name=»title» type=»stringtype»/>
   
<xs:element name=»note» type=»stringtype» minOccurs=»0″/>
   
<xs:element name=»quantity» type=»inttype»/>
   
<xs:element name=»price» type=»dectype»/>
 
</xs:sequence>
</xs:complexType>
<xs:complexType name=»shipordertype»>
 
<xs:sequence>
   
<xs:element name=»orderperson» type=»stringtype»/>
   
<xs:element name=»shipto» type=»shiptotype»/>
   
<xs:element name=»item» maxOccurs=»unbounded» type=»itemtype»/>
 
</xs:sequence>
 
<xs:attribute name=»orderid» type=»orderidtype» use=»required»/>
</xs:complexType>
<xs:element name=»shiporder» type=»shipordertype»/>
</xs:schema>

Элемент ограничение указывает на то, что тип данных был получен из пространства имен типа данных XML-схемы W3C. Таким образом, следующий фрагмент означает, что значение элемента или атрибута должно быть значение строки:

<xs:restriction base=»xs:string»>

Элемент ограничение чаще используется, чтобы применить ограничения к элементам. Посмотрите на следующие строки из приведенной выше схеме:

<xs:simpleType name=»orderidtype»>
 
<xs:restriction base=»xs:string»>
   
<xs:pattern value=»{6}»/>
 
</xs:restriction>
</xs:simpleType>

Это указывает на то, что значение элемента или атрибута должно быть строкой, оно должно быть ровно шесть символов в строке, и эти символы должны быть числом от 0 до 9.

❮ Предыдущая Следующая Глава ❯

Время Тип данных

Тип данных в реальном времени используется для указания времени.

Время указывается в следующей форме «hh:mm:ss» , где:

  • чч указывает на час
  • мм указывает на минуту
  • сс указывает второй

Note: Все компоненты необходимы!

Ниже приведен пример временной декларации в схеме:

<xs:element name=»start» type=»xs:time»/>

Элемент в документе может выглядеть следующим образом:

<start>09:00:00</start>

Или это может выглядеть следующим образом:

<start>09:30:10.5</start>

Часовые пояса

Чтобы указать часовой пояс, вы можете либо ввести время во времени UTC, добавив «Z» за время — как это:

<start>09:30:10Z</start>

или вы можете задать смещение от времени UTC путем добавления положительного или отрицательного времени за время — как это:

<start>09:30:10-06:00</start>
or
<start>09:30:10+06:00</start>

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *