Инструкции по обработке XML и пробелы - PullRequest
0 голосов
/ 11 декабря 2011

В настоящее время я работаю над анализатором XML / HTML для node.js (если вам интересно: ссылка ).Позвольте мне перейти прямо к делу: мне нужно знать, как мне следует обрабатывать начальные пробелы в инструкциях по обработке.Должны ли они быть равны?

  1. <?asdf ?>
  2. < ?asdf ?>
  3. <? asdf ?>
  4. < ? asdf ?>

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

Заранее спасибо!

1 Ответ

0 голосов
/ 11 декабря 2011

Согласно спецификации XML допускается только первое представление. Я бы сказал, что другие представления должны привести к ошибке.

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

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

Так, например, во время предварительной обработки данные будут изменены, окончательно проанализированы как XML: Удалить фиктивные пробелы (один препроцессор) → Угадайте закрывающие теги (другой препроцессор) → Разобрать как XML

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

Лично я не думаю, что принимать большинство конструкций желательно. Если ваши данные содержат ошибки, они должны обрабатываться как таковые.

...