Как из xsd получить xml в notepad
Перейти к содержимому

Как из xsd получить xml в notepad

  • автор:

Using Notepad++ to validate XML against an XSD

Can someone explain how to use Notepad++ to validate an xml file against an xsd. There are no options in the «XML Tools» plugin dropdown that provides for specifying an XSD file. The XML plugin is installed properly in the plugins subdir and the 3 DLLs are copied to the Notepad++ EXE subdirectory. Other XML «validation» features work but there is no way to validate against an XSD.

7,832 6 6 gold badges 65 65 silver badges 91 91 bronze badges
asked Mar 15, 2013 at 15:29
user2174533 user2174533
1,463 2 2 gold badges 9 9 silver badges 4 4 bronze badges

i’ve seen several references (and screenshots) of specifying an XSD to validate an XML file — using Notepad++. for example michigan.gov/documents/cepi/…

Mar 15, 2013 at 15:37
Have u looked at when-others-then-null.blogspot.co.uk/2012/12/… It seems it contains what you need.
Mar 15, 2013 at 15:41

Using the exact XML & XSD from this example worked and i realized what i was doing wrong. I didn’t realize that the was actually reading the XSD from my hard drive from the same subdir as the XML file and validating. Thanks.

Mar 15, 2013 at 16:34
@Shmil The Cat: How to against a dtd.
Mar 18, 2015 at 13:57

@ShirgillAnsari — For DTD validation the XML must contain the DOCTYPE specifying the DTD in the same directory as the XML. like: then the tool can figure it out.

Aug 7, 2015 at 22:16

1 Answer 1

  1. In Notepad++ go to Plugins > Plugin manager > Show Plugin Manager then find Xml Tools plugin. Tick the box and click Install enter image description here
  2. Open XML document you want to validate and click Ctrl + Shift + Alt + M (Or use Menu if this is your preference Plugins > XML Tools > Validate Now ).
    Following dialog will open: enter image description here
  3. Click on . . Point to XSD file and I am pretty sure you’ll be able to handle things from here.

Hope this saves you some time.

EDIT: Plugin manager was not included in some versions of Notepad++ because many users didn’t like commercials that it used to show. If you want to keep an older version, however still want plugin manager, you can get it on github, and install it by extracting the archive and copying contents to plugins and updates folder.
In version 7.7.1 plugin manager is back under a different guise. Plugin Admin so now you can simply update notepad++ and have it back.

Free Online XML to XSD Converter

Uses the sample XML document to infer an XML schema (XSD).

Sample XML Document

Occurrence options
Type inference options
Indent character
Indent depth
Indent attributes

Document Valid

Errors

Severity Location Filename Message

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.

Create local XML and XSD files can be evaluated successfully

I wanted to use XML files to store test cases for a little development project I am doing for fun. The test cases would be stored on my local hard drive, and the schema design would be very simple. I thought I Notepad++ would be able to help me evaluate the XML with the XSD, and the XSD with the W3 XSD schema quickly. That is wishful thinking. After lots of searching and reading, I found that lots of people are having this problem, and that there aren’t any posts that lead to a useful solution. I was able to solve the problem, and I am posting my files below. Hopefully, these files will be of assistance. My problem is to create an XML file containing one or more “point buffers”, clouds of points to be used in a geometry program to create a line, circle, cone, plane, etc. Each point buffer has a name, a count of the number of points it contains, and a list of the x, y and z coordinates of all the points in the point buffer. My initial idea for the Pointbuffers.xml file to hold this data follows:

Then I created a Pointbuffers.xsd file that could be used to evaluate the XML file:

The problem was now how to get the XML file to reference the XSD file (in the same folder) so Notepad++ can validate the file, and to get the XSD file to reference the standard schema templates to that Notepad++ can validate the schema. If you install the XML tools plugin, Notepad++ will give you a hint about how to make the XML file reference the local XSD file, but that hint is incomplete. The modifications I made to the Pointbuffers.xsd header enable Notepad++ to successfully validate follow:

Note that Notepad++ could know that it is working with an XSD file, and give a better hint about how to make validate work. The hint it give now doesn’t help. To make the Pointbuffers.xml file reference the Pointbuffers.xsd file for validation I made the following modifications to its header:

**Note: ** The noNameSpaceSchemaLocation value is a URI. This path has to be able to work as a URL in a browser. You need three slashes after “file:” (Think protocol://host/path where protocol is ‘file’ and host is empty), and you can also eliminate the double slashes along the path. I believe that the double slashes will help with file systems that allow spaces in file and directory names, but you would be wise to avoid that complication in your path naming. If it is not working: copy the full file specification for the XSD into the address bar of of your browser:

file:///C:/Users/MarkA/source/XMLTest/PointBuffers/PointBuffers.xsd 

If the XSD does not display in the browser, delete all but the last component of the path (email.xsd) and see if you can’t display the parent directory. Continue in this manner, walking up the directory structure until you discover where the path diverges from the reality of your local filesystem. If the XSD does display in the browser, be prepared to hear that the tool is broken or that you must work around some limitation. File a bug, or post an article to the community. Hope this helps someone!

I. Коротко об XML¶

XML ( англ. eXtensible Markup Language) — расширяемый язык разметки, предназначенный для хранения и передачи данных.

Простейший XML-документ выглядит следующим образом:

  category="WEB">  lang="en">Learning XML Erik T. Ray 2003  

Первая строка — это XML декларация. Здесь определяется версия XML (1.0) и кодировка файла. На следующей строке описывается корневой элемент документа (открывающий тег). Следующие 4 строки описывают дочерние элементы корневого элемента ( title , author , year , price ). Последняя строка определяет конец корневого элемента (закрывающий тег).

Документ XML состоит из элементов (elements). Элемент начинается открывающим тегом (start-tag) в угловых скобках, затем идет содержимое (content) элемента, после него записывается закрывающий тег (end-teg) в угловых скобках.

Информация, заключенная между тегами, называется содержимым или значением элемента: Erik T. Ray . Т.е. элемент author принимает значение Erik T. Ray . Элементы могут вообще не принимать значения.

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

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

 first="Иван" second="Петрович" /> 

Структура XML¶

XML документ должен содержать корневой элемент. Этот элемент является «родительским» для всех других элементов.

Все элементы в XML документе формируют иерархическое дерево. Это дерево начинается с корневого элемента и разветвляется на более низкие уровни элементов.

Все элементы могут иметь подэлементы (дочерние элементы):

Правила синтаксиса (Валидность)¶

Структура XML документа должна соответствовать определенным правилам. XML документ отвечающий этим правилам называется валидным (англ. Valid — правильный) или синтаксически верным. Соответственно, если документ не отвечает правилам, он является невалидным .

Основные правила синтаксиса XML:

  1. Теги XML регистрозависимы — теги XML являются регистрозависимыми. Так, тег не то же самое, что тег .

Открывающий и закрывающий теги должны определяться в одном регистре:

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

Примечание

В большинстве XML файлов отчетов для ФНС корневым элементом является . После закрывающего тега больше ничего быть не должно.

  1. Значения XML атрибутов должны заключаться в кавычки:
 date="12/11/2007">Корректная запись  date=12/11/2007>Некорреткная запись 

Сущности¶

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

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

 ИННЮЛ="7718962261" КПП="771801001" НаимОрг="ООО"/> 

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

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

Сущность Символ Значение
< меньше, чем
> > больше, чем
& & амперсанд
' апостроф
" « кавычки

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

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

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

В последнем примере английские двойные кавычки заменены на французские кавычки («ёлочки»), которые не являются служебными символами.

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

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

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

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

   category="COOKING">  lang="it">Everyday Italian Giada De Laurentiis 2005 30.00   category="CHILDREN">  lang="en">Harry Potter J K. Rowling 2005 29.99   category="WEB">  lang="en">Learning XML Erik T. Ray 2003 39.95   

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

 30.00 29.99 39.95 

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

С помощью XPath запросов можно искать информацию по атрибутам. Например, можно найти информацию о книге на итальянском языке: //title[@lang=»it»] вернет Everyday Italian .

Чтобы получить больше информации, необходимо модифицировать запрос //book[title[@lang=»it»]] вернет:

 category="COOKING">  lang="it">Everyday Italian Giada De Laurentiis 2005 30.00  

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

Таблица I.2 — Выражения XPath ¶

Выражение XPath Результат
/bookstore/book[1] Выбирает первый элемент book , который является потомком элемента bookstore
/bookstore/book[position()

Выбирает первые два элемента book , которые являются потомками элемента bookstore
//title[@lang] Выбирает все элементы title с атрибутом lang
//title[@lang=’en’] Выбирает все элементы title с атрибутом lang , который имеет значение en
/bookstore/book[price>35.00] Выбирает все элементы book , которые являются потомками элемента bookstore и которые содержать элемент price со значением больше 35.00
/bookstore/book[price>35.00]/title Выбирает все элементы title элементов book элементов bookstore , которые содержать элемент price со значением больше 35.00

Кодировки¶

И еще один важный момент, который стоит рассмотреть — кодировки. Существует множество кодировок, о них подробнее можно прочитать в статье Набор символов.

Самыми распространенными кириллическими кодировками являются Windows-1251 и UTF-8 . Последняя является одним из стандартов, но большая часть ФНС отчетности имеет кодировку Windows-1251 .

В XML файле кодировка объявляется в декларации:

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

Таблица I.3 — Смена кодировки в разных программах ¶

Программа Кодировка
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-документа. Языкам объектно-ориентированного программирования гораздо легче иметь дело с таким объектом, чем с текстовым файлом.

Подробнее об XSD смотрите:

Примером использования XSD cхем может служить электронная отчетность:

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

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