В статье разберемся с 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-документами.
Ну, а если вы хотите больше информации по рассматриваемой теме — вот несколько полезных ссылок на обучающие видеоролики, подробно объясняющие эту концепцию:
На фоне роста спроса на ликвидность в бычьем рынке 2025 года, криптозаймы снова выходят на…
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…