Я хочу использовать или DTD или XSD для описания моего XML-документа. Я считал, что XSDs лучше, чем ДАТЫ, так как они поддерживают пространства имен и типы данных, и что ДАТЫ являются более старыми.
Это означает, что я должен только использовать XSDs для всех будущих потребностей и полностью проигнорировать DTD как опцию? Я должен даже потрудиться изучать структуру ДАТ?
Какие факторы я должен рассмотреть при выборе между XSD и DTD?
Вероятно, важно изучить DTD как отдельное упражнение, просто чтобы знать, как они работают на тот случай, если вы столкнетесь с ними где-то еще, и чтобы вы могли оцените некоторые вещи, которые XSD пытался решить.
Однако для ваших текущих целей описания XML-документа действительно придерживайтесь XSD.
Помимо гораздо более богатого набора функций (как вы упомянули, включая типы данных и пространства имен), они также сами являются XML-документами, что может быть действительно полезным. Поскольку они представляют собой XML, вы можете намного проще проверить их правильность и правильность, и вы можете написать код, который будет работать с ними как с обычными XML-файлами (например, если вы хотите автоматически сгенерировать классы кода из схемы)
{ {1}}Это действительно зависит от того, насколько сложен структура такова, что вам нужно настроить.
Если вам нужны такие вещи, как пространство имен и типы данных, определенно используйте XSD. Если вам просто нужна быстрая небольшая схема для проверки, DTD даст вам более высокую производительность, поскольку не требуется синтаксический анализ XML.
Насколько я понимаю, XSD является производным от DTD, поэтому понимание DTD даст прочную основу для изучения XSD, а также укажет на некоторые недостатки DTD.
Было бы неплохо понять структуру DTD (это поможет вам лучше понять XSD в долгосрочной перспективе) ... но вы следует использовать XSD в дальнейшем.
Нет вреда в изучении DTD, но обязательно используйте XSD, потому что XSD имеет больше силы,
С помощью XSD вы можете не только проверять структуру/иерархию тегов XML, но и,
... и многое другое ...
Есть некоторые ограничения: например,