[xhtml] почему <tag /> и <tag></tag> трактуются по-разному?
От: StevenIvanov США  
Дата: 02.09.09 10:58
Оценка:
Всем привет.

Главный вопрос: Почему записи <tag /> и <tag></tag> трактуются по разному в xhtml?
Описание проблемы:
Изучаю html. Исходная задачка — расположить строго друг под другом 3 div-а в xhtml.
Сначала решил задачку так:

div1.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>div test 1</title>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <link href="div1.css" rel="stylesheet" type="text/css" />
</head>

<body>
    <div id="d1" />
    <div id="d2" />
    <div id="d3" />
</body>
</html>


div1.css:
div {
    width: 100%;
}

#d1 {
    height: 80px;
    background-color: red;
}

#d2 {
    height: 45px;
    background-color: green;
}

#d3 {
    height: 20px;
    background-color: blue;
}


дивы сливаются (opera 10, chrome, firefox 3.5)! Не понятно — почему?

Стоит переписать html так — все заработает как надо:

    <div id="d1"></div>
    <div id="d2"></div>
    <div id="d3"></div>
Re: [xhtml] почему <tag /> и <tag></tag> трактуются по-разно
От: Uzzy Россия  
Дата: 02.09.09 12:59
Оценка: 5 (2) -1
Здравствуйте, StevenIvanov, Вы писали:

SI>Всем привет.


SI>Главный вопрос: Почему записи <tag /> и <tag></tag> трактуются по разному в xhtml?

SI>Описание проблемы:
SI>Изучаю html. Исходная задачка — расположить строго друг под другом 3 div-а в xhtml.

Полагаю, браузеры <div /> считают пустым элементом и не выкидывают при рендере, в случае <div></div> браузеры считают див не пустым, но с пустым контентом. Если рассматривать в виде DOM-а, то <div /> не будет содержать детей, когда <div></div> будет иметь дите IHtmlText (кажись) с пустым содержимым.
Re[2]: [xhtml] почему <tag /> и <tag></tag> трактуются по-ра
От: Uzzy Россия  
Дата: 02.09.09 13:01
Оценка:
Поправка
Полагаю, браузеры <div /> считают пустым элементом и выкидывают при рендере, в случае <div></div> браузеры считают див не пустым, но с пустым контентом, соотвественно отрисовывают. Если рассматривать в виде DOM-а, то <div /> не будет содержать детей, когда <div></div> будет иметь дитё IHtmlText (кажись) с пустым содержимым.
Re[2]: [xhtml] почему <tag /> и <tag></tag> трактуются по-ра
От: StevenIvanov США  
Дата: 02.09.09 17:04
Оценка:
Здравствуйте, Uzzy, Вы писали:

U>Здравствуйте, StevenIvanov, Вы писали:


SI>>Всем привет.


SI>>Главный вопрос: Почему записи <tag /> и <tag></tag> трактуются по разному в xhtml?

SI>>Описание проблемы:
SI>>Изучаю html. Исходная задачка — расположить строго друг под другом 3 div-а в xhtml.

U>Полагаю, браузеры <div /> считают пустым элементом и не выкидывают при рендере, в случае <div></div> браузеры считают див не пустым, но с пустым контентом. Если рассматривать в виде DOM-а, то <div /> не будет содержать детей, когда <div></div> будет иметь дите IHtmlText (кажись) с пустым содержимым.


Возможно вы правы.
Однако мне это кажется крайне странным.
Насколько я понимаю xhtml должен валидироваться и читаться xml парсером, т.е. построенный кусок DOM-а для элемента <tag></tag> должен быть полностью эквивалентен DOM-у для элемента <tag />!
Есть ли утверждение в стандарте для xhtml что это не так?
Я, к сожалению, этого не нашел.
Re: [xhtml] почему <tag /> и <tag></tag> трактуются по-разно
От: . Великобритания  
Дата: 02.09.09 18:37
Оценка: 95 (3)
StevenIvanov wrote:

hint: mime-type
> div1.xhtml
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[3]: [xhtml] почему <tag /> и <tag></tag> трактуются по-ра
От: ssmaslov  
Дата: 03.09.09 07:30
Оценка:
Здравствуйте, StevenIvanov, Вы писали:

SI>Здравствуйте, Uzzy, Вы писали:


U>>Здравствуйте, StevenIvanov, Вы писали:


SI>>>Всем привет.


SI>>>Главный вопрос: Почему записи <tag /> и <tag></tag> трактуются по разному в xhtml?

SI>>>Описание проблемы:
SI>>>Изучаю html. Исходная задачка — расположить строго друг под другом 3 div-а в xhtml.

U>>Полагаю, браузеры <div /> считают пустым элементом и не выкидывают при рендере, в случае <div></div> браузеры считают див не пустым, но с пустым контентом. Если рассматривать в виде DOM-а, то <div /> не будет содержать детей, когда <div></div> будет иметь дите IHtmlText (кажись) с пустым содержимым.


SI>Возможно вы правы.

SI>Однако мне это кажется крайне странным.
SI>Насколько я понимаю xhtml должен валидироваться и читаться xml парсером, т.е. построенный кусок DOM-а для элемента <tag></tag> должен быть полностью эквивалентен DOM-у для элемента <tag />!
SI>Есть ли утверждение в стандарте для xhtml что это не так?
SI>Я, к сожалению, этого не нашел.

А кто вам сказал, что броузеры поддерживают стандарты на 100%?
Re[2]: [xhtml] почему <tag /> и <tag></tag> трактуются по-ра
От: StevenIvanov США  
Дата: 03.09.09 07:40
Оценка:
Здравствуйте, ., Вы писали:

.>StevenIvanov wrote:


.>hint: mime-type

>> div1.xhtml

Спасибо!!!
Re[3]: [xhtml] почему <tag /> и <tag></tag> трактуются по-ра
От: . Великобритания  
Дата: 03.09.09 07:54
Оценка:
StevenIvanov wrote:

> .>hint: mime-type

>> > div1.*x*html
> Спасибо!!!
Вообще говоря это вполне очевидно — какой использовать парсер, xml или html, браузер должен решить до того как он начнёт парсить. Поэтому содержимое файла на это повлиять не может. А значит приходится выставлять mime-type на веб-сервере или ставить правильное расширение файла (xml, кстати, тоже подходит).
К сожалению, под IE (по крайней мере до IE7, потестируйте кто-нибудь на IE8, плз) это всё равно не поддерживает, поэтому на практике это не применимо. Вот и приходится формировать xhtml так, чтобы он мог парситься и html-парсером, и xml-парсером одинаково.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[2]: [xhtml] почему <tag /> и <tag></tag> трактуются по-ра
От: . Великобритания  
Дата: 03.09.09 08:00
Оценка: 99 (2)
Uzzy wrote:

> Полагаю, браузеры <div /> считают пустым элементом и не выкидывают при

> рендере, в случае <div></div> браузеры считают див не пустым, но с
> пустым контентом. Если рассматривать в виде DOM-а, то <div /> не будет
> содержать детей, когда <div></div> будет иметь дите IHtmlText (кажись) с
> пустым содержимым.
Совершенно неверно. Используется html-парсер, а поэтому <div /> воспринимается как <div>, т.к. / просто игнорируется, как невалидная конструкция т.е. эти теги считаются незакрытыми. Т.е. с т.з. html документ выглядит так:
[html]
<body>
<div id="d1" >
<div id="d2" >
<div id="d3" >
</div></div></div></body>
[/html]

А с точки зрения DOM теги <div/> и <div></div> абсолютно эквивалентны, никаких пустых содержимых не бывает.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.