Вредоносное ПО (malware) - это назойливые или опасные программы,...
В этой главе будет показано, как написать XML-схемы. Вы также узнаете, что схема может быть записана по-разному.
Документа XML
Давайте посмотрим на этот XML - документ под названием "shiporder.xml" :
xsi:noNamespaceSchemaLocation="shiporder.xsd">
Langgt 23
Документ 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.
Обмениваясь данными между приложениями, пользователи обычно не задумываются, как именно осуществляется этот обмен и с какими трудностями он может быть связан. Сложность в том, что программы могут быть созданы на базе совершенно разных технологий и, следовательно, «говорить» на разных языках. Чтобы обменивающиеся информацией приложения могли понимать друг друга, данные должны быть переданы на некоем общем понятном им языке, каким является расширяемый язык разметки .
Для чего нужен формат XSD
Определенному формату должна соответствовать также и структура самого XML, для чего разработчиками был выработан общий набор правил. Набор этот получил название языка описания структуры XML-документа или попросту XSD схема. В сущности, это файл метаданных, в котором хранится информация о том, как должен быть структурирован XML-документ. Используются схемы XSD для валидации (проверки) файлов XML.
Расширение XSD также соответствует схеме вышивания крестиком, но это уже другой формат XSD, отличный от того, который используется для описания XML-документов. Файлы этого типа содержат псевдоизображение, цветовую легенду и описание вышивки. Открыть их можно только специальными приложениями, тогда как для просмотра содержимого предназначенных для валидации XML-документов файлов XSD подойдут простые текстовые редакторы.
Чем открыть файл со схемой XSD
Ну что же, надеемся, что это такое XSD-схема вам понятно, перейдем теперь к программному обеспечению, используемому для чтения файлов этого типа. Открыть XSD-файл валидации XML можно любым текстовым редактором, даже Блокнотом, но всё же удобнее использовать для этих целей соответствующие редакторы. Итак, представим, что у нас есть некая XSD схема. Чем ее открыть лучше всего?
Microsoft XML Notepad
Легкий и удобный текстовый редактор, заточенный под работу с XML-файлами. Отображает содержимое XML и XSD-файла в двух представлениях – в виде древовидной структуры и в виде последовательности строк. Для редактирования используется первый режим. XML Notepad поддерживает подсветку синтаксиса, поиск и замену, работу с регулярными выражениями и функцию XInclude. Основное преимущество этой программы заключается в ее простоте.
EditiX XML Editor
Если вы ищете, чем открыть файл XSD, и при этом вам нужен достаточно продвинутый инструмент, обратите внимание на программу EditiX XML Editor. Приложение включает в себя редактор и отладчик, может использоваться как полноценная среда разработки. Инструмент поддерживает работу с XML, XSD, XSLT, DTD, реляционными базами данных и т.п., проверку XML-документов на предмет ошибок, в программе имеется встроенный редактор XQuery, Grid и CSS. Отдельно стоит отметить наличие генератора схем, позволяющего просматривать содержимое XML-документов в виде таблицы связанных блоков.
Notepad++
Открыть файл XSD способен Notepad++ – текстовый редактор, который подойдет всем, и начинающим пользователям, и опытным программистам. Notepad++ поддерживает все базовые функции для работы с текстовыми данными, подсветку синтаксиса, расширенный поиск, регулярные выражения, автозавершение кода, запись макросов и многое другое. Редактор имеет небольшой вес и, в отличие от двух предыдущих программ, поддерживает русский язык интерфейса.
Pattern Maker
Теперь выясним, как открыть файл XSD-вышивки крестом. Даже самые продвинутые кодовые редакторы здесь бессильны, а потому для просмотра схем вышивок вам понадобится специальная программа Pattern Maker. Основное предназначение этого приложения – создание и редактирование схем вышивки, но использовать ее можно и в качестве их просмотрщика. Функционал Pattern Maker частично схож с функционалом растровых графических редакторов, но большая его часть представлена узкоспециализированными инструментами.
Ну хорошо, теперь мы знаем, что такое формат XSD и чем его открыть. Понимание назначения XSD-файлов может вам пригодиться при анализе одной довольно таки распространенной ошибки, с которой время от времени приходится сталкиваться пользователям при работе с XML-документами. Наряду с кодом в ее описании указывается, что файл или документ не соответствует XSD схеме. Фактически это означает, что в проверяемом XML-документе имеются ошибки или несоответствия шаблону, заданному в XSD-файле.
При этом неважно, какой программой был сформирован XML-файл и для чего. Это может быть отчет для налоговой службы или иной бухгалтерский документ, а также любой XML-файл с набором неких импортируемых данных. А вот причины несоответствия бывают разные, начиная от использования устаревшей версии программного обеспечения, в котором создается XML-файл, и заканчивая пропуском важных полей, к примеру, в той же бухгалтерской отчетности.
Наиболее часто встречаемой проблемой, из-за которой пользователи не могут открыть этот файл, является неверно назначенная программа. Чтобы исправить это в ОС Windows вам необходимо нажать правой кнопкой на файле, в контекстном меню навести мышь на пункт "Открыть с помощью", а выпадающем меню выбрать пункт "Выбрать программу...". В результате вы увидите список установленных программ на вашем компьютере, и сможете выбрать подходящую. Рекомендуем также поставить галочку напротив пункта "Использовать это приложение для всех файлов XSD".
Другая проблема, с которой наши пользователи также встречаются довольно часто - файл XSD поврежден. Такая ситуация может возникнуть в массе случаев. Например: файл был скачан не польностью в результате ошибки сервера, файл был поврежден изначально и пр. Для устранения данной проблемы воспользуйтесь одной из рекомендаций:
- Попробуйте найти нужный файл в другом источнике в сети интернет. Возможно вам повезет найти более подходящую версию. Пример поиска в Google: "Файл filetype:XSD" . Просто замените слово "файл" на нужное вам название;
- Попросите прислать вам исходный файл еще раз, возможно он был поврежден при передаче;
Создающих проблемы для пользователей. Одним из них считается расширение XSD. Оно довольно редко встречается в практике, поэтому не все приложения способны его открыть. Давайте же поговорим что это за “чудовище” и какой утилитой его можно распаковать.
Выбор приложения для работы с файлом с расширением XSD.
Формат файла XSD служит для определения типа данных, возникающих в файле XML. Также он устанавливает взаимосвязь между различными параметрами. Ещё он может создаваться программой Pattern Maker for Cross stitch, которая служит помощником для начинающих вышивать крестиком. Данный софт является наиболее популярным среди таких людей.
XSD: чем открыть
Давайте же разберёмся подробнее, какими программами можно открыть XSD. Их существует довольно большое число, но мы рассмотрим самые основные.
Разумеется, что провести операцию по открытию данного формата можно и с помощью других профессиональных программ. Однако скачивать их исключительно для данной цели – это глупо и бессмысленно.
Как и в случае с XML-редакторами, можно осуществить открытие XSD и с помощью других программ. Если вы решите использовать Word, то это будет не особо верным решением, так как отображаться данные в нём будут точно так же, как и в Блокноте.
Как говорилось в начале статьи, ХSD широко используется людьми, занимающимися вышивкой. В данном случае файл представлен в виде картинки. Для его открытия и редактирования создана только одна программа – Pattern Maker for Cross-stitch. В ней можно увидеть палитру красок и описание для вышивки. Данный софт очень многофункционален, абсолютно бесплатен и без проблем может быть русифицирован.
Конвертация в другие форматы
Из-за особенностей структуры данного типа файлов, осуществить их конвертацию в другие форматы невозможно. Однако, если вы работаете со схемой вышивки, то её можно без всяких проблем преобразовать в JPG с помощью Pattern Maker for Cross-stitch. Для этого в меню приложения выберите «Экспорт в графический файл», после чего активируйте «Экспорт схемы» и «Экспорт информации».
Таким образом, вы познакомились с форматом ХSD, который может представлять собой не только текстовую информацию , но и изображение. Конечно, среди обычных пользователей он не широко распространён, но для увлечённых вышивкой людей это расширение является необходимым. Надеемся, что у вас не осталось никаких вопросов. Если же они у вас есть, то задавайте их в комментариях.
Аннотация: XML-схемы данных (XSD). Создание XSD-схемы в среде Visual Studio .NET. Создание типизированного объекта DataSet. Получение информации о структуре объекта DataSet. Загрузка XML-документов и XSD-схем в типизированный и обычный объекты DataSet. Методы ReadXml и ReadXmlSchema. Запись содержимого и структуры типизированного и обычного объекта DataSet. Методы WriteXml и WriteXmlSchema
Типизированный объект DataSet. Чтение и запись XML-документов
XML-схемы данных (XSD)
Схемы данных 1Точный перевод XML Schema Document - < схема документа XML >, однако мы будем в дальнейшем использовать термин "схема данных XML". XSD ( XML Schema Document, XSD) представляют собой альтернативный способ правил построения XML-документов. По сравнению с DTD, схемы обладают более мощными средствами для определения сложных структур данных, обеспечивают более понятный способ описания грамматики языка, способны легко модернизироваться и расширяться. Схема XSD может содержать следующую информацию:
- представление связей между элементами данных, аналогичное связям внешних ключей между таблицами в реляционной базе данных;
- представление уникальных идентификаторов, подобных первичному ключу;
- спецификацию типов данных каждого индивидуального элемента и атрибута в XML-документе.
Для создания схемы данных в Visual Studio .NET в главном меню переходим File \ New \ File и выбираем из списка шаблонов (см. рис. 11.3) XML Schema . Появляется окно с надписью "Чтобы начать, перетащите объекты из окна Server Explorer или Toolbox на рабочую область (область дизайна) или щелкните правой кнопкой" (рис. 11.1):
Рис.
11.1.
Дело в том, что мы находимся в режиме дизайна. Переключаемся в режим кода, для чего нажимаем на кнопку(XML):
Первая строка - это уже знакомое указание на то, что схема представляет собой XML-документ с корневым элементом xs:schema . Префикс xs : предваряет все элементы схемы, указывая на свое пространство имен. Во второй строке располагается длинное, подробное и зачастую совершенно ненужное описание схемы (сравните с аналогичным кодом для HTML-страниц). Для корректной работы вполне достаточно ограничиться следующим представлением:
Впрочем, встроенные средства визуализации студии предполагают наличие этой "шапки", поэтому ее не следует удалять. Создание схемы, описывающей заданный XML-документ в среде Visual Studio .NET - довольно простая задача. Создадим следующий документ XMLEasy.xml:
Переключаемся на вкладку(Data) и видим всего одну запись (рис. 11.2).
Рис. 11.2.
Создать схему, описывающую этот документ, можно несколькими способами: в главном меню выбрать пункт "XML \ Create Schema" (рис. 11.3, А), в режиме XML в контекстном меню выбрать этот же пункт (рис. 11.3, Б), в режиме Data в контекстном меню выбрать этот пункт (рис. 11.3, В), и, наконец, в режиме Data нажать на кнопку панели инструментов XML (рис. 11.3, Г).
Рис. 11.3.
В любом случае появляется схема документа в виде таблицы (рис. 11.4). Оставим пока режим Schema и переключимся в режим(XML).
Рис. 11.4.
Среда сгенерировала XML-код, описывающий структуру документа:
Сюда входит также описание, необходимое для дальнейшего манипулирования схемой при помощи объектов ADO .NET. В исходном документе XMLEasy.xml появилась ссылка на схему данных:
Документ XMLEasy.xsd был автоматически создан в той же самой директории, где находится XMLEasy.xml.
Для того чтобы научиться понимать схемы XSD, вначале следует поработать с описанием данных в чистом виде, без дополнительных элементов. В таблице 11.1 приводится несколько простейших XML-документов и их схем, сформированных без привязки к объектам ADO .NET.
Содержимое XML-документа | Содержимое XSD-схемы |
---|---|
|
|
Описание | |
В документе XMLEasy.xml элемент TOUR - корневой элемент, содержащий дочерний элемент IDTOUR. Общая схема для корневого элемента имеет следующий вид: |
|
Содержимое XML-документа | Содержимое XSD-схемы |
|
|
Описание | |
Корневой элемент TABLE
содержит элемент TOUR
, состоящий, в свою очередь, из группы дочерних элементов.
Элемент choice
определяет выбор других элементов, причем значение "unbounded" (неограниченно) атрибута maxOccurs указывает на возможность неограниченного наличия групп TOUR
. |
|
Содержимое XML-документа | Содержимое XSD-схемы |
|
Рис. 11.5. |
Описание | |
Для элемента IDTOUR был установлен тип данных int , для элемента CLOSED - тип boolean , для остальных - по умолчанию тип string . Изменять тип данных можно непосредственно в режиме XML-схемы данных, но более удобно - в режиме Schema (в данном случае режим будет называться DataSet ) выбирать тип данных из выпадающего списка (рис. 11.5): |
В программном обеспечении к курсу вы найдете все файлы этой таблицы в папке XSD (Code\Glava5\ XSD).
Задание типа данных в XML-документе (последний пример - табл. 11.1) - один из способов ограничения содержимого. Для ограничения значения заданного типа применяются дополнительные атрибуты. В следующем фрагменте схемы значение элемента PRICE должно быть в пределах от 50 до 100:
Для ограничения XML-документа некоторыми фиксированными значениями используется следующая конструкция:
Здесь элемент NAME может принимать только одно фиксированное значение из пяти названий стран.
Разработка XSD-схемы представляет собой довольно кропотливую работу. Визуальные средства среды Visual Studio .NET значительно облегчают эту задачу. Для освоения основных концепций желательно изучить несколько схем XML-документов, созданных автоматически. В таблицах 11.2-11.4 приводится описание основных элементов и атрибутов, которые при этом можно встретить.
Элемент | Описание |
---|---|
all | Вложенные элементы могут определяться в произвольном порядке |
annotation | Родительский элемент элементов-комментариев |
any | Любые вложенные элементы |
anyAttribute | Любые атрибуты |
appInfo | Элемент-коментарий. Задает титул схемы |
attribute | Атрибут |
attributeGroup | Группа атрибутов |
choice | Выбор других элементов. Аналог оператора "|" в DTD |
complexContent | Ограничения или расширения модели содержимого сложного типа |
complexType | Элемент сложного типа |
documentation | Элемент-комментарий. Предоставляет информацию о схеме |
element | Элемент |
extension | Расширения элемента |
field | Объявление поля. Применяется внутри элемента |
group | Группа элементов |
import | Импорт декларации типов из другой схемы |
include | Включение другой схемы в существующее пространство имен |
key | Задание элемента или атрибута с ключом, указывающим на другой элемент |
keyref | Задание элемента или атрибута, на который указывает ключ |
list | Элемент, который может содержать список значений |
redefine | Переопределение уже объявленных элементов |
restriction | Ограничение элемента |
schema | Корневой элемент схемы |
selector | Селектор для отбора XML-элементов |
sequence | Последовательность других элементов. Аналог оператора "," в DTD |
simpleContent | Модель, содержимое которой представляет только символьные данные |
simpleType | Элемент простого типа |
union | Элемент или атрибут, который может иметь множественное значение |
unique | Элемент или атрибут, который должен иметь уникальное значение |
Атрибут | Описание |
---|---|
enumeration Список значений | |
length | Длина |
maxLength | Максимальная длина |
minLength | Минимальная длина |
maxExclusive | Максимальное значение |
maxInclusive | Максимальное значение включительно |
minExclusive | Минимальное значение |
minInclusive | Минимальное значение включительно |
fractionDigits | Количество знаков после запятой в дробных числах |
totalDigits | Количество цифр |
pattern | Образец (паттерн) содержимого элементов |
default | Значение элемента или атрибута по умолчанию |
elementFormDefault | Задание свойств локального элемента как глобально определенного |
fixed | Фиксированное значение элемента или атрибута |
form | Локально объявленные элементы определяются в конкретных экземплярах документов |
itemType | Тип пунктов списка |
memberTypes | Тип членов, использованных в объединении (union ) |
maxOccurs | Максимальное количество вхождений элемента |
minOccurs | Минимальное количество вхождений элемента |
mixed | Задание элемента, имеющего смешанный тип |
name | Название элемента или атрибута |
namespace | Пространство имен |
noNamespace | Задание местоположения документа-схемы, |
SchemaLocation | не имеющего результирующих пространств имен |
nillable | Определение того, что элемент может иметь пустое значение NULL (nil ) |
ref | Задание ссылки на глобально определенный элемент |
schemaLocation | Определение местоположения схемы |
substitutionGroup | Определение замены элементов другими элементами |
targetNamespace | Результирующее пространство имен схемы |
type | Тип элемента |
use | Является элемент обязательным или нет |
value | Значение элемента схемы |
xsi:nil | Задание реального содержания пустого (NULL ) элемента XML-документа |
xsi:schemaLocation | Реальное местоположение элемента в XML-документе |
xsi:type | Реальный тип элемента в XML-документе |