Инструкции по обработке XML и пробелы
В настоящее время я работаю над парсером XML/HTML для node.js
(если вам интересно: ссылка). Позвольте мне перейти к сути: мне нужно знать, как мне следует обрабатывать начальные пробелы в инструкциях по обработке. Должны ли они быть равными?
<?asdf ?>
< ?asdf ?>
<? asdf ?>
< ? asdf ?>
Я предполагаю, что строгий XML только допустит первый (но каково тогда ожидаемое поведение? Я не хочу проверять, я хочу принять большинство конструкций, которые я могу), это скорее философский вопрос.
Заранее спасибо!
1 ответ
Согласно спецификации XML допускается только первое представление. Я бы сказал, что другие представления должны привести к ошибке.
Вы можете добавить некоторую предварительную обработку для очистки недопустимых конструкций (удалить пробелы), а затем прочитать данные в формате XML.
Этот препроцессор очистит ваши данные до того, как он достигнет вашего анализатора XML- это может быть другая программа. Таким образом, ваш синтаксический анализатор XML получит действительный XML (за исключением особых случаев для анализа), если входные данные верны на полпути. Если ваш синтаксический анализатор все еще сталкивается с ошибкой, вы можете предположить, что ввод был не XML-иш вообще.
Так, например, во время предварительной обработки данные будут изменены, окончательно проанализированы как XML: Удалить поддельные пробелы (один препроцессор) → Угадайте закрывающие теги (другой препроцессор) → Разобрать как XML
На вопрос о разрешенных конструкциях отвечает ваше заявление, чтобы принять как можно больше. Потому что в этом случае вы бы удалили все пробелы после <
, если ?
Затем снова удалите пробелы до следующего слова, а затем проанализируйте как XML.
Лично я не думаю, что принятие большинства конструкций желательно. Если ваши данные содержат ошибки, они должны обрабатываться как таковые.