Должен ли читатель XML игнорировать последовательные пробелы в файле XML? - PullRequest
2 голосов
/ 16 января 2009

На моей работе у нас есть свои собственные классы XML, которые создают DOM, но я не уверен, как следует обрабатывать последовательные пробелы?

, например

<some-text>
Hello     World
</some-text>

Когда это считывается в DOM, должен ли текстовый узел включать последовательные пробелы между Hello и World или просто уменьшать его до одного пробела?

Или источник XML должен быть написан так:

<some-text>
Hello &nbsp;&nbsp;&nbsp;&nbsp;World
</some-text>

или, если нет, & nbsp; чем возможно?

Ответы [ 5 ]

5 голосов
/ 16 января 2009

Немного неприятно слышать, что люди внедряют процессоры XML, даже не глядя на спецификации XML.

Из спецификации XML 1.0, раздел 2.10 Обработка пробелов " (выделено):

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

Процессор XML ДОЛЖЕН всегда передавать все символы в документе, которые не являются разметка до приложения. A ДОЛЖЕН также проверять процессор XML сообщить приложению, какой из них символы составляют пробел появляется в содержании элемента.

Специальный атрибут с именем xml: space может быть прикреплен к элементу сигнализировать о намерении, что в этом элемент, пробел должен быть сохраняется приложениями. Недействительным документы, этот атрибут, как и любой другое, ДОЛЖНО быть объявлено, если оно используется. Когда объявлено, оно ДОЛЖНО быть дано как перечислимый тип, значения которого равны единице или оба из «по умолчанию» и «сохранить». Например: ...

3 голосов
/ 16 января 2009

&nbsp; является сущностью HTML и не имеет ничего общего с самим XML.

Чтобы ответить на ваш вопрос, я бы отнесся к этому как к значительному. Даже HTML DOM рассматривает последовательные пробелы как значимые, просто визуально визуализирует только один пробел. Как это выглядит в DOM и как это выглядит на вашем экране - это две совершенно разные вещи.

2 голосов
/ 16 января 2009

РЕДАКТИРОВАТЬ: пробел в тегах считается значительным (мои первоначальные мысли о том, что HTML-код был неправильным; сначала Google, ответьте на вопросы позже!). См. это объяснение

1 голос
/ 16 января 2009

IMO кажется вполне естественным рассматривать в этом случае пробельные символы как существенные. Я ожидаю, что значение узла DOM будет равно тому, что я использовал в разметке.

0 голосов
/ 17 января 2009

Если у вас «есть свои собственные классы XML», и тот, кто их написал, еще не знает ответа на этот вопрос, у вас, вероятно, много, много, много других проблем, которые вы еще просто не обнаружили.

...