Пустые теги XHTML не рассматриваются ни одним браузером как пустые теги - PullRequest
0 голосов
/ 08 октября 2010

Итак, я попробовал этот код XHTML 1.1 (проверено на validator.w3.org) в Chrome 6, IE 8 и Firefox 3.5. <p> после <a/> становится гиперссылкой, а <p> после <div/> становится красным:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html 
    xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>test</title>
    </head>
    <body>
        <p><a href="http://www.yahoo.com"/></p>
        <p>
            this should not be hyperlinked
        </p>
        <div style="background:red"/>
        <p>this should not be red</p>
    </body>
</html>

Это действительно плохие новости для тех, кто пытается работать с документами, используя парсеры / генераторы XML.

Я мог бы просто преобразовать все теги </> в <></>, но это означало бы, что такие вещи, как <br/>, становятся <br></br> - что просто странно, хотя и допустимо.

Мысли

1 Ответ

4 голосов
/ 08 октября 2010

Если вы предоставляете документ с типом содержимого XML (например, application/xhtml+xml), у вас не должно быть этой проблемы.

Звучит так, как будто вы подаете документ как text/html (хотя это не благословлено спецификацией text / html , которая подходит только к XHTML 1.0), и в этом случае вам нужно следовать рекомендации по совместимости с HTML , поскольку вы говорите браузерам (и другим пользовательским агентам), что это HTML, а не XHTML.

Я мог бы просто преобразовать все теги </> в <></>, но это означало бы, что такие вещи, как <br/>, становятся <br></br> - что просто странно, хотя и допустимо.

… и неправильно. Некоторые браузеры будут воспринимать это как <br><br>. Элементы, определенные как EMPTY, должны использовать самозакрывающийся синтаксис , , все остальное должно иметь явные начальные и конечные теги .

К сожалению, простой вариант использования правильного типа контента просто создает другую проблему ...

Internet Explorer won't open XHTML documents

… хотя я считаю, что это будет решено, когда IE8 и ниже потеряют значительную долю рынка, так как IE9 вводит поддержку XHTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...