2014-11-28 1 views
2

Я создаю API, который возвращает ответ XML. Я создал DTD для ответа, и он доступен по общедоступному URL-адресу. DTD был предоставлен предназначенным пользователям в документации API, которую я создал. Обязательно ли включать ссылку DTD в XML-ответ? Будут ли парсеры XML, которые работают с ответом XML, автоматически пытаться проверить ответ с DTD? Если указание DTD является необязательным, какие плюсы и минусы указывать и пропускать его?Обязательно ли указывать DTD в XML?

+0

Вместо этого вы должны использовать XSD, это намного лучше. Если вам не нужна его для проверки или создания формы, забудьте ее. – inf3rno

ответ

3

Обязательно ли включать ссылку DTD в XML-ответ тоже?

Это не предусмотрено спецификацией XML. Независимо от того, соответствует ли он другим спецификациям или правилам, которые вы хотите (или обязаны) соответствовать, только вы могли бы сказать.

Анализаторы XML, которые работают с ответом XML, автоматически пытаются проверить ответ с помощью DTD?

Если вы укажете его, некоторые, потому что они ошибочно путают декларативный смысл декларации типа документа (этот документ [предназначены для] действует против этого DTD) с императивным значением «Пожалуйста, проверьте этот документ для применимость к этому DTD ».

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

Если указание DTD является необязательным, какие плюсы и минусы указывать и пропускать его?

В пользу его указания: это полезная информация для тех, кто пытается решить проблему с использованием XML-документа (ов). Это делает более вероятным, что ошибки в потоках XML-данных будут обнаружены раньше.

В пользу отказа от него: некоторые мозговые системы считают валидацию против DTD как влекущую за собой риски безопасности, и не могут думать о лучшем способе защиты от атаки на миллиард смеха. Если эти мозговые системы также не могут отличить декларативные и императивные значения декларации типа документа, они могут отказаться обрабатывать документ.(Конечно, поскольку ваша жизнь, вероятно, будет более счастливой, если вы сможете избегать таких систем, этот аргумент может быть принят обратным образом: если вы укажете DTD, вы с меньшей вероятностью будете запутываться в неловкости с таким мозгом -dad-системы.Такие жалобы на DTD служат в качестве системы раннего предупреждения, давая вам время для запуска по-другому. Если вы опустите DTD, вы можете столкнуться с системами, недостатки которых в конечном итоге станут видимыми другими способами.)

3

DTD требуется только в том случае, если вы используете именованные объекты за пределами 5, встроенные в XML (& и др.).

Некоторые синтаксические анализаторы XML будут игнорировать его полностью. Некоторые будут загружать его и использовать.

Плюсы:

  • XML, может быть подтверждено
  • В общем, вы можете использовать пользовательские именованные объекты в анализаторами, которые поддерживают его

Минусы:

  • Дополнительные HTTP запросов в парсерах, которые его поддерживают
  • Пользовательский n AMED лицо сломается документ в анализаторах, которые не поддерживают его
Смежные вопросы