Это на самом деле разъяснение ответа Хэмлока.Я помещаю это здесь вместо того, чтобы комментировать его ответ, потому что у меня нет места, чтобы рисовать красивые комментарии ASCII в комментариях.
Допустим, у нас есть следующий XML:
<a><b></b><c></c></a>
Thisгенерирует следующий DOM:
<a>--.
|
<b>
|
<c>
, что обычно соответствует ожиданиям.
Допустим, у нас теперь есть следующий XML:
<a>
<b></b>
<c></c>
</a>
Можно подуматьэто генерирует тот же DOM.Но согласно стандарту, вы ошибаетесь.Вместо этого стандарт требует, чтобы он генерировал следующий DOM:
<a>--.
|
"\n "
|
<b>
|
"\n "
|
<c>
|
"\n"
Да, в спецификации сказано, что все эти пробелы должны быть захвачены в DOM.Почти все реализации XML там делают это (не только в браузерах).Единственным исключением является IE (и, соответственно, механизм XML в JScript), потому что Microsoft не особо заботится о нарушении стандартов.
Лично это бесполезно в 99,999% случаев.Единственный раз, когда это будет полезно, это если вы пытаетесь реализовать редактор XML-кода.Но это в стандартах, поэтому браузеры должны реализовать его, если они хотят быть совместимыми со стандартами.