В статье разберемся с XSD-схемой и посмотрим какую роль этот формат работы с документами играет в обработке XML.
Содержание:
1. Что такое XSD?
2. История появления XSD
3. Что использовать для открытия файла с расширением .xsd?
4. Заметки к схеме XSD
5. Пространства имен для заметок
Чтобы понять XSD, сначала поговорим об XML.
XML — это способ поместить структурированную информацию в веб-документ, а затем, при необходимости, извлечь ее оттуда. Когда вы знаете характер данных хранящихся в таком файле — вам определенно будет удобно с ними работать. Однако этими сведениями могут воспользоваться и другие пользователи, которые могут неверно их истолковать.
Именно в этот момент нам на помощь приходит XSD. XSD — это своего рода язык контроля качества, обеспечивающий хорошее описание информации в XML-файле и возможность программной валидации.
Официально XSD — это определение схемы XML (XML Schema Definition). Схема — это просто стандартный способ структурирования информации, некая совокупность слов и идей, помещенных в нужное место для лучшего восприятия написанного.
В мире XML структура — это все. XML-документ без конкретной, четко определенной структуры — это просто набор тегов. Однако до относительно недавнего времени в этом языке разметки отсутствовала возможность указывать информацию о тегах, как о держателях данных. Кроме того, язык был написан с использованием диалекта SGML, который полностью противоречит текущей спецификации XML.
Именно по этим причинам в конечном итоге был разработан язык определения схемы XML или спецификация XSD.
В этом руководстве представлен технический обзор построения XML-схем, значительно упрощающий, как проверку XML-документа
Во времена динозавров разработчики для обмена информацией между приложениями использовали данные в двоичном формате, жестко заданные длины текстовых полей или текстовые файлы с разделителями. Это было утомительно и сложно.
С файлами XML появилась возможность большую часть этой работы выполнять автоматически. Проще всего это было сделать при помощи спецификации XSD
Вот как раньше создавали схемы XML с использованием классов на платформе .Net, при этом ничего не зная о XSD:
protected void Button1_Click ( object sender, EventArgs e) { // Имя DataSet становится корневым XML-элементом DataSet MyDataSet = new DataSet("Golfers"); // блоки DataTable становятся элементами (строками) в XML-файле. DataTable MyDataTable = new DataTable("Golfer"); MyDataSet.Tables.Add (MyDataTable); // Создаем атрибуты столбцов, чтобы иметь возможность // ссылаться напрямую в GridView MyDataTable.Columns.Add(new DataColumn("ID", typeof(System.Int32), null, MappingType.Attribute)); MyDataTable.Columns.Add(new DataColumn("Name", typeof(String), null, MappingType.Attribute)); MyDataTable.Columns.Add(new DataColumn("Birthday", typeof(DateTime), null, MappingType.Attribute)); // Записываем XSD MyDataSet.WriteXmlSchema ( @ "C: \ GolfersSchema.xsd" ); // Помещаем данные в таблицу DataRow TempRow; TempRow = MyDataTable.NewRow (); TempRow [ "ID" ] = 1; TempRow [ "Name" ] = "Бобби Джонс" ; TempRow [ "Birthday" ] = new DateTime (1902, 2, 22); MyDataTable.Rows.Add (TempRow); TempRow = MyDataTable.NewRow (); TempRow [ "ID" ] = 2; TempRow [ "Name" ] = "Сэм Снид" ; TempRow [ "Birthday" ] = new DateTime (1912, 4, 15); MyDataTable.Rows.Add (TempRow); TempRow = MyDataTable.NewRow (); TempRow [ "ID" ] = 3; TempRow [ "Name" ] = "Тайгер Вудс" ; TempRow [ "Birthday" ] = new DateTime (1975, 9, 28); MyDataTable.Rows.Add (TempRow); // Записываем данные MyDataSet.WriteXml ( @ "C: \ Golfers.xml" ); }
А вот как это делают сейчас:
<? xml version = " 1.0 " standalone = " yes " ?> < Golfers > < Golfer ID = " 1 " Name = "Бобби Джонс" Birthday = " 1902-02-22 " /> < Golfer ID = " 2 " Name = "Сэм Снид" Birthday = " 1912-04-15" /> < Golfer ID = " 3 " Name = "Тайгер Вудс" Birthday = " 1975-09-28 /> </ Golfers >
Ну а так выглядит сопутствующая XSD-схема.
Обратите внимание: вы всегда можете войти в нее и что-то подправить.
<? xml version = " 1.0 " standalone = " yes " ?> < xs: schema id = " Golfers " xmlns = "" xmlns: xs = " http://www.w3.org/2001/XMLSchema " xmlns: msdata = " urn: schemas-microsoft-com: xml-msdata " > < xs: element name = "Golfers " msdata: IsDataSet = " true " msdata: UseCurrentLocale = " true " > < xs: complexType > < xs:choiceminOccurs="0"maxOccurs="unbounded"> < xs: element name = "Golfer" > < xs: complexType > < xs: atribute name = " ID " type = " xs: int " /> < xs: atribute name = " Name " type = " xs: string " /> < xs: atribute name = " Birthday " type = " xs: dateTime " /> </ xs: complexType > </ xs: element > </ xs: choice > </ xs: complexType > </ xs: element > </ xs: schema >
Проверим, соответствует ли наш XML-документ приведенной схеме:
protected void Button2_Click (object sender, EventArgs e) { // Сначала прочтем схему XML DataSet MyDataSet = new DataSet(); MyDataSet.ReadXmlSchema(@"C:\GolfersSchema.xsd"); // Теперь читаем XML-файл MyDataSet.ReadXml ( @ "C: \ Golfers.xml" ); // Смотрим, как это выглядит в GridView GridView1.DataSource = MyDataSet; GridView1.DataBind (); }
Документы имеющие расширение .xsd
относятся к текстовым файлам, они похожи по формату на XML, поэтому на них распространяются те же правила открытия и редактирования. Для работы с ними сегодня есть много разных приложений.
Наиболее популярное ПО для рассматриваемого формата — Adobe Dreamweaver
Использование аннотаций или заметок в схемах XSD необходимо для сравнения их с таблицами, а также подключенных к ним баз данных.
Такую аннотированную схему называют схемой сопоставления. Она дает пользователю сведения о взаимодействии информации представленной в виде XML-документа с хранилищем и является, по сути, XML-представлением реляционных данных. Такой подход можно сравнить с комментированием кода в IDE.
Такие заметки в XSD-схемах можно обозначить при помощи пространства имен, указанном в теге <xsd:schema>
, например:
<xsd:schema xmlns:xsd="http://www.w3.org/2022/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:mapping-schema"> ... </xsd:schema>
Префикс этого пространства имени можно записать произвольно для того, чтобы отличать их от других namespaces
.
Пример схемы с заметками (annotation
):
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:annotation>
<xs:appinfo>W3Schools Note</xs:appinfo>
<xs:documentation >
Разобравшись с XSD более детально, становится понятно, что без него пользователю было бы очень неудобно работать с XML-документами.
Ну, а если вы хотите больше информации по рассматриваемой теме — вот несколько полезных ссылок на обучающие видеоролики, подробно объясняющие эту концепцию:
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…