क्या SVG पैरामीटर्स जैसे 'xmlns' और 'version' की जरूरत है?


203

इंटरनेट पर मेरे द्वारा देखे गए svg उदाहरणों के लगभग आधे हिस्से में, कोड को सादे सरल <svg></svg>टैग में लपेटा गया है ।

दूसरे आधे हिस्से में, svg टैग्स में इस तरह के बहुत सारे जटिल गुण हैं:

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

मेरा सवाल है: यह सरल svg टैग का उपयोग करने के लिए ठीक है? मैंने जटिल लोगों के साथ खेलने की कोशिश की है, और अगर मैं उन्हें शामिल नहीं करता तो सबकुछ मेरे अंत में ठीक काम करता है।

जवाबों:


206

सभी उपयोगकर्ता एजेंट (ब्राउज़र) संस्करण विशेषता को अनदेखा करते हैं, इसलिए आप हमेशा इसे छोड़ सकते हैं।

यदि आप अपने SVG इनलाइन को एक HTML पेज में एम्बेड करते हैं और उस पेज की सेवा करते हैं text/htmlतो xmlns विशेषताओं की आवश्यकता नहीं है । HTML दस्तावेजों में एसवीजी इनलाइन एम्बेड करना काफी हालिया नवाचार है जो HTML5 के हिस्से के रूप में आया था।

यदि आप अपने पेज को इमेज / svg + xml या एप्लिकेशन / xhtml + xml या किसी अन्य MIME प्रकार के रूप में सर्व करते हैं, जिसके कारण उपयोगकर्ता एजेंट XML पार्सर का उपयोग करता है तो xmlns विशेषताओं की आवश्यकता होती है । हाल तक कुछ करने का यही एकमात्र तरीका था, इसलिए इस तरह की बहुत सारी सामग्री परोसी जाती है।


5
"सभी यूएएस संस्करण विशेषता को अनदेखा करते हैं, इसलिए आप हमेशा इसे छोड़ सकते हैं।" - लेकिन इस मामले के बारे में कल्पना का क्या कहना है? "ब्राउज़र्स आपको इससे दूर होने देंगे" (या कुछ बिंदु पर है) कई प्रथाओं के सच है जो (या थे) असंदिग्ध रूप से गलत हैं।
मार्क अमेरी

IE11 में, अगर मैं <!DOCTYPE svg xmlns="www.w3.org/2000/svg">इसे काम करता हूं , लेकिन अगर मैं xmlns को हटा देता हूं या इसे बदल देता हूं तो <!DOCTYPE svg xmlns="www.example.com">यह काम नहीं करता है। ऐसा क्यों है?
डोनाल्ड डक

8
कृपया इस उत्तर के लिए एक स्रोत का हवाला दिया जा सकता है?
2540625

69
मैंने फ़ायरफ़ॉक्स में एसवीजी कोड का एक महत्वपूर्ण अंश लिखा है और मैं ऐसा कहता हूं। क्या यह पर्याप्त नहीं है? यदि नहीं, तो मैंने वैसे भी कुछ लिंक जोड़े हैं।
रॉबर्ट लोंगसन

1
@ मार्सेल नहीं यदि वे डेटा-यूआरआई इमेज / एसवीजी + एक्सएमएल हैं, जो आमतौर पर मामला है, तो उत्तर का अंतिम भाग रखता है।
रॉबर्ट लोंगसन

228

xmlns="http://www.w3.org/2000/svg"विशेषता है:

  • छवि / svg + xml फ़ाइलों के लिए आवश्यक है1
  • इनलाइन के लिए वैकल्पिक<svg>2

xmlns:xlink="http://www.w3.org/1999/xlink"विशेषता है:

  • आवश्यक के लिए छवि / svg + xml के साथ फ़ाइलें XLink: जिम्मेदार बताते हैं। 1
  • वैकल्पिक के लिए inlined <svg> साथ XLink: जिम्मेदार बताते हैं। 2

version="1.1"विशेषता है:

  • छवि / svg + xml फ़ाइल मानकों का अनुपालन करने के लिए अनुशंसित3
  • जाहिरा तौर पर हर उपयोगकर्ता एजेंट द्वारा नजरअंदाज कर दिया4
  • एसवीजी 2. 5 में निकाला गया

1 अंतर्राष्ट्रीयकृत संसाधन पहचानकर्ता (RFC3987)
2 चूंकि एचटीएमएल 5
3 एक्सटेंसिबल मार्कअप लैंग्वेज (एक्सएमएल) 1.0
4 संभवतया आगे के प्रमुख संस्करणों के रिलीज होने तक।
5 एसवीजी 2, डब्ल्यू 3 सी उम्मीदवार सिफारिश, 07 अगस्त 2018


2
क्या इसे http होना चाहिए या क्या यह https भी हो सकता है?
जोहानिसबी

2
@JohannesB दोनों प्रोटोकॉल संगत हैं: D
n कंप्यूटर्स

1
@JohannesB हाँ यहाँ आप एक है inlined उदाहरण HTTP HTTPS और छवि / svg + xml के साथ फ़ाइल inlined साथ svg XLink विशेषताओं का उदाहरण HTTP HTTPS
ncomputers

1
धन्यवाद, लगता है कि निक क्रेवर तब भी गलतियाँ करता है;)
जोहान्सबाई

2
तत्व की versionविशेषता के लिए xml घोषणा <?xml version...की versionविशेषता ( ) की गलती न करें <svg>। पहला वाला XML मार्कअप भाषा के संस्करण के बारे में है, जबकि दूसरा वाला SVG के संस्करण को निर्दिष्ट करता है। इस उत्तर के लेखक ने XML के संदर्भ में यह गलती की, एसवीजी विनिर्देश नहीं made में। मैंने इसे ठीक करने की कोशिश की, लेकिन कुछ मुहावरों ने संपादन को खारिज कर दिया।
बछसौ

7

मैं दोनों उत्तरों को जोड़ना चाहूंगा, लेकिन मेरे पास कोई बिंदु नहीं है, मैं एक नया उत्तर जोड़ रहा हूं। क्रोम (संस्करण 63.0.3239.132 (आधिकारिक बिल्ड) (64-बिट विंडोज) पर हाल के परीक्षणों में, मैंने पाया है कि:

  1. इनलाइन एसवीजी के लिए जो सीधे HTML फ़ाइल में दर्ज किया जाता है, पाठ संपादक या जावास्क्रिप्ट और elm.innerHTML के माध्यम से, xmlns विशेषताएँ आवश्यक नहीं हैं, जैसा कि अन्य दो उत्तरों में कहा गया है।
  2. लेकिन इनवाइट SVG के लिए जो जावास्क्रिप्ट और AJAX के माध्यम से लोड किया गया है, दो विकल्प हैं:
    • का उपयोग करें xhr.responseTextऔर elm.innerHTML। इसके लिए xmlns की आवश्यकता नहीं है।
    • उपयोग xhr.responseXML.documentElementऔर elm.appendChild()या elm.insertBefore()। इनलाइन एसवीजी बनाने की यह विधि मूल एसवीजी नाम स्थान के बिना आधे-बेक्ड परिणामों का उत्पादन करती है, जैसा कि घोषित किया जा रहा है xmlns="http://www.w3.org/2000/svg"। <Svg> HTML में लोड होता है, लेकिन दस्तावेज़-स्तरीय फ़ंक्शन, जैसे getElementById()कि <svg> तत्व पर पहचाने नहीं जाते हैं। मुझे लगता है कि यह है क्योंकि यह HTML के बाहर XMLHttpRequest XML पार्सर का उपयोग करता है।

0

एसवीजी संस्करण विशेषता के बारे में एमडीएन वेबडॉक कहता है

SVG 2 के बाद से
यह सुविधा अब अनुशंसित नहीं है। हालांकि कुछ ब्राउज़र अभी भी इसका समर्थन कर सकते हैं, यह पहले से ही संबंधित वेब मानकों से हटा दिया गया हो सकता है, गिराए जाने की प्रक्रिया में हो सकता है, या केवल संगतता उद्देश्यों के लिए रखा जा सकता है। इसका उपयोग करने से बचें, और यदि संभव हो तो मौजूदा कोड को अपडेट करें; अपने निर्णय का मार्गदर्शन करने के लिए इस पृष्ठ के नीचे संगतता तालिका देखें। विदित हो कि यह सुविधा किसी भी समय काम करना बंद कर सकती है।

संस्करण विशेषता का उपयोग यह दर्शाने के लिए किया जाता है कि एसवीजी दस्तावेज़ किस विनिर्देश के अनुरूप है। यह केवल मूल तत्व पर अनुमत है। यह विशुद्ध रूप से सलाहकार है और इसका प्रतिपादन या प्रसंस्करण पर कोई प्रभाव नहीं है।

पुनश्च: एसवीजी 2 अभी तक एक मानक बनने से दूर है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.