Как выбрать между DTD и XSD

Я хочу использовать или DTD или XSD для описания моего XML-документа. Я считал, что XSDs лучше, чем ДАТЫ, так как они поддерживают пространства имен и типы данных, и что ДАТЫ являются более старыми.

Это означает, что я должен только использовать XSDs для всех будущих потребностей и полностью проигнорировать DTD как опцию? Я должен даже потрудиться изучать структуру ДАТ?

Какие факторы я должен рассмотреть при выборе между XSD и DTD?

49
задан Pops 15 May 2012 в 23:00
поделиться

4 ответа

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

Однако для ваших текущих целей описания XML-документа действительно придерживайтесь XSD.

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

{ {1}}
46
ответ дан 7 November 2019 в 11:50
поделиться

Это действительно зависит от того, насколько сложен структура такова, что вам нужно настроить.

Если вам нужны такие вещи, как пространство имен и типы данных, определенно используйте XSD. Если вам просто нужна быстрая небольшая схема для проверки, DTD даст вам более высокую производительность, поскольку не требуется синтаксический анализ XML.

Насколько я понимаю, XSD является производным от DTD, поэтому понимание DTD даст прочную основу для изучения XSD, а также укажет на некоторые недостатки DTD.

8
ответ дан 7 November 2019 в 11:50
поделиться

Было бы неплохо понять структуру DTD (это поможет вам лучше понять XSD в долгосрочной перспективе) ... но вы следует использовать XSD в дальнейшем.

6
ответ дан 7 November 2019 в 11:50
поделиться

Нет вреда в изучении DTD, но обязательно используйте XSD, потому что XSD имеет больше силы,

С помощью XSD вы можете не только проверять структуру/иерархию тегов XML, но и,

  1. Вы можете определить тип данных в значения узлов. [дата, число, строка и т.д.]
  2. Вы также можете определить пользовательские типы_данных, [например, для узла возможными данными могут быть один из 12 месяцев... поэтому вам нужно определить все 12 месяцев в новом типе данных, записав все 12 месяцев имена как значения перечисления. Валидация показывает ошибку, если входной XML содержит любое другое значение, кроме этих 12 значений ... ]
  3. Вы можете наложить ограничение на появление элементов, используя minOccurs и maxOccurs, по умолчанию значения 1 и 1.

... и многое другое ...

Есть некоторые ограничения: например,

  1. Элемент(имя), определенный в XSD файле должен быть определен только с одним типом данных.
  2. Вы не можете проверить узел/атрибут используя значение другого узла/атрибута, используя значение другого узла/атрибута.
5
ответ дан 7 November 2019 в 11:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: