Здравствуйте!
Сейчас столкнулся с ситуацией, в которой понял, что я ничего не понимаю в XML и DOM. Начал проверять сам себя на примитивных примерах. Вот один из них.
Нужно создать html-файл следующего содержания, и открыть его в браузере:
Код:
|
<html><body>
<xml id="lb_logicus_modulus">
<?xml version="1.0" encoding="utf-8"?>
<root>
<version val="1"/>
<team id="12345">
<player id="0">
<table direction="1">
<line val="ABC"/>
<line val="DEF"/>
<line val="GHI"/>
</table>
<table direction="3">
<line val="JKL"/>
<line val="MNO"/>
<line val="QRS"/>
</table>
</player>
</team>
</root>
</xml>
</body></html> |
Открываем отладчик, и смотрим DOM-дерево. Что мы видим?
FireFox 3.6 покажет нам следующее:
Тут сразу возникает куча вопросов:
- Почему элемент
version включает в себя все остальные элементы
team, вместо того чтоб быть с ними на одном уровне?
- Почему элементы
line включают себя рекурсивно, вместо того чтоб быть на одном уровне?
- (Вообще эпично) Почему элемент
table идёт
после всех своих элементов
line, хотя на деле элементы
line должны находиться внутри
table?
Opera 11 покажет нам следующее:
Тут не так печально, как в FireFox, но нарушение первоначальной структуры тоже неслабое:
- Почему элемент
version включает в себя все остальные элементы
team, вместо того чтоб быть с ними на одном уровне?
- Почему элементы
line включают себя рекурсивно, вместо того чтоб быть на одном уровне?
Пояснение: это кусок JavaScript-проекта, в котором используется jQuery, и некоторые слабоструктурированные данные вставляются в код страницы в виде блока <xml>...</xml>.
Вопрос. Почему браузеры так некорректно раскладывают DOM-представление такого простого примера? Как исправить?