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

XSD-схема используется для традиционной вышивки крестиком. Разработчиком решения является HobbyWare. Речь идет о достаточно распространенном формате для указанных целей.

Описание

XSD-схема пришла на смену формату.PAT, который использовался также программой PCStitch, вызывая некоторую путаницу. Данные файлы содержат все необходимое для вышивки, в частности, цветовую легенду и описание для последующей работы. Просмотреть материалы такого типа поможет программа Pattern Maker for cross-stitch.

Документы

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

Syntext Serna

Справится с ошибкой вида «Файл не соответствует XSD-схеме» поможет данное приложение. Речь идет о функциональном коммерческом XML-кода. Serna работает со всеми имеющимися стационарными системами: Mac OS X, Linux и Windows. Редактор имеет полноценную поддержку XML-каталогов. Доступно создание материалов, которые имеют специфическую структуру.

Создание XSD-схемы - одна из многочисленных возможностей данного приложения. Вставка элементов значительно облегчена благодаря тому, что программа имеет контекстные списки атрибутов и справочную информацию о них. Функция Drag&Drop позволяет осуществлять перетаскивание объектов на ленту. Реализована и дополнительная проверка файлов во время открытия. Есть возможность работать с моделями и таблицами. Взаимодействие осуществляется даже с крупными и объемными материалами. Имеется расширенная навигация по содержимому. Чтобы упростить вставку различных конструкций, редактор Serna получил целый ряд специально разработанных диалогов. Программа имеет удобный и гибкий интерфейс. Открытый материал отображается в главном окне. Он представлен в полной мере. Здесь есть развертывающиеся списки. Также радует наличие проводника по содержимому.

Управляется документ при помощи специального стиля. Используя всего несколько клавиш, можно сменить профилированные открытого файла исходя из собственных требований и под свой вкус. Документ в Serna можно разбивать и делить на необходимое количество страниц, при этом учитывается нумерация и определенная последовательность. Данное решение очень эффективно во время работы с большими материалами, которые содержат значительный объем кода. При этом стандартный вариант показа информации удобен, если требуется минимизировать разрывы в документе, а это очень важно, если присутствуют таблицы.

Oxygen XML Editor

Справиться с ошибкой вида «Файл не соответствует XSD-схеме», а также открыть файлы указанного типа может и данный редактор. Решение позволяет интерпретировать документы, а также выделять цветом элементы внутри текста. Древовидное представление содержимого позволяет пользователю просматривать разные узлы документов. Таким образом, можно проверять корректность кода, а также обнаружить ошибки и предупреждения. Редактирование можно проводить напрямую из ZIP-архива.

Altova XMLSpy

Если перед вами XSD-схема, работать с ней можно посредством данного приложения. Речь идет о мощном инструменте для создания, отладки, а также редактирования документов. Существуют версии для Windows, Linux и Mac OS. Проработка функций данного решения повышает уровень эффективности работы со схемами. Доступно создание проектов различного уровня с нуля. Есть возможность редактирования уже существующих материалов. При этом предоставляется несколько режимов отображения - конечный результат, иерархическая таблица, текст.

Встроенный просмотрщик позволяет избегать ошибок и упростить использование программы. Приложение получило удобную систему подсветки синтаксиса. Есть возможность комментировать код и устанавливать закладки. Такой подход упрощает навигацию при работе с объёмными проектами. Присутствует встроенный конвертер. Можно импортировать базы данных. Присутствует инструмент для сравнения двух файлов, который включает удобную систему отображения результата. Данная платформа совместима с другими похожими решениями, что позволяют объединять их возможности.

Другие решения

Существует еще несколько программ, которые поддерживают работу с интересующим нас типом схем. Особого внимания среди них заслуживает Visual Studio. Речь идет о разработке компании Microsoft, позволяющей создавать различные приложения.

Особенность данной платформы - это широкий набор сервисов, доступных в разных языках программирования. Сервисы реализуются как промежуточный код, который от архитектуры не зависит. Visual Studio объединяется в себе большое количество функций, которые позволяют осуществлять разработку в Windows. В инструменте создана новая среда, благодаря которой воплощать приложения стало намного проще.

Также с необходимым нам форматом можно работать посредством одного из следующих приложений: XML Studio, XML Notepad, JAPISoft EditiX, PSPad editor, «Блокнот». Вот мы и разобрались, как исправить ошибку вида «Не соответствует XSD-схеме», а также посредством каких программ взаимодействовать с файлов.

Все будет сухо, без лирики и т.п.

Итак. Мне принесли задание. Подружить 1С с внешним сервисом по приему отчетности в виде xml файла.

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

Файл схема xsd небольшая, но типов данных много, на основе этой схемы полностью сформированный XML файл занимает что-то около 200Мб.

В итоге я имел на руках некий файл с расширением «xsd».

На тот момент я даже понятия не имел, что это и с чем и как его едят.

Очень помог Инфостарт (не без этого, конечно, - огромное спасибо).

Для начала ниже материал, которым я пользовался, пока не завершил этот мини проект, и поэтому вот ссылки вам в помощь, которые могут понадобиться в дальнейшем, я думаю, это «маст-хэйв» для тех, кто хочет обучиться правилам XDTO:

Что в итоге.

Просьба смотреть «не в воду», а в суть.

Тут главные строки это:

Для получения каких-либо реквизитов свойства в схеме xsd пользуюсь такой конструкцией кода,

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

Результат рисунков с 7 по 12

Выглядит вот так в готовом файле:

И вот что я заметил (ну местные гуру, может, и знают давным-давно).

Это как бы и правила, и пометка.

Рассмотрим свойство «ContractCode»

Вот его описание:

Если это свойство имеет форму как «Элемент», то тогда код выглядит таким:

Т.е. я срази пишу значение в параметр, просто «= равно» и пошел.

Если свойство имеет форму как «Элемент», но он записан через знак «+»

Как вот тут

То его код выглядит немного иначе

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

И в итоге получается вот что.

Если в схеме это свойство имеет форму «элемент»

То в готовом файле запишется такая запись:

Т.е. все будет записано внутри т.н. «тегов».

Т.е. у свойства «FundingType» есть подчиненный элемент «id», где его форма равна «Атрибут»

В этом случае код при написании НЕ изменится:

Замечу, что этот код похож на рис.16

Воот, а результат будет немножко другой:

Т.е. значение запишется сразу в сам «тег».

Есть такое свойство, как «Gender»

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

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

Недостатки 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

При помощи данной схемы можно проверить 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:complexType – может содержать в себе вложенные элементы).
  • — объявление вложенности. То есть, тип будет содержать вложенные элементы.
  • — объявляем элемент с именем «название» (стандартного типа «строка» — xs:string).
  • — объявляем элемент с именем «цена» (стандартного типа «число» — xs:decimal).

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

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

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

Ваша схема

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

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

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

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

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

1 способ

Описание типа

2 способ

Описание типа элемента

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

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

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

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

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

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

XML Schema

XML-документ

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

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

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

Схема документа XML (X ML S chema D efinition) — это наиболее часто встречающийся тип файлов XSD. Он известен еще с 2001 года. В этих файлах содержится самая разнообразная информация, описывающая XML-данные — их структура, элементы, атрибуты и прочее. Для того чтобы открыть файл такого типа, существует множество способов. А для примера возьмем простейший образец этого формата (схема заказа на покупку), который предлагается корпорацией Майкрософт.

Способ 1: XML-редакторы

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

XML Notepad

Данная программа представляет собой один из вариантов «Блокнота» от Майкрософт, специально предназначенный для работы с XML-файлами. Соответственно, и XSD можно свободно открывать и редактировать с ее помощью.


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

Oxygen XML Editor

В отличие от предыдущего, этот программный продукт представляет собой намного более серьезное средство для разработки документов XML. Структуру файла XSD он представляет в виде красочной таблицы


Данная программа является мультиплатформенной как в виде самостоятельного приложения, так и как плагин Eclipse.

Открыть файлы XSD можно и с помощью более «тяжелых» программных продуктов, например, таких как Microsoft Visual Studio, Progress Stylus Studio и других. Но все они представляют собой инструменты для профессионалов. Устанавливать их только с целью открыть файл не имеет смысла.

Способ 2: Браузеры

Открываются файлы XSD и в любом браузере. Для этого можно точно так же воспользоваться контекстным меню или меню «Файл» (если таковое имеется в браузере). А можно просто прописать путь к файлу в адресной строке браузера или перетащить его в окно веб-проводника.

Вот как выглядит наш образец, открытый в Google Chrome :


А это он же, но уже в Яндекс Браузере :


А здесь он уже в Opera :


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

Способ 3: Текстовые редакторы

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

Вот примеры того, как можно это сделать с помощью разных текстовых редакторов:

Блокнот

Это самое простое приложение для работы с текстовыми файлами, по умолчанию присутствующее в любой версии Windows. Так выглядит наш образец, открытый в «Блокноте»:


Из-за отсутствия удобств редактировать XSD-файл в нем будет трудновато, но для быстрого ознакомления с его содержимым «Блокнот» вполне может сгодиться.

Еще один неизменный компонент Windows, по сравнению с «Блокнотом» обладающим более расширенным функционалом. Но на открытии XSD-файла это никак не отражается, поскольку данный редактор также не предоставляет никаких дополнительных удобств для его просмотра и редактирования.


Как видим, за исключением интерфейса программы, ничего в отображении файла XSD, по сравнению с Блокнотом, не изменилось.

Notepad++

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

Открыть файлы XSD можно и в более сложных текстовых процессорах, таких как MS Word или LibreOffice . Но так как эти программные продукты не предназначены специально для редактирования таких файлов, отображаться они будут точно так же, как и в «Блокноте».

Схема вышивки крестиком

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

Программа Pattern Maker For Cross Stitch является основным средством для открытия схем вышивки, так как разработана специально для их создания и редактирования. Вот так выглядит открытый в Pattern Maker файл XSD.


Программа имеет богатый инструментарий. Кроме того, ее можно легко русифицировать. К тому же она распространяется на бесплатной основе.

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

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

Документа XML

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

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="shiporder.xsd">
John Smith

Ola Nordmann

Langgt 23

4000 Stavanger
Norway


Empire Burlesque
Special Edition
1
10.90


Hide your heart
1
9.90

Документ 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") .

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

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

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



...

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

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




...


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










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

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










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

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

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





























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

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

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

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








































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

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

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

































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

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





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

Компьютер