элемент - создание xsd схемы на основе xml




DTD или XML-схема. Какая из них лучше? (3)

XML-схема может выполнять более сложные проверки. Например, если DTD может проверить, является ли тип данных элемента XML целым или строковым. В то время как XML-схема может выполнять более сложные проверки, например, если элемент xml представляет собой строку, начинающуюся с буквы верхнего регистра или целого числа позитива. Наконец, XML-схема использует синтаксис XML и его естественный выбор для разработки веб-сервисов.

Каковы плюсы и минусы в DTD и XML Schemas (я даже не уверен, что такое официальное имя последнего!)? Что лучше? Почему нам нужно два способа сделать то же самое?

Редактировать: я нашел это в статье, которую я читал, и это побудило меня задать вопрос:

Почему W3C XML Schema Language?

Язык XML-схемы W3C не является единственным языком схемы. Фактически, спецификация XML описывает определения типа документа (DTD) как способ выражения схемы. Кроме того, предварительные версии JAXB Reference Implementation работали только с DTD, то есть не со схемами, написанными на языке XML Schema. Однако язык XML-схемы намного богаче, чем DTD. Например, схемы, написанные на языке XML Schema Language, могут описывать структурные отношения и типы данных, которые не могут быть выражены (или не могут быть легко выражены) в DTD. Существуют инструменты для преобразования DTD в язык XML-схемы W3C, поэтому, если у вас есть схемы на основе DTD, которые вы использовали с более ранней версией JAXB Reference Implementation, вы можете использовать эти инструменты для преобразования схем в XML Schema Language. http://java.sun.com/developer/technicalArticles/WebServices/jaxb/#binsch

Наверное, мне бы хотелось, чтобы примеры иллюстрировали, почему XML-Schema лучше (если это действительно так).


Несколько лет назад были бы причины использовать DTD над XML Schema (это было более распространено или лучше поддерживалось инструментами XML). Однако сегодня я не вижу причин не использовать XML-схему вместо DTD: XML Schema гораздо более мощная.

Однако XML-схема далеко не идеальна (просто попробуйте прочитать спецификацию или книгу по XML-схеме ...), и с тех пор было разработано много альтернатив (Schematron, Examplotron, RelaxNG). Они могут иметь технические преимущества по сравнению с XML Schema, но XML Schema настолько распространена сегодня, что я вижу очень мало случаев, когда альтернатива имела бы смысл.


Существует также Relax NG - еще один мощный язык для проверки XML-документов, а также Schematron и других технологий от DSDL . Relax NG очень прост и имеет удобную для пользователя форму - Relax NG Compact, позволяющий писать схемы, подобные схемам BNF.