'Xmlns' ve 'version' gibi SVG parametrelerine gerek var mı?


206

İnternette gördüğüm svg örneklerinin yaklaşık yarısında, kod basit basit <svg></svg>etiketlerle sarılmıştır .

Diğer yarısında, svg etiketlerinde bunun gibi birçok karmaşık özellik vardır:

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

Sorum şu: basit svg etiketlerini kullanmak uygun mudur? Karmaşık olanlarla oynamayı denedim ve onları içermezsem her şey yolunda.

Yanıtlar:


210

Tüm kullanıcı aracıları (tarayıcılar) sürüm özniteliğini yoksayar, böylece bunu her zaman bırakabilirsiniz.

Bir HTML sayfası içinde SVG satır içi gömmek gibi o sayfayı hizmet ederse text/htmlo zaman xmlns nitelikleri gerekli değildir . SVG'yi satır içi HTML belgelerine gömmek, HTML5'in bir parçası olarak ortaya çıkan oldukça yeni bir yeniliktir.

Eğer görüntü / svg + xml veya application / xhtml + xml veya sonra bir XML ayrıştırıcı kullanmak için kullanıcı ajanı neden olan herhangi bir başka MIME türü olarak sayfanızı hizmet ancak nitelikleri xmlns edilir gerekli . Yakın zamana kadar bir şeyler yapmanın tek yolu buydu, bu yüzden bu şekilde sunulan çok fazla içerik var.


5
"Tüm UA'lar sürüm niteliğini yoksayar, böylece bunu her zaman bırakabilirsiniz." - ama spec konu hakkında ne söylemek zorunda? "Tarayıcılar bununla başa çıkmanıza izin verecektir" açık bir şekilde yanlış olan (veya) birçok uygulama için doğrudur (veya bir noktada doğrudur).
Mark Amery

IE11'de, eğer koyarsam <!DOCTYPE svg xmlns="www.w3.org/2000/svg">çalışır, ancak xmlns'i alırsam veya değiştirirsem <!DOCTYPE svg xmlns="www.example.com">işe yaramaz. Neden?
Donald Duck

8
Bu cevap için bir kaynak gösterilebilir mi lütfen?
2540625

69
Firefox'ta SVG kodunun önemli bir kısmını yazdım ve öyle söylüyorum. Bu yeterince iyi değil mi? Değilse, yine de bazı bağlantılar ekledim.
Robert Longson

1
@Marcel, bu veri urisleri genellikle durum olan image / svg + xml ise, cevabın son kısmı tutar.
Robert Longson

230

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

  • Gerekli için image / svg + xml dosyaları. 1
  • Satır içi için isteğe bağlıdır<svg> . 2

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

  • Gerekli için image / svg + xml dosyalar Xlink: bağlıyor. 1
  • Opsiyonel için inlined <svg> ile Xlink: bağlıyor. 2

version="1.1"Niteliktir:

  • Önerilen uymak görüntü / svg + xml dosyaları standartları. 3
  • Görünüşe göre her kullanıcı aracısı tarafından yoksayıldı . 4
  • SVG 2'de kaldırıldı . 5

1 Uluslararası Kaynak Tanımlayıcıları (RFC3987)
2 HTML5'ten beri
3 Genişletilebilir Biçimlendirme Dili (XML) 1.0
4 Muhtemelen diğer büyük sürümlerin yayınlanmasına kadar.
5 SVG 2, W3C Aday Önerisi, 07 Ağustos 2018


2
Http olması gerekiyor mu yoksa https de olabilir mi?
JohannesB

2
@JohannesB her iki protokol de uyumludur: D
ncomputers

1
@JohannesB evet burada satır içi örnek HTTP HTTPS ve xlink özniteliklerine sahip satır içi svg içeren image / svg + xml dosyası var örnek HTTP HTTPS
ncomputers 26:17

1
Teşekkürler, sanırım Nick Craver da hata yapar;)
JohannesB

2
Yanlış anlama versionxml bildirimi (niteliğini <?xml version...için) versionait öznitelik <svg>elemanı. Birincisi XML biçimlendirme dilinin sürümü hakkında, ikincisi ise SVG sürümünü belirtir. Bu cevabın yazarı bu hatayı, in'daki SVG belirtimine değil XML'ye başvurarak yaptı. Düzeltmeye çalıştım, ama bazı aptallar düzenlemeyi reddetti.
Bachsau

7

Her iki yanıta da eklemek istiyorum, ama puanım yok, yeni bir cevap ekliyorum. Chrome (Sürüm 63.0.3239.132 (Resmi Derleme) (64 bit Windows)) ile ilgili son testlerde şunları buldum:

  1. Doğrudan HTML dosyasına girilen satır içi SVG için, metin düzenleyici veya javascript ve elm.innerHTML aracılığıyla, diğer iki cevapta belirtildiği gibi xmlns özniteliklerine gerek yoktur.
  2. Ancak, javascript ve AJAX ile yüklenen satır içi SVG için iki seçenek vardır:
    • Kullanım xhr.responseTextve elm.innerHTML. Bu xmlns gerektirmez.
    • xhr.responseXML.documentElementVe elm.appendChild()veya tuşlarını kullanın elm.insertBefore(). Satır içi SVG oluşturmanın bu yöntemi, temel SVG ad alanı olduğu gibi açıklanmadan yarı pişmiş sonuçlar üretir xmlns="http://www.w3.org/2000/svg". <svg> HTML'ye yüklenir, ancak getElementById()<svg> öğesinde tanınmayan belge düzeyi işlevler . Bunun HTML dışında XMLHttpRequest XML ayrıştırıcısını kullanması nedeniyle olduğunu varsayalım.

0

SVG version niteliğindeki Hakkında MDN WebDoc diyor

SVG 2'den beri kullanımdan kaldırıldı
Bu özellik artık önerilmemektedir. Bazı tarayıcılar yine de destekliyor olsa da, zaten ilgili web standartlarından kaldırılmış olabilir, bırakılma sürecinde olabilir veya yalnızca uyumluluk amacıyla saklanabilir. Kullanmaktan kaçının ve mümkünse mevcut kodu güncelleyin; kararınızı yönlendirmek için bu sayfanın altındaki uyumluluk tablosuna bakın. Bu özelliğin herhangi bir zamanda çalışmayabileceğini unutmayın.

Version özelliği, bir SVG belgesinin hangi spesifikasyona uyduğunu belirtmek için kullanılır. Yalnızca kök öğede izin verilir. Tamamen tavsiye niteliğindedir ve işleme veya işleme üzerinde hiçbir etkisi yoktur.

Not: SVG 2 henüz bir standart olmaktan çok uzak.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.