#xml #xhtml #namespaces
#xml #xhtml #пространства имен
Вопрос:
Если у меня есть документ xhtml, я предполагаю, что пространство имен по умолчанию равно «xhtml». Есть ли какое-либо преимущество или недостаток в явном объявлении этого пространства имен по умолчанию, как в:
<!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" xmlns:xi="http://www.w3.org/2001/XInclude">
<head>
. . .
Ответ №1:
В браузерах, совместимых с HTML5, пространство имен по умолчанию для HTML-элементов при сериализации HTML является http://www.w3.org/1999/xhtml
При сериализации XHTML применяются правила XML. Если вы не назначите пространство имен по умолчанию с помощью xmlns=
, элементы без префиксов не будут находиться в пространстве имен, и браузер не поймет, как интерпретировать вашу разметку. В этом смысле вам нужно явно объявить пространство имен по умолчанию.
Однако…
Используете ли вы сериализацию HTML или сериализацию XHTML, зависит не от DOCTYPE, а от content-type. Вы получаете сериализацию XHTML только в том случае, если вы обслуживаете страницу с типом содержимого XML, таким как application/xhtml xml
.
Если вы обслуживаете страницу с типом содержимого text/html
(а я готов поспорить, что это так, поскольку почти все так делают), то вы используете сериализацию HTML, и ваш строгий документ XHTML 1.0 не имеет значения. В этом случае объявление пространства имен по умолчанию ничего не дает, за исключением того, что средство проверки остается тихим.
Комментарии:
1. Означает ли это, что браузеры по-прежнему будут успешно отображать html-элементы, даже если они не принадлежат пространству имен?
2. Нет, это означает, что они всегда должны находиться в
http://www.w3.org/1999/xhtml
пространстве имен для правильного отображения. Но в HTML это происходит «волшебным образом».