Pull to refresh

Comments 34

«Такой подход позволяет объектно-ориентированным языкам программирования легко создавать объекты в памяти»

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

XSD полезен. Статьи про XSD нужны. Но не используйте в статьях про одно из самых безумных порождений W3C слова «легко», «просто», «универсально», я вас умоляю.
UFO landed and left these words here
C удовольствием познакомился с RELAX NG года 4 назад, жаль практики мало. Рекомендую всем, кому необходимо описывать структуру XML документов, обратить внимание на RELAX NG. У знакомых с BNF сложностей в освоении RELAX NG не будет. У RELAX NG есть два синтаксиса — XML и компактный.

Смое смешное, что класс документов, которые можно описать с помощью RELAX NG, шире, чем тех, которые можно описать с помощью XML Schema! Готов поискать пруфлинк.

Пример из статьи на RELAX NG (Compact Syntax):

# Это — документационный комментарий к стартовому правилу
start = HabraUser

## Главный элемент схемы. Описывает пользователя хабра
HabraUser = element habra_user {
attribute user_name { text },
attribute first_name { text },
attribute last_name { text },
# не помню, есть ли встроенный тип для даты
attribute date_of_birth {… },
# для ограничений используются дополнительные средства типа Schematron
attribute register_date { text },
( ContactInfo )*,
( Blogs )*
}

ContactInfo = ICQ | LinkedIn

Blogs = element blog_name {… }
element blog_url {… }
Да, обратить внимание на Relax NG пожалуй стоит, но вот Compact Syntax — это ведь не XML. Значит нужен дополнительный парсер, собственно, зачем это нужно?

А обычный Relax NG, конечно, проще XSD, но не на столько, чтобы переходить на него. XSD — это стандарт, который очень широко распространен. Гораздо шире, чем RNG.

Любой технологии — свое место.
Без очень дорогого редактора читать XSD очень тяжко. А RNG/RNC влёт преобразуется один в другой, и очень легко читается.
Преимущества текстовых форматов общеизвестны. XML проще парсить, но сложнее писать. Для редактирования XML удобный редактор найти можно, но все равно скорее всего будут вылезать задачи, когда придется смотреть на голый XML (например, дифы сравнивать). А парсер для RNG есть, RNGOM проект на dev.java.net.

Мне сложно придумать что-либо менее достойное быть стандартом, чем XSD :) Этот тот случай, когда я бы приложил усилия, чтоб сменить мейнстрим, чем плыть в нем.
Прямо сейчас пишу xsd-парсер, это ад. over 20 встроенных базовых типов.
100%!!) слова «легко», «просто», «универсально» нельзя ставить в одно предложение с XML,XSL,XSD не в коем случае! исключение только если перед ними стоит частица НЕ!)
Стоит отметить то что XSD можно использовать при ручном редактировании XML в Visual Studio, напр. есть инструкция как там организовать авто-дополнение кода при работе с SVG документами.
UFO landed and left these words here
Классно, только вот не 'XSD Schema', а 'XML Schema'. Или просто отдельно 'XSD'.
UFO landed and left these words here
Поправил, спасибо.
Тут особенно заметно, насколько XML многословен (в смысле «много букоф»).
Потому что он сочетает в себе не только данные, но и саму структуру данных.
Не, потому что, в частности, на каждый <foo:barbazqux ...> надо написать свой </foo:barbazqux>. И потому что имена атрибутов пишутся лишь для того, чтобы обозначить, что тут атрибут.
И это хорошо. Желающие могут назвать элементы в стиле <x:y42></x:y42> и получить экономию в размере ценой сотни лучей ненависти в свой адрес от тех, кто будет дебажить эти данные/ПО.
Многословность не в названии самих элементов, а в необходимости многословных закрывающих тегов и в обязательности наименования параметров-атрибутов.
Во всяком случае, когда отлаживаешься, при большой степени вложенности объектов это лучше, чем подсчитывать скобки (а-ля JSON, который очень write-only), количество символов/байт (а-ля Netstrings) или вообще пробелов (а-ля YAML, который больше подходит для статического задания структур). Человеколюбивей XML пока ничего не придумали(?)…

К слову, в программах я часто пишу в стиле:
if ( predicate_expr )
{
//… больше 20 строк кода…
} // if ( predicate_expr )

Иначе легко запутаться.
Вы так говорите, как будто это что-то плохое.
Похоже что XmlSpy — есть такой продухт под Виндоуз.
А какой продукт есть не под Виндоуз? :)
Скоро буду писать документ про xml, хотелось бы автоматически дополнить такими полезными красивостями.
В Eclipse есть дизайнер, но он очень уж специфичный. Больше ничего не нашёл. Есть ещё какой-то очень платный, но я его только мельком видел.
UFO landed and left these words here
XMLSpy. В конце статьи написано
Спасибо, не обратил внимание.
копал на эту тему месяца два назад, вот классная ссылочка:
www.citforum.ru/internet/xml/scheme/
после прочтения сваял себе xsd-файлик, теперь в студии у меня автокомплит и проверка синтаксиса XML-файлов. сказка просто.
О чем топик-то? О том, что «XSD это так клево и вот — поглядите я на вики статью нашел»?
Статья — реальный пример, как нужно создавать XSD. Ничего подобного на хабре не было.
Если написано просто о сложных вещах, о которых не все знают — это не значит плохо.

Напишите лучше, все в Ваших руках.
UFO landed and left these words here
Only those users with full accounts are able to leave comments. Log in, please.