2016-07-03 2 views
7

При использовании SVG в HTML5: Является ли XML декларация <?xml version="1.0" encoding="UTF-8"?> необходимо с SVGSVG в HTML5 - когда объявление XML `<? Xml version =" 1.0 "encoding =" UTF-8 "?>` Необходимо?

  • как изображения с помощью <img> или
  • как CSS background-image ы?

Это слегка связано с "Are SVG parameters such as 'xmlns' and 'version' needed". Проблемы с пространствами имен уточняются при необходимости двумя ответами и MDN Namespace crash course.

Но SVG 1.1 не содержит утверждение о необходимости объявления XML или когда его можно оставить без внимания?

Пример без объявления:

<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200" viewBox="0 0 200 200"> 
    <circle id="circle--red" cx="30" cy="30" r="30" fill="#f00"/> 
</svg> 

Обновление 2016-07-04: Уточнено, что речь идет о XML декларации. Спасибо @ Мартин Хоннен! Обновление 2017-10-24: изменено на “UTF-8“ uppercase и оптимизирован порядок атрибутов SVGO.

+4

'' Является декларация XML-, это не доктайп. –

+0

Подробный ответ на общий XML-файл, необходимый для объявления XML, приведен на странице https://stackoverflow.com/a/7007781/1696030 . Вкратце, в версии 1.0 XML декларация ** является необязательной **, но вы могут столкнуться с проблемами с кодировкой или некоторыми (текстовыми) редакторами. –

ответ

8

Для HTML5, правильный DOCTYPE declaration является

<!DOCTYPE html> 

Это необходимо для определения режима полных стандартов в браузер.

Что вы показали,

<?xml version="1.0" encoding="utf-8"?> 

является XML declaration. Это optional for XML 1.0 и required for XML 1.1, но

  • XML 1.1 не используется широко.
  • version="1.0" и encoding="utf-8" все равно являются значениями по умолчанию.

Используйте XML-декларацию в HTML5, если вы хотите указать другую кодировку, особенно если файл может быть использован не только браузерами, но и процессорами XML.

Для получения дополнительной информации см HTML5: A vocabulary and associated APIs for HTML and XHTML.

Примечание относительно внутреннего SVG (спасибо, @Quentin): SVG, встроенный в документ HTML5, не должен иметь независимое объявление XML. Только one Объявление XML разрешено в хорошо сформированном XML, а должно быть в верхней части,, если оно есть. См. this answer для получения дополнительной информации о требованиях к размещению объявления XML.

Примечание относительно внешнего SVG (спасибо, @Kaiido): SVG ссылки с помощью HTML5 img или CSS background-images должен иметь свою собственную декларацию XML и должны использовать следующую DOCTYPE декларацию:

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
      "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 

Примечание относительно внешнего SVG (обновление) (спасибо, @user314159):

Per 1.3. SVG namespace and DTD из Scalable Vector Graphics (SVG) 2 W3C Working Draft 09 July 2015:

DTD не указан в данной спецификации, поскольку использование DTD для , как известно, является проблематичным. В частности, DTD не обрабатывают пространства имен изящно, и диапазон ограничений, которые они могут выразить, может быть ограничен. Рекомендуется, чтобы авторы не включали декларацию DOCTYPE в документы SVG.

[курсив.]

+1

Просто для ясности, вероятно, стоит упомянуть, что объявление XML должно быть в верхней части документа, а встроенный SVG в HTML 5 является частью документа HTML 5, а не независимым и не должен иметь своего собственного объявления XML. – Quentin

+1

И ни одного слова о внешнем svg? Вот в чем вопрос ... »* как встроенные изображения через' ' как CSS background-images *". В этих случаях вы должны хранить как объявления xml, так и doctype, которые должны быть '' btw. – Kaiido

+0

Ответ обновлен, чтобы отразить полезные предложения Квентина и Кайдо. Благодаря! – kjhughes

Смежные вопросы