Обслуживание XHTML и самозакрывающихся тегов - PullRequest
0 голосов
/ 27 декабря 2011

Я пытаюсь следовать строгому стандарту xhtml 1.0 при создании своего сайта. Прямо сейчас validator.w3.org подтверждает мой документ как действительный, следуя стандарту XHTML 1.0 Strict. Вот пример кода:

<div style="color:#f00"><div style="color:#00f" />Text should be red and not blue</div>

К сожалению, Firefox, Chrome и Internet Explorer неправильно анализируют документ: Похоже, что все они игнорируют закрывающий оператор моих самозакрывающихся тегов (в основном

, и некоторых других тегов), что приводит к неправильному отображению сайта с синим текстом. если я заменю теги
на
, все будет хорошо. Я прочитал об этом и в соответствии с XML-документа, в том числе XHTML, может быть закрыто

Вот важная информация заголовка, которая идет с документом:

<?xml version="1.0" encoding="UTF-8" ?>
<!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">
        <head>
            <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />

Сам Apache2 по-прежнему отправляет текст / тип HTML Content-Type, поскольку я еще не выяснил, как перезаписать MIMP-тип .php, хотя информация в должна отменять это в любом случае.

Как я могу использовать самозакрывающиеся теги, такие как

, чтобы они правильно обрабатывались обычными браузерами?

Ответы [ 2 ]

0 голосов
/ 31 июля 2012

Отправка этого с php:

<?php
header('Content-Type: application/xhtml+xml;');
?>

Вот как вы переопределяете стандартные заголовки, используя PHP. Вы должны быть осторожны, потому что header() работает только в том случае, если выходные данные еще не отправлены. Это означает, что вы не должны помещать что-либо до части <?php, заголовок не будет работать, так как ваш сервер уже отправил как заголовки, так и любой другой контент.

0 голосов
/ 27 декабря 2011

XHTML - это HTML, использующий XML, и HTML не имеет самозакрывающихся тегов, как вы показываете. Это работает в XHTML, но не в HTML, и пока вы не работаете как application / xml + xhtml.

Метатег типа содержимого не влияет на то, как сервер обслуживает страницу, и предназначен только для автономного использования. Таким образом, вы должны установить его на сервере или с PHP, в вашем случае.

...