Czy potrzebne są parametry SVG, takie jak' xmlns 'i' version'?

W około połowie przykładów svg, które widzę w Internecie, kod jest owinięty prostymi znacznikami <svg></svg>.

W drugiej połowie znaczniki svg mają wiele skomplikowanych atrybutów, takich jak:

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

Moje pytanie brzmi: Czy Można używać prostych znaczników svg? Próbowałem bawić się ze skomplikowanymi i wszystko działa dobrze u mnie, jeśli ich nie uwzględniam.

 229
Author: vijayst, 2013-08-27

4 answers

Wszyscy agenci użytkownika (przeglądarki) ignorują atrybut version, więc zawsze możesz go upuścić.

Jeśli osadzasz swój SVG na stronie HTML i podajesz tę stronę jako text/html, to atrybuty xmlns nie są wymagane . Osadzanie SVG inline w dokumentach HTML jest dość niedawną innowacją, która pojawiła się jako część HTML5.

Jeśli jednak podajesz swoją stronę jako image / svg+xml lub application / xhtml+xml lub jakikolwiek inny typ MIME, który powoduje, że agent użytkownika używa parsera XML, to atrybuty xmlns wymagane . To był jedyny sposób na robienie rzeczy do niedawna, więc jest wiele treści serwowanych w ten sposób.

 233
Author: Robert Longson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-26 06:58:02

Atrybut xmlns="http://www.w3.org/2000/svg" to:

  • wymagane dla plików image/svg+XML. 1
  • Opcjonalnie dla inlined <svg>. 2

Atrybut xmlns:xlink="http://www.w3.org/1999/xlink" to:

  • wymagane dla image/svg+XML plików z atrybutami XLink:. 1
  • Opcjonalnie dla inlined <svg> z atrybutami XLink: . 2

The version="1.1" atrybut to:

  • zaleca zgodność ze standardami plików image/svg+XML . 3
  • widocznie ignorowane przez każdego agenta użytkownika. 4
  • usunięto W SVG 2. 5

1Internacjonalizowane identyfikatory zasobów (RFC3987)
2od HTML5
3Extensible Markup Language (XML) 1.0
4 prawdopodobnie do czasu wydania kolejnych głównych wersji.
5SVG 2, rekomendacja kandydata W3C, 07 sierpnia 2018

 248
Author: ncomputers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-26 06:57:01

Chciałbym dodać do obu odpowiedzi, ale nie mam punktów, dodaję nową odpowiedź. W ostatnich testach Chrome (Wersja 63.0.3239.132 (Official Build) (64-bitowy Windows)) stwierdziłem, że:

  1. dla inline SVG, który jest bezpośrednio wprowadzany do pliku HTML, za pomocą edytora tekstu lub javascript i elm.innerHTML, atrybuty xmlns nie są konieczne, jak stwierdzono w dwóch pozostałych odpowiedziach.
  2. ale dla inline SVG, który jest ładowany przez javascript i AJAX, są dwa opcje:
    • Użyj xhr.responseText i elm.innerHTML. To nie wymaga xmlns.
    • Użyj xhr.responseXML.documentElement i elm.appendChild() lub elm.insertBefore(). Ta metoda tworzenia pliku SVG w wierszu generuje half-piece bez deklarowania podstawowej przestrzeni nazw SVG, jak w xmlns="http://www.w3.org/2000/svg". wczytuje się do HTML, ale funkcje na poziomie dokumentu, takie jak {[6] } nie są rozpoznawane w elemencie . Zakładam, że dzieje się tak dlatego, że używa parsera XMLHttpRequest XML poza HTML.
 8
Author: jamess,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-07 15:15:41

O wersji SVG atrybut MDN WebDoc mówi

Przestarzałe od SVG 2
Ta funkcja nie jest już zalecana. Choć niektóre przeglądarki nadal mogą go obsługiwać, być może został już usunięty od odpowiednich standardów internetowych, może być w trakcie upuszczone lub mogą być przechowywane tylko dla celów zgodności. Unikaj używania i zaktualizuj istniejący kod, jeśli to możliwe; patrz tabela zgodności na dole tej strony, aby kierować swoją decyzja. Należy pamiętać, że to funkcja może przestać działać w dowolnym momencie.

Atrybut version jest używany do wskazania specyfikacji SVG dokument jest zgodny z. Jest to dozwolone tylko na elemencie głównym. Informatyka ma charakter czysto doradczy i nie ma wpływu na renderowanie lub przetwarzanie.

PS: SVG 2 nie jest jeszcze standardem.

 2
Author: Velusamy Velu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-09-27 15:45:52