Преимущества явного объявления пространства имен xhtml по умолчанию

#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 это происходит «волшебным образом».