Академический Документы
Профессиональный Документы
Культура Документы
XSD - умный XML - Хабр
XSD - умный XML - Хабр
КАК СТАТЬ АВТОРОМ Неделя тестировщиков Тест: реальное изобретение или выдумка?
XSD — это язык описания структуры XML документа. Его также называют XML Schema. При
использовании XML Schema XML парсер может проверить не только правильность синтаксиса
XML документа, но также его структуру, модель содержания и типы данных.
Кроме того, XSD расширяем, и позволяет подключать уже готовые словари для описания
типовых задач, например веб-сервисов, таких как SOAP.
Стоит также упомянуть о том, что в XSD есть встроенные средства документирования, что
позволяет создавать самодостаточные документы, не требующие дополнительного описания.
Рассмотрим в качестве примера XSD документ, описывающий часть структуры аккаунта на хабре.
https://habr.com/ru/post/90696/ 1/18
11/24/21, 2:23 PM XSD — умный XML / Хабр
Текст XSD схемы и XML документ, соответствующий этой схеме я не стал включать в статью из-
за их размера.
https://habr.com/ru/post/90696/
П XML 2/18
11/24/21, 2:23 PM XSD — умный XML / Хабр
Первая строчка схемы указывает, что документ является XML документом и использует
кодировку UTF-8.
<?xml version="1.0" encoding="UTF-8"?>
<xs:element name="habra_user">
<xs:annotation>
<xs:documentation>Главный элемент схемы. Описывает пользователя
хабра</xs:documentation>
</xs:annotation>
Тег <xs:complexType> описывает «сложный» тип данных user_name. При желании его можно
вынести как отдельный тип данных, по аналогии с contact_info. Для этого, нужно блок
<xs:complexType> перенести в <xs:schema> и указать атрибут name, а элементу задать атрибут
type.
Элементы user_name, first_name, last_name имеют строковый тип и описывают пользователя, имя
и фамилию владельца аккаунта.
<xs:simpleType>
https://habr.com/ru/post/90696/ 3/18
11/24/21, 2:23 PM XSD — умный XML / Хабр
p yp
<xs:restriction base="xs:string">
<xs:length value="19"/>
<xs:pattern value="[1-2][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9] [0-2][0-9]:
[0-5][0-9]:[0-5][0-9]"/>
</xs:restriction>
</xs:simpleType>
В таком случае длина строки будет всегда 19, это задано тегом <xs:length> и само значение будет
соответствовать шаблону, указанным в теге <xs:pattern>.
Тег <xs:choice> определяет то, что вложенным элементом будет один из элементов ICQ или
linkedin.
Тег <xs:sequence> указывает на то, что вложенные элементы будут blog_name и blog_url именно в
такой последовательности. Если последовательность не важна, то нужно использовать тег
<xs:all>.
Дополнительно о XSD схемах можно почитать Wikipedia и W3C. Для создания макета была
использована программа Altova XMLSpy.
Спасибо за внимание!
Хабы: XML
https://habr.com/ru/post/90696/ 4/18
11/24/21, 2:23 PM XSD — умный XML / Хабр
Редакторский дайджест
Присылаем лучшие статьи раз в месяц
Электропочта
69 0
Карма Рейтинг
Комментарии 34
Легко — это последнее слово, которое приходит в голову при работе с xsd. Сложно описывать (RelaxNG
проще и гибче), сложно валидировать, очень сложно программно создавать новый xml по имеющемуся
xsd.
XSD полезен. Статьи про XSD нужны. Но не используйте в статьях про одно из самых безумных
порождений W3C слова «легко», «просто», «универсально», я вас умоляю.
+13 Ответить
https://habr.com/ru/post/90696/ 5/18
11/24/21, 2:23 PM XSD — умный XML / Хабр
C удовольствием познакомился с RELAX NG года 4 назад, жаль практики мало. Рекомендую всем,
кому необходимо описывать структуру XML документов, обратить внимание на RELAX NG. У
знакомых с BNF сложностей в освоении RELAX NG не будет. У RELAX NG есть два синтаксиса — XML
и компактный.
Смое смешное, что класс документов, которые можно описать с помощью RELAX NG, шире, чем тех,
которые можно описать с помощью XML Schema! Готов поискать пруфлинк.
+4 Ответить
Да, обратить внимание на Relax NG пожалуй стоит, но вот Compact Syntax — это ведь не XML.
Значит нужен дополнительный парсер, собственно, зачем это нужно?
А обычный Relax NG, конечно, проще XSD, но не на столько, чтобы переходить на него. XSD — это
стандарт, который очень широко распространен. Гораздо шире, чем RNG.
+1 Ответить
Без очень дорогого редактора читать XSD очень тяжко. А RNG/RNC влёт преобразуется один в
другой, и очень легко читается.
0 Ответить
Преимущества текстовых форматов общеизвестны. XML проще парсить, но сложнее писать. Для
редактирования XML удобный редактор найти можно, но все равно скорее всего будут вылезать
задачи, когда придется смотреть на голый XML (например, дифы сравнивать). А парсер для RNG
есть, RNGOM проект на dev.java.net.
Мне сложно придумать что-либо менее достойное быть стандартом, чем XSD :) Этот тот случай,
когда я бы приложил усилия, чтоб сменить мейнстрим, чем плыть в нем.
https://habr.com/ru/post/90696/ 7/18
11/24/21, 2:23 PM XSD — умный XML / Хабр
+1 Ответить
Прямо сейчас пишу xsd-парсер, это ад. over 20 встроенных базовых типов.
0 Ответить
100%!!) слова «легко», «просто», «универсально» нельзя ставить в одно предложение с XML,XSL,XSD
не в коем случае! исключение только если перед ними стоит частица НЕ!)
0 Ответить
Стоит отметить то что XSD можно использовать при ручном редактировании XML в Visual Studio, напр.
есть инструкция как там организовать авто-дополнение кода при работе с SVG документами.
0 Ответить
Унылый XML…
-10 Ответить
https://habr.com/ru/post/90696/
К 'XSD S h ' 'XML S h ' И 'XSD' 8/18
11/24/21, 2:23 PM XSD — умный XML / Хабр
Классно, только вот не 'XSD Schema', а 'XML Schema'. Или просто отдельно 'XSD'.
+6 Ответить
Поправил, спасибо.
0 Ответить
0 Ответить
0 Ответить
Не, потому что, в частности, на каждый <foo:barbazqux ...> надо написать свой
</foo:barbazqux> . И потому что имена атрибутов пишутся лишь для того, чтобы обозначить, что
тут атрибут.
0 Ответить
И это хорошо. Желающие могут назвать элементы в стиле <x:y42></x:y42> и получить экономию в
размере ценой сотни лучей ненависти в свой адрес от тех, кто будет дебажить эти данные/ПО.
0 Ответить
0 Ответить
Во всяком случае, когда отлаживаешься, при большой степени вложенности объектов это
лучше, чем подсчитывать скобки (а-ля JSON, который очень write-only), количество символов/
байт (а-ля Netstrings) или вообще пробелов (а-ля YAML, который больше подходит для
статического задания структур). Человеколюбивей XML пока ничего не придумали(?)…
0 Ответить
https://habr.com/ru/post/90696/ 10/18
11/24/21, 2:23 PM XSD — умный XML / Хабр
+3 Ответить
0 Ответить
+1 Ответить
0 Ответить
В Eclipse есть дизайнер, но он очень уж специфичный. Больше ничего не нашёл. Есть ещё какой-
то очень платный, но я его только мельком видел.
+1 Ответить
https://habr.com/ru/post/90696/ 11/18
11/24/21, 2:23 PM XSD — умный XML / Хабр
+1 Ответить
0 Ответить
+1 Ответить
О чем топик-то? О том, что «XSD это так клево и вот — поглядите я на вики статью нашел»?
+2 Ответить
Статья — реальный пример, как нужно создавать XSD. Ничего подобного на хабре не было.
-2 Ответить
https://habr.com/ru/post/90696/ 12/18
11/24/21, 2:23 PM XSD — умный XML / Хабр
+2 Ответить
Если написано просто о сложных вещах, о которых не все знают — это не значит плохо.
0 Ответить
Реклама
ПОХОЖИЕ ПУБЛИКАЦИИ
Jaxb (XJC) генерация классов из XML Schema (XSD) с описаниями классов и полей в виде
аннотаций. XJC плагин
+12 21K 35 5 +5
https://habr.com/ru/post/90696/ 13/18
11/24/21, 2:23 PM XSD — умный XML / Хабр
+8 9.6K 45 6 +6
YaTalks 2021: почему IT — новый Трудно быть богом: обсуждаем, Смотрим на изобретения,
космос как строить стек в хаосе задач получившие James Dyson Award
ВОПРОСЫ И ОТВЕТЫ
https://habr.com/ru/post/90696/ 14/18
11/24/21, 2:23 PM XSD — умный XML / Хабр
вчера в 20:43
Пока, Хабр
вчера в 14:10
вчера в 13:54
+41 4.3K 31 7 +7
https://habr.com/ru/post/90696/ 15/18
11/24/21, 2:23 PM XSD — умный XML / Хабр
вчера в 11:00
вчера в 17:03
+36 4.4K 55 9 +9
Реклама
ЧИТАЮТ СЕЙЧАС
Пока, Хабр
Турецкая лира упала на 15%, Apple приостановила продажи своей продукции в стране
2.5K 2 +2
Команда модераторов Rust уволилась в полном составе: они хотели возможность банить Core Team и
требовали соблюдения CoC
https://habr.com/ru/post/90696/ 16/18
11/24/21, 2:23 PM XSD — умный XML / Хабр
5.6K 13 +13
Турбо
Песочница Конфиденциальность
Настройка языка
https://habr.com/ru/post/90696/ 17/18
11/24/21, 2:23 PM XSD — умный XML / Хабр
Настройка языка
О сайте
Техническая поддержка
© 2006–2021 «Habr»
https://habr.com/ru/post/90696/ 18/18