Как проверить соответствие xml файла xsd схеме
Оригинальная версия продукта: Visual Basic
Исходный номер КБ: 315533
Аннотация
Документы языка разметки (XML) содержат элементы и атрибуты и предоставляют гибкий и мощный способ обмена данными между приложениями и организациями. Чтобы указать допустимую структуру и содержимое документа XML, можно написать определение типа документа (DTD), схему Microsoft XML-Data Reduced (XDR) или схему определения XML-схемы (XSD).
Требования
В этой статье предполагается, что вы знакомы со следующими разделами:
Создание документа XML
Выберите тип XML-файла и нажмите кнопку Открыть.
Добавьте следующие данные в XML-документ, чтобы представлять продукт в каталоге:
Сохраните файл Product.xml в папке, к которую вы сможете легко получить доступ позже (в примерах кода в этой статье предполагается папка с C:\MyFolder именем).
Создание DTD и ссылки на XML-документ
Выберите тип текстового файла и нажмите кнопку Открыть.
Добавьте в файл следующие DTD-декларации, чтобы описать грамматику документа XML:
Сохраните файл как Product.dtd в той же папке, что и XML-документ.
Сохраните измененный XML-документ вProductWithDTD.xml.
Выполнение проверки с помощью DTD
В Module1 (перед началом основного субраутина) заявите переменную boolean с именем isValid следующим образом:
В главном субраутине создайте объект XmlTextReader для чтения XML-документа из текстового файла. Затем создайте XmlValidatingReader объект для проверки данных XML:
Объект XmlValidatingReader имеет свойство ValidationType, которое указывает тип проверки, необходимый (DTD, XDR или Схема). Задайте это свойство DTD следующим образом:
Если возникают какие-либо ошибки проверки, считыватель проверки создает событие проверки. Добавьте следующий код, чтобы зарегистрировать обработчитель событий проверки (вы реализуете субраутин MyValidationEventHandler в шаге 8 этого раздела):
Добавьте следующий код для чтения и проверки документа XML. В случае возникновения ошибок проверки для обработки ошибки будет вызван MyValidationEventHandler. Этот подраутин задает isValid false (см. шаг 8 этого раздела). Вы можете проверить состояние isValid после проверки, чтобы узнать, является ли документ действительным или недействительным.
После главного субраутина напишите субраутин MyValidationEventHandler следующим образом:
Сборка и запуск приложения.
Элемент события проверки "Продукт" имеет неполное содержимое. Ожидаемый "ProductName". Ошибка произошла в file:///C:/MyFolder/ProductWithDTD.xml (4, 3). Документ недействителен
Создание схемы XDR и ссылки на документ XML
Выберите тип текстового файла и нажмите кнопку Открыть.
Добавьте в файл следующие определения схемы XDR, чтобы описать грамматику документа XML:
Сохраните файл как Product.xdr в той же папке, что и XML-документ.
Открыть исходный Product.xml, а затем связать его с схемой XDR, следующим образом:
Сохраните измененный XML-документ вProductWithXDR.xml.
Выполните проверку с помощью схемы XDR
Измените приложение таким образом, чтобы XmlTextReader загружал ProductWithXDR.xml, следующим образом:
Установите XDR так, чтобы считыватель проверки выполнял ValidationType проверку XDR следующим образом:
Сборка и запуск приложения.
Приложение должно сообщить, что XML-документ действителен.
Измените ProductWithXDR.xml, чтобы сделать его намеренно недействительным.
Запустите приложение снова.
Приложение должно сообщить об ошибке проверки.
Создание схемы XSD и ссылки на XML-документ
Выберите тип текстового файла и нажмите кнопку Открыть.
Добавьте в файл следующее определение схемы XSD, чтобы описать грамматику документа XML:
Сохраните файл, как Product.xsd, в той же папке, что и XML-документ.
Переоценка исходногоProduct.xml и ссылка на схему XSD следующим образом:
Сохраните измененный XML-документ вProductWithXSD.xml.
Выполните проверку с помощью схемы XSD
Измените приложение так, XmlTextReader чтобы нагрузки ProductWithXSD.xml, следующим образом:
Установите схему так, чтобы считыватель проверки XSD выполнял проверку схемы ValidationType XSD следующим образом:
Создайте и запустите приложение для проверки XML-документа с помощью схемы XSD.
Приложение должно сообщить, что XML-документ действителен.
Использование пространств имен в схеме XSD
Откройте product.xsd, щелкните вкладку XML, а затем измените стартовую метку xsd:schema следующим образом, чтобы схема применялась к пространству urn:MyNamespace имен:
Запустите приложение для проверки XML-документа с помощью схемы XSD.
Пространства имен кэша
Объект позволяет кэшировали схемы в XmlSchemaCollection памяти для повышения производительности. Каждая схема связана с другим пространством имен. Добавьте следующий код в кэш Product.xsd:
После создания кода добавьте следующее XmlValidatingReader утверждение. Это добавляет кэш схемы в схему, чтобы читатель может использовать схемы в XmlValidatingReader памяти.
Проверять файл по XSD-схеме целесообрано в исключительных случаях, например, если скрипт xml-healer.py не справился с исправлением файла. Подробнее в главе IV. Скрипт для замены служебных символов в XML .
XMLPad уступает по удобству и возможностям MS Visual Studio, но если вы не являетесь программистом и у вас не установлена MS Visual Studio, лучше воспользоваться XMLPad.
Проверка по XSD-схеме в XMLPad¶
- Откройте XML-файл, который требуется проверить в XMLPad File > Open.
- Чтобы проверить файл по заданной XSD-схеме, его надо с ней ассоциировать. Перейдите в меню XML > Assign Schema/DTD.
- Выберите W3C Schema и нажмите Browse, затем выберите XSD-схему для проверки.
- После того, как XSD-схема ассоциирована, нажмите F7 или XML > Validate, чтобы проверить файл. В нижней части окна будут выведены ошибки, нажав на которые можно подсветить строку, в которой они находятся.
Для удобства отображения можно включить переносы строк Edit > Word Wrap.
Проверка по XSD-схеме в MS Visual Studio¶
- Откройте XML-файл, который требуется проверить в MS Visual Studio Файл > Открыть > Файл.
- Чтобы проверить файл по заданной XSD-схеме, его надо с ней ассоциировать. Перейдите в меню XML-код > Схемы. .
Проверка на соответсвие XSD-схеме будет осуществляться автоматически на лету. Внизу в окне Списка ошибок будет отображаться список ошибок. При нажатии на ошибку, она будет подсвечена в редакторе.
Добавить окно Списка ошибок можно через Вид > Списка ошибок.
XML ( англ. eXtensible Markup Language) — расширяемый язык разметки, предназначенный для хранения и передачи данных.
Простейший XML-документ выглядит следующим образом:
Первая строка — это XML декларация. Здесь определяется версия XML (1.0) и кодировка файла. На следующей строке описывается корневой элемент документа <book> (открывающий тег). Следующие 4 строки описывают дочерние элементы корневого элемента ( title , author , year , price ). Последняя строка определяет конец корневого элемента </book> (закрывающий тег).
Документ XML состоит из элементов (elements). Элемент начинается открывающим тегом (start-tag) в угловых скобках, затем идет содержимое (content) элемента, после него записывается закрывающий тег (end-teg) в угловых скобках.
Информация, заключенная между тегами, называется содержимым или значением элемента: <author>Erik T. Ray</author> . Т.е. элемент author принимает значение Erik T. Ray . Элементы могут вообще не принимать значения.
Элементы могут содержать атрибуты, так, например, открывающий тег <title lang="en"> имеет атрибут lang , который принимает значение en . Значения атрибутов заключаются в кавычки (двойные или ординарные).
Некоторые элементы, не содержащие значений, допустимо записывать без закрывающего тега. В таком случае символ / ставится в конце открывающего тега:
Структура XML¶
XML документ должен содержать корневой элемент. Этот элемент является «родительским» для всех других элементов.
Все элементы в XML документе формируют иерархическое дерево. Это дерево начинается с корневого элемента и разветвляется на более низкие уровни элементов.
Все элементы могут иметь подэлементы (дочерние элементы):
Правила синтаксиса (Валидность)¶
Структура XML документа должна соответствовать определенным правилам. XML документ отвечающий этим правилам называется валидным (англ. Valid — правильный) или синтаксически верным. Соответственно, если документ не отвечает правилам, он является невалидным .
Основные правила синтаксиса XML:
- Теги XML регистрозависимы — теги XML являются регистрозависимыми. Так, тег <Letter> не то же самое, что тег <letter> .
Открывающий и закрывающий теги должны определяться в одном регистре:
- XML элементы должны соблюдать корректную вложенность:
- У XML документа должен быть корневой элемент — XML документ должен содержать один элемент, который будет родительским для всех других элементов. Он называется корневым элементом.
- Значения XML атрибутов должны заключаться в кавычки:
Сущности¶
Некоторые символы в XML имеют особые значения и являются служебными. Если вы поместите, например, символ < внутри XML элемента, то будет сгенерирована ошибка, так как парсер интерпретирует его, как начало нового элемента.
В примере ниже будет сгенерирована ошибка, так как в значении "ООО<Мосавтогруз>" атрибута НаимОрг содержатся символы < и > .
Также ошибка будет сгенерирована и в слудющем примере, если название организации взять в обычные кавычки (английские двойные):
Чтобы ошибки не возникали, нужно заменить символ < на его сущность. В XML существует 5 предопределенных сущностей:
Сущность | Символ | Значение |
---|---|---|
< | < | меньше, чем |
> | > | больше, чем |
& | & | амперсанд |
' | ' | апостроф |
" | " | кавычки |
Только символы < и & строго запрещены в XML. Символ > допустим, но лучше его всегда заменять на сущность.
Таким образом, корректными будут следующие формы записей:
В последнем примере английские двойные кавычки заменены на французские кавычки («ёлочки»), которые не являются служебными символами.
Поиск информации в XML файлах (XPath)¶
XPath ( англ. XML Path Language) — язык запросов к элементам XML-документа. XPath расширяет возможности работы с XML.
XML имеет древовидную структуру. В документе всегда имеется корневой элемент (инструкция <?xml version=”1.0”?> к дереву отношения не имеет). У элемента дерева всегда существуют потомки и предки, кроме корневого элемента, у которого предков нет, а также тупиковых элементов (листьев дерева), у которых нет потомков. Каждый элемент дерева находится на определенном уровне вложенности (далее — «уровень»). У элементов на одном уровне бывают предыдущие и следующие элементы.
Это очень похоже на организацию каталогов в файловой системе, и строки XPath, фактически, — пути к «файлам» — элементам. Рассмотрим пример списка книг:
XPath запрос /bookstore/book/price вернет следующий результат:
Сокращенная форма этого запроса выглядит так: //price .
В приведенной ниже таблице представлены некоторые выражения XPath и результат их работы:
Кодировки¶
И еще один важный момент, который стоит рассмотреть — кодировки. Существует множество кодировок, о них подробнее можно прочитать в статье Набор символов.
Самыми распространенными кириллическими кодировками являются Windows-1251 и UTF-8 . Последняя является одним из стандартов, но большая часть ФНС отчетности имеет кодировку Windows-1251 .
В XML файле кодировка объявляется в декларации:
Часто можно столкнуться с ситуацией, когда текстовый редаткор некорректно распознает кодировку и отображает кракозябры. В такой случае, необходимо выбрать кодировку вручную, для этого выполните:
Программа | Кодировка |
---|---|
Notepad++ | «Документ → Кодировка» |
Geany | «Документ → Установить кодировку» |
Firefox | «Вид → Кодировка» |
Chrome | «Настройка → Дополнительные инструменты → Кодировка» |
В большинстве случаев при работе с русскоязычными файлами помогает переключение кодировки на Windows-1251 или UTF-8 . Если все равно не удается прочитать содержимое XML документа, стоит открыть его в Mozilla Firefox, он отлично распознает кодировки.
Если ничего не помогает, вполне возможно, что файл был поврежден.
XSD схема¶
XML Schema — язык описания структуры XML-документа, его также называют XSD. Как большинство языков описания XML, XML Schema была задумана для определения правил, которым должен подчиняться документ. Но, в отличие от других языков, XML Schema была разработана так, чтобы её можно было использовать в создании программного обеспечения для обработки документов XML.
После проверки документа на соответствие XML Schema читающая программа может создать модель данных документа, которая включает:
- словарь (названия элементов и атрибутов);
- модель содержания (отношения между элементами и атрибутами и их структура);
- типы данных.
Каждый элемент в этой модели ассоциируется с определённым типом данных, позволяя строить в памяти объект, соответствующий структуре XML-документа. Языкам объектно-ориентированного программирования гораздо легче иметь дело с таким объектом, чем с текстовым файлом.
Загрузите файл, и веб-сервис проведет форматно-логический контроль XML-файла. Вы можете проверить любой файл, например, межевой, технический, карту-план, границы, изменения кадастра и любые другие файлы Росреестра.
У Вас есть XML-файл, но Вы не знаете, какой это документ?
Загрузите файл в этот веб-сервис - и узнаете тип документа. Сервис работает с любыми файлами, выдаваемыми органами Росреестра, а также представляемыми в этот орган, например, межевой, технический план, кадастровый паспорт, КПТ и др.
Проверьте XML-файл на соответствие схеме
Веб-сервис проверяет XML-файл на соответствие схеме и выдает протокол проверки. Поскольку сервис сделан универсальным для всех типов файлов, то, к сожалению, протокол выдается в технологическом виде на английском языке, но названия проблемных узлов и атрибутов будут видны и понятны. Для расшифровки Вы также можете обратиться в наш отдел технической поддержки.
Инструкция:
С помощью кнопки Выберите файл (Обзор) выберите исходный XML-файл, который необходимо проверить, либо ZIP-архив, нажмите на кнопку Проверить. После этого страница обновится, и на экране будет выведен тип файла и заключение о том, соответствует ли файл схеме, протокол ошибок в случае несоответствия.
Предупреждение: загружая XML-файл, Вы автоматически выражаете свое согласие с правилами сервиса Архив КПТ. Проверка создаваемых XML-файлов встроена в программу: Полигон Про.
Внимание: передача файла на сервер и процесс проверки может занять некоторое время (даже несколько минут в зависимости от размера файла). После нажатия на кнопку Проверить не закрывайте окно браузера и не переходите по ссылкам.
Сервис работает бесплатно. Количество проверяемых файлов не ограничено.
Используя данный веб-сервис, пользователь соглашается с Политикой конфиденциальности и несет личную ответственность за загружаемые информационные материалы.
Please Note:
All data is stored in our log files and periodically deleted, if you have sensitive data, please Download the Free Liquid Studio Community Edition and use the tools directly from your desktop.
More Editors and Tools
Graphical XML Schema Editor(XSD)
Graphical XML Editor
Graphical JSON Schema Editor
JSON Editor
Data Mapper
Data Diff Viewer
XML Data Binder (C++, Java, VB6)
Читайте также: