Примерно в половине примеров svg, которые я вижу в Интернете, код обернут в простые простые теги <svg></svg>
.
В другой половине теги svg имеют много сложных атрибутов, таких как:
<svg
xmlns="http://www.w3.org/2000/svg"
version="1.1"
xmlns:xlink="http://www.w3.org/1999/xlink">
У меня вопрос: можно ли использовать простые теги SVG? Я пытался поиграть со сложными, и все отлично работает, если я их не включу.
Все пользовательские агенты (браузеры) игнорируют атрибут версии, поэтому вы всегда можете его удалить.
Если вы встраиваете свой SVG файл в HTML-страницу и используете эту страницу как text/html
то атрибуты xmlns не требуются. Встраивание SVG-кода в HTML-документы является сравнительно недавним нововведением, появившимся как часть HTML5.
Если же вы служите страницу как изображение /SVG + XML или приложение /XHTML + XML или любой другой тип MIME, который заставляет агент пользователя использовать XML - анализатор, то атрибуты Xmlns необходимы. До недавнего времени это был единственный способ сделать что-то, поэтому много контента обслуживается так.
Атрибут xmlns="http://www.w3.org/2000/svg"
:
<svg>
. 2 xmlns:xlink="http://www.w3.org/1999/xlink"
:
<svg>
с атрибутами xlink:. 2 Атрибут version="1.1"
:
1Интернационализированные идентификаторы ресурсов (RFC3987)
2С HTML5
3Расширяемый язык разметки (XML) 1,0
+4 Вероятно, до выхода дальнейших основных версий.
5SVG 2, Рекомендация кандидата W3C, 7 августа 2018 г.
Я хотел бы добавить к обоим ответам, но у меня нет баллов, я добавляю новый ответ. В недавних тестах на Chrome (Версия 63.0.3239.132 (Официальная сборка) (64-битная Windows)) я обнаружил, что:
xhr.responseText
и elm.innerHTML
. Это не требует xmlns.xhr.responseXML.documentElement
и elm.appendChild()
или elm.insertBefore()
. Этот метод создания встроенного SVG приводит к получению полупеченных результатов без объявления базового пространства имен SVG, как в xmlns="http://www.w3.org/2000/svg"
. <Svg> загружается в HTML, но функции уровня документа, такие как getElementById()
, не распознаются в элементе <svg>. Я предполагаю, что это потому, что он использует XMLHttpRequest XML-парсер вне HTML.
<!DOCTYPE svg xmlns="www.w3.org/2000/svg">
это сработает, но если я уберу xmlns или поменяю его на<!DOCTYPE svg xmlns="www.example.com">
это не работает. Это почему?