Подтвердить что ты не робот

RelaxNG vs XML Schema

У меня есть проект, в котором я использую RelaxNG (jing) для проверки xml. Мне нравится синтаксис RelaxNG, но большинство инструментов, которые я работаю с XML-схемой (на самом деле, я не думаю, что у меня есть инструмент, который работает, кроме jing). Могу ли я сделать ошибку дизайна и будущей поддержки, используя RelaxNG, когда большая часть поддержки, похоже, связана с XML-схемой? Должен ли я просто придерживаться RelaxNG и заставить всех его изучить (пинать и кричать, если необходимо, j/k)? Должен ли я переключиться на xml-схему из-за поддержки инструмента?

Спасибо.

4b9b3361

Ответ 1

Ответ - это немного клише: это зависит.

На что, спросите вы? На инструментах, которые, вероятно, будут использовать ваши пользователи. И если вы зависите от своих пользователей, вы можете потерять их, если из-за отсутствия хороших инструментов их отгонит. Поскольку XML-схема, по моему опыту, очень широко используется, вы можете захотеть пересмотреть свое решение о продолжении работы Relax NG. Это лучше и понятнее, чем XML-схема, но это не значит, что проект будет успешным.

Если вы хотите немного рисковать, используйте Relax NG. И на каждом шаге вашего развития попробуйте преобразовать Relax NG в XML-схему с помощью инструмента, такого как Trang. На всякий случай, когда вы решите, что Relax NG не стоит, и вы знаете, что у вас разумная резервная копия.

Ответ 2

Написание немного ограниченных ароматов RELAX NG, а затем использование Trang для автоматического преобразования в XSD (которое мы никогда не касаемся и не смотрим) работает очень хорошо для нас.

Ответ 3

Я согласен, что это зависит от того, для чего нужно использовать схемы. Вот еще один момент: если вам нужна только проверка, да, просто перейдите с RelaxNG: это хорошо для этой цели.

Но если вы планируете выполнять привязку данных (например, JAXB) или другие задачи генерации кода, XML Schema (к сожалению...) гораздо лучший выбор, поскольку он больше предназначен для объекта-to/from-xml чем RelaxNG. И наоборот, не все, что хорошо для проверки XML; особенно учитывая дополнительную сложность. На самом деле можно было бы назвать XML Schema системой типов больше, чем схему для XML.

Ответ 4

Все зависит от того, кого вы должны убедить. Ваш анализ довольно верный: RelaxNG - лучший язык для проверки, но он имеет гораздо меньшую поддержку инструмента. Итак, какие инструменты вам действительно нужны?

Ответ 5

schematron также является еще одним разумным вариантом с мощной проверкой на основе xpath...

однако моя команда, как правило, строит все в Relax/NG compact (для красивой читаемости) и конвертирует по мере необходимости в XSD (например, для проверки на основе lib) и в противном случае игнорирует XSD.

:)

это просто работает.