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.
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 są wymagane . To był jedyny sposób na robienie rzeczy do niedawna, więc jest wiele treści serwowanych w ten sposób.
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
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:
- 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.
- ale dla inline SVG, który jest ładowany przez javascript i AJAX, są dwa opcje:
- Użyj
xhr.responseText
ielm.innerHTML
. To nie wymaga xmlns. - Użyj
xhr.responseXML.documentElement
ielm.appendChild()
lubelm.insertBefore()
. Ta metoda tworzenia pliku SVG w wierszu generuje half-piece bez deklarowania podstawowej przestrzeni nazw SVG, jak wxmlns="http://www.w3.org/2000/svg"
.
- Użyj
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.
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