Как DTD внутри XML облегчает анализ с использованием Java DOM? - PullRequest
0 голосов
/ 27 марта 2011

эй, друзья, мне назначен проект планирования запросов.в этом проекте, если ввести SQL-подобный запрос, который я должен нарезать и превратить в XML.я выполнил эту часть, однако мне необходимо добавить DTD для этого xml, потому что, как упоминается в проекте, он помогает разобрать (используя Java DOM) этот запрос и легко найти выборку - дубликаты и объединения, указанные в запросе.

я не понимаю, как DTD помогает при использовании DOM для синтаксического анализа XML и поиска различных частей этого XML?

я мог бы использовать DOM для поиска различных частей XML безdtd ... Кто-нибудь может дать мне пример разницы?

спасибо

Ответы [ 2 ]

1 голос
/ 27 марта 2011

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

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

0 голосов
/ 27 марта 2011

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

Они, вероятно, хотят, чтобы вы включили DTD, потому что в противном случае DTD должен быть распознан по идентификатору документа PUBLIC / SYSTEM и где-то размещен. Или они должны иметь предопределенное DTD в исходном коде (также версия этого «хостинга где-то»), что может быть невозможным, если один и тот же код должен обрабатывать разные документы без предварительного знания структуры.

Заявление о нахождении дубликатов может быть проще, потому что они планируют выбросить документ в случае дубликата; не уверен, насколько это полезно для соединений, не зная деталей нарезки и поворота.

...