Каково пространство имен по умолчанию для HTML / HTML5?

4

В соответствии с этой страница некоторым пользователем с именем "w3c" пространство имен по умолчанию для HTML:

http://www.w3.org/1999/xhtml

Он явно ошибался, так как xhtml использовался для отказавшего стандарта HTML4 на основе XML. Какое правильное пространство имен я должен использовать?

Фон: Я пишу приложение, использующее XML. Я хочу иметь возможность сохранять данные в XML node с помощью пространств имен. Например,

<s:Button width="100" height="100" html:color="blue" color="black" /> 

Анализатору XML требуется пространство имен для префикса "html".

  • 11
    "by some user named "w3c"" это шутка?
  • 3
    XHTML не потерпел неудачу, все еще активно использовался и не был основан на HTML4. Если вы используете XML и планируете преобразовать его в HTML, вы ДОЛЖНЫ использовать XHTML. Но ваша первая строчка заставляет меня думать, что вы несерьезны, так что это скорее комментарий, чем ответ.
Показать ещё 2 комментария
Теги:
xml-namespaces

2 ответа

7
Лучший ответ

Как документировано W3C, кто является телом как по спецификациям XML, так и по HTML (WHATWG имеет отдельную спецификацию HTML 5, но пока она в некотором роде не синхронизирована с спецификацией W3C, WHATWG все еще считает ее W3C роль стандартизировать спецификацию как REC), пространство имен для HTML при использовании с сериализацией XML (которое иногда называют XHTML) составляет http://www.w3.org/1999/xhtml.

Это пространство имен охватывает все версии HTML с такими сериализациями XML, которые были указаны до сих пор, включая XHTML 1.0 и 1.1, которые были в значительной степени использованы более десяти лет, XHTML 2.0, который ввел несколько модульных идей, но, возможно, инкубатор для нескольких идей, чем как реализованная версия, и "HTML5 сериализуется как XML", который иногда называют XHTML5.

Поскольку другое тело с лошадью в гонке относительно того, как указано HTML 5, WHATWG, вы можете заметить, что они также говорят, что если вы сериализуете HTML5 как XML, вы должны использовать пространство имен http://www.w3.org/1999/xhtml и с другая сериализация либо не использует пространство имен, либо использует его. Per https://wiki.whatwg.org/wiki/FAQ#What_is_the_namespace_declaration.3F:

В XHTML вам необходимо указать пространство имен.

<html xmlns="http://www.w3.org/1999/xhtml">

В HTML атрибут xmlns в настоящее время разрешен для любого элемента HTML, но только если он имеет значение " http://www.w3.org/1999/xhtml". Он вообще ничего не делает, он просто позволяет облегчить миграцию с XHTML1. Это не декларация пространства имен в HTML, потому что HTML еще не поддерживает пространства имен. См. Вопрос, будет ли поддержка пространств имен в HTML.

Следующий FAQ также применим здесь:

HTML определяется в терминах DOM, и при разборе текста /html все элементы HTML будут автоматически помещаться в пространство имен HTML, http://www.w3.org/1999/xhtml. Однако, в отличие от сериализации XHTML, в сериализации HTML нет реального синтаксиса пространства имен (см. Предыдущий вопрос). Другими словами, вам не нужно объявлять пространство имен в вашей разметке HTML, как в XHTML. Тем не менее, вам разрешено указывать атрибут xmlns для каждого элемента HTML, если пространство имен http://www.w3.org/1999/xhtml.

Кроме того, синтаксис HTML обеспечивает способ встраивания элементов из MathML и SVG. Элементы, помещенные внутри элемента контейнера math или svg, будут автоматически помещаться в пространство имен MathML или пространство имен SVG, соответственно, парсером. Синтаксис пространства имен не требуется, но снова атрибут xmlns разрешен, если его значение является правильным пространством имен.

В заключение, в то время как HTML не допускает синтаксис пространства имен XML, существует способ встраивания MathML и SVG, и атрибут xmlns может использоваться для любого элемента под заданными ограничениями, таким образом, который разумно совместим с DOM уровень.

  • 0
    Я думаю, что ваш ответ отвечает на этот вопрос, но здесь есть связанный, хотя и не повторяющийся вопрос, stackoverflow.com/questions/34407647/… .
3

XHTML

Следующее объявление пространства имен по умолчанию required в XHTML для строго соответствующих документов:

<html xmlns="http://www.w3.org/1999/xhtml">

Корневой элемент документа должен содержать объявление xmlns для пространство имен XHTML [XMLNS]. Пространство имен для XHTML определяется как http://www.w3.org/1999/xhtml

HTML5

То же самое объявление пространства имен по умолчанию необязательный в HTML5:

<html xmlns="http://www.w3.org/1999/xhtml">

... вам не нужно объявлять пространство имен в вашей разметке HTML, так как вы делать в XHTML. Однако вам разрешено указывать атрибут xmlns. каждый элемент HTML, если пространство имен http://www.w3.org/1999/xhtml

  • 0
    Хорошо, почему это не было обновлено до чего-то вроде, http://www.w3.org/2015/html ? Они явно относятся к двум различным семантикам.
  • 0
    По той же причине, что пространство имен MathML продолжает быть http://www.w3.org/1998/Math/MathML ; Пространство имен SVG продолжает оставаться http://www.w3.org/2000/svg ; пространство имен XSLT продолжает оставаться http://www.w3.org/1999/XSL/Transform ; и т. д.: непрерывность .
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню