web-dev-qa-db-fra.com

Des paramètres SVG tels que "xmlns" et "version" sont-ils nécessaires?

Dans environ la moitié des exemples de svg que je vois sur Internet, le code est enveloppé dans un langage simple et simple <svg></svg> Mots clés.

Dans l'autre moitié, les tags svg ont beaucoup d'attributs compliqués comme ceci:

<svg 
  xmlns="http://www.w3.org/2000/svg" 
  version="1.1" 
  xmlns:xlink="http://www.w3.org/1999/xlink"> 

Ma question est la suivante: puis-je utiliser les balises svg simples? J'ai essayé de jouer avec les plus compliquées, et tout fonctionne bien si je ne les inclus pas.

172
Lars

Tous les agents utilisateurs (navigateurs) ignorent l'attribut de version, vous pouvez donc toujours le supprimer.

Si vous incorporez votre fichier SVG en ligne dans une page HTML et que vous le communiquez sous la forme text/html _ alors les attributs xmlns ne sont pas obligatoires . L'intégration de SVG en ligne dans des documents HTML est une innovation relativement récente intégrée à HTML5.

Si toutefois vous présentez votre page sous la forme image/svg + xml ou application/xhtml + xml ou tout autre type MIME obligeant l'agent utilisateur à utiliser un analyseur XML, alors les attributs xmlns sont obligatoires . C'était la seule façon de faire les choses jusqu'à récemment donc il y a beaucoup de contenu servi comme ça.

179
Robert Longson

Le xmlns="http://www.w3.org/2000/svg" attribut est:

  • Obligatoire pour les fichiers image/svg + xml 1
  • Facultatif pour en ligne <svg>2

Le xmlns:xlink="http://www.w3.org/1999/xlink" attribut est:

  • Obligatoire pour les fichiers image/svg + xml avec xlink: attributs. 1
  • Facultatif pour en ligne <svg> avec xlink: attributs. 2

Le version="1.1" attribut est:

  • Recommandé de respecter les normes image/svg + xml 3
  • Apparemment ignoré par chaque agent d'utilisateur. 4
  • Supprimé dans SVG 2. 5

1 identificateurs de ressource internationalisés (RFC3987)
2 depuis HTML5
3 Langage de balisage extensible (XML) 1.
4 Probablement jusqu'à la sortie d'autres versions majeures.
5 SVG 2, Recommandation du candidat au W3C du 07 Août 2018

196
ncomputers

J'aimerais ajouter aux deux réponses, mais je n'ai pas de points, j'ajoute une nouvelle réponse. Lors de tests récents sur Chrome (version 63.0.3239.132 (version officielle) (Windows 64 bits))), j'ai constaté que:

  1. Pour les fichiers SVG en ligne directement entrés dans le fichier HTML, via l'éditeur de texte ou javascript et Elm.innerHTML, les attributs xmlns ne sont pas nécessaires, comme indiqué dans les deux autres réponses.
  2. Mais pour les SVG en ligne chargés via javascript et AJAX, il existe deux options:
    • Utilisez xhr.responseText Et Elm.innerHTML. Cela ne nécessite pas les xmlns.
    • Utilisez xhr.responseXML.documentElement Et Elm.appendChild() ou Elm.insertBefore(). Cette méthode de création du fichier SVG intégré génère des résultats à moitié cuits sans que l'espace de nom SVG de base soit déclaré, comme dans xmlns="http://www.w3.org/2000/svg". <Svg> est chargé dans le code HTML, mais les fonctions au niveau du document, telles que getElementById(), ne sont pas reconnues sur l'élément <svg>. Je suppose que c'est parce qu'il utilise l'analyseur XML XMLHttpRequest en dehors du code HTML.
5
jamess