Показать сообщение отдельно
  #1 (permalink)  
Старый 02.02.2011, 23:17
Аспирант
Отправить личное сообщение для xintrea Посмотреть профиль Найти все сообщения от xintrea
 
Регистрация: 02.01.2011
Сообщений: 56

[XML][DOM] Неожиданно перестал понимать! (С картинками)
Здравствуйте!


Сейчас столкнулся с ситуацией, в которой понял, что я ничего не понимаю в 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-представление такого простого примера? Как исправить?
Ответить с цитированием