XML Schema (XML схема) — описание структуры XML-документов. Xml примеры


Обновление данных через XML-файл - Справочник. Помощь

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

Такое обновление имеет следующие преимущества :

  • Данные о ваших филиалах будут всегда актуальны во всех сервисах и мобильных приложениях Яндекса. Ваши потенциальные клиенты смогут легко добраться до ближайшего филиала с помощью Яндекс.Карт, Яндекс.Навигатора, найти филиал в Поиске и других сервисах Яндекса.
  • Вы можете полностью автоматизировать передачу данных о филиалах, настроив выгрузку данных из своей базы 1С, ERP (SAP, Axapta) или других систем.
  1. Подготовьте файл в формате XML.

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

  2. Выложите файл на свой сайт по обновляемой ссылке.

    Данные должны быть доступны по протоколу HTTP или HTTPS.

Подготовка файла и настройка делаются один раз. Все обновления происходят в автоматическом режиме.

Внимание. При передаче данных о сети необходимо:
  1. Предоставлять данные обо всех действующих филиалах.
  2. Поддерживать данные в актуальном состоянии.

На странице сети в Загрузка филиалов файлом нажмите кнопку Добавить. В открывшемся окне укажите ссылку на подготовленный файл, выберите тип «xml» и нажмите Проверить. Проверка файла может занять несколько минут.

Если проверка прошла успешно, кнопка Результаты проверки будет отмечена зеленым. Нажмите ее и в открывшемся окне проверьте изменения в филиалах. На карте может быть показано до 50 филиалов с изменениями. Нажмите Сохранить. Данные из файла будут загружены в базу Справочника. При большом объеме данных загрузка может занять от нескольких часов до суток.

Если в результате проверки будут обнаружены ошибки, кнопка Результаты проверки будет отмечена красным. Исправьте ошибки и снова отправьте файл на проверку.

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

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

На Яндекс.Картах новые филиалы и другие изменения будут доступны через несколько дней.

Если у вас остались вопросы о загрузке данных филиалов через файл, напишите нам.

yandex.ru

XSD Пример

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

Документа XML

Давайте посмотрим на этот XML - документ под названием "shiporder.xml" :

<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>

Документ XML выше состоит из корневого элемента, "shiporder" , который содержит обязательный атрибут под названием "orderid" . "shiporder" элемент содержит три различных дочерних элемента: "orderperson" , "shipto" и "item" . "item" элемент появляется дважды, и он содержит "title" , необязательный "note" элемент, "quantity" , и "price" элемент.

Линия выше: Xmlns: XSI = "http://www.w3.org/2001/XMLSchema-instance" говорит XML-анализатору, что этот документ должен быть проверен на схеме. Линия: XSI: noNamespaceSchemaLocation = "shiporder.xsd" указывает , где находится схемы (here it is in the same folder as "shiporder.xml") что и (here it is in the same folder as "shiporder.xml") .

Создание XML-схемы

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

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

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

В схеме выше мы используем стандартные пространства имен (xs) , и URI , связанный с этим пространством имен является определение языка схемы, который имеет стандартное значение http://www.w3.org/2001/XMLSchema.

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

<xs:element name="shiporder">   <xs:complexType>     <xs:sequence>       ...     </xs:sequence>   </xs:complexType> </xs:element>

Затем мы должны определить "orderperson" элемент в качестве простого типа (так как она не содержит каких - либо атрибутов или других элементов). В типа (xs:string) с префиксом префикс пространства имен , связанного с XML - схемы , которая указывает заранее определенный тип данных схемы:

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

Далее, мы должны определить два элемента , которые имеют сложного типа: "shipto" и "item" . Мы начнем с определения "shipto" элемент:

<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>

С помощью схем, которые мы можем определить количество возможных появлений для элемента с MaxOccurs и атрибутами MinOccurs. MaxOccurs определяет максимальное число вхождений для элемента и MinOccurs определяет минимальное число вхождений для элемента. Значение по умолчанию для обоих MaxOccurs и MinOccurs 1!

Теперь мы можем определить "item" элемент. Этот элемент может появляться несколько раз внутри "shiporder" элемента. Это определяется установкой maxOccurs атрибут "item" элемента "unbounded" , что означает , что там может быть много вхождений "item" элемент , как автор хочет. Обратите внимание на то, что "note" элемент не является обязательным. Мы определили это, установив minOccurs атрибут к нулю:

<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>

Теперь мы можем объявить атрибут "shiporder" элемента. Поскольку это обязательный атрибут мы указываем использование = "требуется".

Note: Заявления атрибутов всегда должны прийти в последний раз :

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

Вот полный список файла схемы под названием "shiporder.xsd" :

<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>

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

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

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

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

<!-- 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") :

<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="[0-9]{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="[0-9]{6}"/>   </xs:restriction> </xs:simpleType>

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

www.w3bai.com

XML DOM Примеры

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

заголовок

XML DOM The XMLHttpRequest Object

Простой пример XMLHttpRequest Создание простой XMLHttpRequest, и извлекать данные из файла TXT.

Получить информацию заголовка с getAllResponseHeaders() Получить информацию заголовка ресурса (file) .

Получить конкретную информацию заголовка с getResponseHeader() Получить конкретную информацию заголовка ресурса (file) .

Получить содержимое файла ASP Как веб-страница может обмениваться данными с веб-сервером в то время как символы типа пользователя в поле ввода.

Извлечения содержимого из базы данных Как веб-страница может извлечь информацию из базы данных с объектом XMLHttpRequest.

Получить содержимое файла XML Создание XMLHttpRequest для извлечения данных из файла XML и отображать данные в HTML-таблице.

Примеры объяснил

XML DOM Loading XML

Приведенные ниже примеры используют XML - файл Books.xml .

Загрузите и синтаксического анализа XML - файл Загрузка и разбор файла XML (II) Загрузка и XML - строка Загрузка и разобрать строку XML (II)

XML DOM Accessing Nodes

Приведенные ниже примеры используют XML - файл Books.xml .

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

Примеры объяснил

XML DOM Node Information

Приведенные ниже примеры используют XML - файл Books.xml .

Получить имя узла узла элемента Получить текст из текстового узла Изменение текста в текстовом узле Получить имя узла и тип узла элемента

Примеры объяснил

XML DOM Node List and Attribute List

Приведенные ниже примеры используют XML - файл Books.xml .

Получить текст из первого <title> элемента Петля через узлы , используя свойство длины Получить атрибут элемента

Примеры объяснил

XML DOM Traversing Node Tree

Приведенные ниже примеры используют XML - файл Books.xml .

Траверс дерева узла Отображение длины списка узлов

Примеры объяснил

XML DOM Navigating Nodes

Приведенные ниже примеры используют XML - файл Books.xml . books.xml.

Получить родительский узел Получить первый дочерний элемент узла Получить последний дочерний элемент узла Получить следующий родственный элемент узла Получить предыдущий родственный элемент узла

Примеры объяснил

XML DOM Get Node Values

Приведенные ниже примеры используют XML - файл Books.xml .

Получить значение текста элемента Получить текстовое значение атрибута

Примеры объяснил

XML DOM Change Node Values

Приведенные ниже примеры используют XML - файл Books.xml .

Изменение элементов текстового узла Изменение значения атрибутов с помощью SetAttribute Изменение значения атрибутов с помощью nodeValue

Примеры объяснил

XML DOM Remove Nodes

Приведенные ниже примеры используют XML - файл Books.xml .

Удалить узел элемента Удалить текущий узел элемента Удалить текстовый узел Очистить текст текстового узла Удалить атрибут по имени Удаление атрибутов объекта от

Примеры объяснил

XML DOM Replace Nodes

Приведенные ниже примеры используют XML - файл Books.xml .

Заменить узел элемента Заменить данные в текстовом узле

Примеры объяснил

XML DOM Create Nodes

Приведенные ниже примеры используют XML - файл Books.xml .

Создать узел элемента Создание узла атрибута с помощью createAttribute Создание узла атрибута с помощью SetAttribute Создайте текстовый узел Создать раздел CDATA узел Создать узел комментария

Примеры объяснил

XML DOM Add Nodes

Приведенные ниже примеры используют XML - файл Books.xml .

Добавление узла после последнего дочернего узла Добавление узла перед указанным дочерним узлом Добавить новый атрибут Добавление данных в текстовый узел

Примеры объяснил

XML DOM Clone Nodes

Приведенные ниже примеры используют XML - файл Books.xml .

Скопируйте узел и добавить его к существующему узлу

Примеры объяснил

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

www.w3bai.com

Пример XML-файла. Конфигурация тестирования в пространстве имен1

  • 07/20/2015
  • Время чтения: 2 мин
  • Соавторы

В этой статье

Следующий XML-файл используется в различных примерах в документации LINQ to XMLLINQ to XML.The following XML file is used in various examples in the LINQ to XMLLINQ to XML documentation. Это тестовый файл конфигурации.This is a test configuration file. XML располагается в пространстве имен.The XML is in a namespace.

TestConfigInNamespace.xmlTestConfigInNamespace.xml

<?xml version="1.0"?> <Tests xmlns="http://www.adatum.com"> <Test TestId="0001" TestType="CMD"> <Name>Convert number to string</Name> <CommandLine>Examp1.EXE</CommandLine> <Input>1</Input> <Output>One</Output> </Test> <Test TestId="0002" TestType="CMD"> <Name>Find succeeding characters</Name> <CommandLine>Examp2.EXE</CommandLine> <Input>abc</Input> <Output>def</Output> </Test> <Test TestId="0003" TestType="GUI"> <Name>Convert multiple numbers to strings</Name> <CommandLine>Examp2.EXE /Verbose</CommandLine> <Input>123</Input> <Output>One Two Three</Output> </Test> <Test TestId="0004" TestType="GUI"> <Name>Find correlated key</Name> <CommandLine>Examp3.EXE</CommandLine> <Input>a1</Input> <Output>b1</Output> </Test> <Test TestId="0005" TestType="GUI"> <Name>Count characters</Name> <CommandLine>FinalExamp.EXE</CommandLine> <Input>This is a test</Input> <Output>14</Output> </Test> <Test TestId="0006" TestType="GUI"> <Name>Another Test</Name> <CommandLine>Examp2.EXE</CommandLine> <Input>Test Input</Input> <Output>10</Output> </Test> </Tests>

См. такжеSee Also

docs.microsoft.com

XML Schema (XML схема) - описание структуры XML-документов

В предыдущей статье про XML мы рассмотрели такой уже устаревший способ валидации XML-документов, как XML DTD. Данный способ до сих пор применяется для проверки XML-данных, но с каждым днем его все больше и больше вытесняет новая технология под названием XML Schema. В XML схемах было исправлено множество недоработок, которые были в XML DTD, поэтому на данный момент все передовые разработчики для валидации документов применяют только XML схемы.

Чтобы оценить преимущество XML схем (XML Schema) перед DTD, давайте более подробно рассмотрим основные недостатки DTD, которые с успехом были исправлены в XML схемах. О них я уже упоминал в статье «XML DTD», но для лучшего понимания давайте повторим.

Недостатки XML DTD перед XML Schema

  1. Отличный от XML синтаксис языка. То есть, DTD не является XML. В связи с этим могут возникать разнообразные проблемы с кодировкой и верификацией XML-документов.
  2. Нет проверки типов данных. В XML DTD существует лишь один тип данных – строка. В связи с этим, например, если в числовом поле будет текст, документ все равно пройдет верификацию, так как XML DTD не может проверить тип данных.
  3. Нельзя поставить в соответствие одному XML-документу больше одного DTD описания. То есть, верифицировать документ можно лишь одним DTD описанием. Если их несколько, то придется переделывать описания и совмещать все в одном файле, что очень неудобно.

Это были основные недостатки XML DTD, которые с успехом исправлены в промышленном стандарте описания XML-документов XML Schema.

XML Schema – промышленный стандарт описания XML-документов

Если быть кратким, то XML Schema делает следующее:

  1. Описывает названия элементов и атрибутов (словарь).
  2. Описывает взаимосвязь между элементами и атрибутами, а также их структуру (модель содержания).
  3. Описывает типы данных.

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

Пример XML Schema для валидации XML-документа

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

Пример простой схемы XML 

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="книга" type="Книга" /> <xs:complexType name="Книга"> <xs:sequence> <xs:element name="название" type="xs:string" /> <xs:element name="цена" type="xs:decimal" /> </xs:sequence> </xs:complexType> </xs:schema>

При помощи данной схемы можно проверить XML-документ следующего содержания.

<книга xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "book.xsd"> <название>Основы XML</название> <цена>300</цена> </книга>

Итак, вернемся к нашей XML схеме. Как вы уже заметили, для создания XML схем используется уже известный нам XML. Единственное отличие здесь в том, что в XML Schema уже определены элементы, в отличие от обычного XML. В связи с этим используются пространства имен. В данном случае обязательным пространством имен будет «http://www.w3.org/2001/XMLSchema», которое будет задаваться при помощи префиксов «xs».

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

Ну а теперь давайте разберемся, как же расшифровать вышеприведенную схему. Как уже говорилось выше, XML Schema это описание словаря и типов данных. Отталкиваясь от этого, произведем расшифровку каждого элемента.

  • <xs:element name=»книга» type=»Книга» /> — объявляем элемент «книга» с типом «Книга».
  • <xs:complexType name=»Книга»> — объявляем комплексный тип с именем «Книга» (xs:complexType – может содержать в себе вложенные элементы).
  • <xs:sequence> — объявление вложенности. То есть, тип будет содержать вложенные элементы.
  • <xs:element name=»название» type=»xs:string» /> — объявляем элемент с именем «название» (стандартного типа «строка» — xs:string).
  • <xs:element name=»цена» type=»xs:decimal» /> — объявляем элемент с именем «цена» (стандартного типа «число» — xs:decimal).

Как видите, ничего сверхсложного здесь нет. Если вдуматься, то все очень просто.

Основные элементы XML Schema

Если быть кратким, то XML схему можно описать следующим образом.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:annotation> <xsd:documentation> Ваша схема </xsd:documentation> </xsd:annotation> … </xsd:schema>

Как видно с примера, каждая XML схема состоит с корневого элемента «schema» и обязательного пространства имен «http://www.w3.org/2001/XMLSchema». Далее идет описание схемы и собственно сама схема. При этом очень часто в очень качественных схемах описание бывает куда большим, чем сама XML Schema.

Описание элементов в XML Schema

В начале статьи мы уже рассмотрели пример простейшей XML схемы. В ней мы отдельно описывали элементы и типы. При этом сразу хочу заметить, что последовательность здесь не играет роли. Схема будет работать в любом случае.

Теперь давайте рассмотрим второй способ написания XML Schema, который основывается на том, чтобы описывать тип сразу внутри элемента. Данный способ подойдет в том случае, если вы не планируете использовать одно и то же описание для разных элементов. Для наглядности рассмотрим пример.

<?xml version="1.0" encoding="utf-8" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="root"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string" /> <xs:element name="age" type="xs:integer" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

Как видно с примера, элемент объявляется при помощи специальной конструкции «element» с использованием соответствующего префикса. В данном случае мы определяем элемент с названием «root» без указания типа (type), так как он будет описан внутри элемента. То есть, есть два способа описания элементов.

1 способ

<xs:element name="название элемента" type="название типа" /> <xs:complexType name="название типа"> Описание типа </xs:complexType>

2 способ

<xs:element name="root"> Описание типа элемента </xs:element>

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

Далее после объявления элемента мы указываем, что он комплексного типа (<xs:complexType>) и перечисляем (<xs:sequence>) вложенные элементы. В данном случае это элементы name и age с типами «xs:string» и «xs:integer». Префикс xs означает, что это базовый тип, который уже описан в стандарте XML Schema.

Как видите, пока все довольно просто. Опять же, углубляться во все подробности мы не будем, так как данная статья предназначена для ознакомления с XML Schema, а не ее детальным изучением.

Как ставится в соответствие XML Schema и документ

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

На случай, если обработчик не знает где лежит схема, мы можем указать, где ее искать. Делается это при помощи специального атрибута «schemaLocation». Поскольку этот атрибут принадлежит другому пространству имен, то перед началом использования атрибута пространство тоже нужно указать. Для наглядности рассмотрим пример.

XML Schema

<?xml version="1.0" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.site.com" ...

XML-документ

<?xml version="1.0" ?> <my:product xmlns:my="http://www.site.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.site.com/product.xsd" …

Теперь давайте подробно разберем каждую строчку.

  • targetNamespace=»http://www.site.com» – указываем для какого пространства имен эта XML Schema.
  • xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» – подключаем пространство имен в котором описан атрибут «schemaLocation».
  • xsi:schemaLocation=»http://www.site.com/product.xsd» – указываем, где можно найти схему на случай, если парсер не знает где она лежит. Если XML-документ не принадлежит никакому пространству имен, а следовательно и в схеме нет на него указания, то атрибут «schemaLocation» заменяется на «noNamespaceSchemaLocation» (указание на схему без определения пространств имен).

Рекомендую также ознакомиться с другими статьями по XML и XSLT:

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

На этом все. Удачи вам и успехов в изучении XML!

Обнаружили ошибку? Выделите ее и нажмите Ctrl+Enter

archive.dmitriydenisov.com

Пример XML Схемы

Пример XML Схемы

Пример XML документа отправляемых заказов
Ниже представлен описывающий его XML документ: &lt?xml version="1.0"?> &ltshipOrder&gt &ltshipTo&gt &ltname&gtTove Svendson&lt/name&gt &ltstreet&gtRagnhildvei 2&lt/street&gt &ltaddress&gt4000 Stavanger&lt/address&gt &ltcountry&gtNorway&lt/country&gt &lt/shipTo&gt &ltitems&gt &ltitem&gt &lttitle&gtEmpire Burlesque&lt/title&gt &ltquantity&gt1&lt/quantity&gt &ltprice&gt10.90&lt/price&gt &lt/item&gt &ltitem&gt &lttitle&gtHide your heart&lt/title&gt &ltquantity&gt1&lt/quantity&gt &ltprice&gt9.90&lt/price&gt &lt/item&gt &lt/items&gt &lt/shipOrder&gt XML документ состоит из корневого &ltshipOrder&gt, который имеет два дочерних элемента &ltshipTo&gt и &ltitems&gt. Элемент vitems&gt содержит элементы &ltitem&gt. Элемент &ltitem&gt содержит элементы &lttitle&gt, &ltquantity&gt и &ltprice&gt.

Пример XML Схемы

Здесь представлена XML Схема для рассмотренного выше XML документа: &ltxs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt &ltxs:element name="shipOrder" type="order"/&gt &ltxs:complexType name="order"&gt &ltxs:sequence&gt &ltxs:element name="shipTo" type="shipAddress"/&gt &ltxs:element name="items" type="cdItems"/&gt &lt/xs:sequence&gt &lt/xs:complexType&gt &ltxs:complexType name="shipAddress"&gt &ltxs:sequence&gt &ltxs:element name="name" type="xs:string"/&gt &ltxs:element name="street" type="xs:string"/&gt &ltxs:element name="address" type="xs:string"/&gt &ltxs:element name="country" type="xs:string"/&gt &lt/xs:sequence&gt &lt/xs:complexType&gt &ltxs:complexType name="cdItems"&gt &ltxs:sequence&gt &ltxs:element name="item" type="cdItem" maxOccurs="unbounded"/&gt &lt/xs:sequence&gt &lt/xs:complexType&gt &ltxs:complexType name="cdItem"&gt &ltxs:sequence&gt &ltxs:element name="title" type="xs:string"/&gt &ltxs:element name="quantity" type="xs:integer"/&gt &ltxs:element name="price" type="xs:decimal"/&gt &lt/xs:sequence&gt &lt/xs:complexType&gt &lt/xs:schema&gt XML Схема определяет элемент &ltshipOrder&gt с типом order. Order - элемент комплексного типа, содержащий элементы &ltshipTo&gt и &ltitems&gt. Элемент &ltshipTo&gt с типом shipAddress - элемент комплексного типа, состоящий из элементов &ltname&gt, &ltstreet&gt, &ltaddress&gt и &ltcountry&gt. Элемент &ltitems&gt с типом cdItems - элемент комплексного типа, состоящий из элементов Используются технологии uCoz

gberman.narod.ru