क्या SVG डॉक्स कस्टम डेटा- विशेषताओं का समर्थन करते हैं?


87

एचटीएमएल 5 में, तत्व एक्सएमएल विशेषताओं में संग्रहीत मेटाडेटा को अनियंत्रित कर सकते हैं, जिनके नाम data-इस तरह से शुरू होते हैं <p data-myid="123456">। क्या यह एसवीजी कल्पना का हिस्सा है?

व्यवहार में यह तकनीक कई स्थानों पर एसवीजी डॉक्स के लिए ठीक काम करती है। लेकिन मैं यह जानना चाहूंगा कि क्या यह आधिकारिक एसवीजी कल्पना का हिस्सा है या नहीं, क्योंकि प्रारूप काफी युवा है कि ब्राउज़रों के बीच अभी भी बहुत असंगतता है, खासकर मोबाइल में। इसलिए कोड करने से पहले मैं यह जानना चाहूंगा कि क्या मैं भविष्य के ब्राउज़रों से इस बात का समर्थन करने की उम्मीद कर सकता हूं।

मुझे यह संदेश काम करने वाले समूह की मेलिंग सूची से मिला, जिसमें उन्होंने कहा कि वे "उम्मीद करते हैं कि वे इसका समर्थन करेंगे"। क्या यह आधिकारिक हो गया?

जवाबों:


121

जबकि अन्य उत्तर तकनीकी रूप से सही हैं, वे इस तथ्य को छोड़ देते हैं कि एसवीजी इसके लिए एक वैकल्पिक तंत्र प्रदान करता है data-*। एसवीजी किसी भी विशेषता और टैग को शामिल करने की अनुमति देता है , जब तक कि यह मौजूदा लोगों के साथ संघर्ष नहीं करता है (दूसरे शब्दों में: आपको नामस्थान का उपयोग करना चाहिए)।

इस (समतुल्य) तंत्र का उपयोग करने के लिए:

  • mydata:idइसके बजाय का उपयोग data-myidकरें:<p mydata:id="123456">
  • सुनिश्चित करें कि आप SVG ओपनिंग टैग के नामस्थान को इस तरह परिभाषित करते हैं: <svg xmlns:mydata="http://www.myexample.com/whatever">

EDIT: SVG2 , वर्तमान में W3C कैंडिडेट सिफारिश (04 अक्टूबर 2018), सीधे (बिना नाम के, HTML के समान) समर्थनdata- करेगा । हालांकि समर्थन व्यापक होने में कुछ समय लगेगा। यह इंगित करने के लिए @cvrebert को धन्यवाद ।


7
समीकरण का तीसरा भाग: el.getAttribute('mydata:id')आपको एसवीजी तत्व से जुड़ा डेटा प्राप्त करने के लिए। (नोट: यदि आप डी 3 का उपयोग कर रहे हैं, तो नाम स्थान डिफ़ॉल्ट रूप से छीन लिया जाएगा और आप बस el.getAttribute('id')।)
एरिकिक्स

2
यह स्वीकृत उत्तर होना चाहिए। एसवीजी एक्सएमएल का एक विस्तार है जो आपको विभिन्न नामस्थानों से टैग का उपयोग करने की अनुमति देता है।
मेल्ले

1
नाम स्थान का रिवाज क्यों है? दस्तावेज़ में HTML5 नामस्थान की घोषणा करना data-*एसवीजी में उपयोग करने के लिए पर्याप्त क्यों नहीं होगा ?
फेबियन सन्नुअर्ट

2
FYI करें, चाहे एक निजी नामस्थान (जैसे <svg xmlns="http://www.w3.org/2000/svg" xmlns:mydata="http://www.myexample.com/whatever"><text x="10" y="20" mydata:id="something">SVG</text></svg>:) या xhtml नाम स्थान का उपयोग कर रहा हो, न तो validator.w3.org/check (SVG 1.1 का उपयोग करके) पर मान्य होगा , लेकिन दोनों ब्राउज़र में काम करते हैं। यह तो संभव या तो उपयोग करने के लिए है getAttributeया getAttributeNSडेटा प्राप्त करने का।
फबिएन स्नूवर्ट

29

data-*विशेषता एचटीएमएल 5 का हिस्सा है। यह एक सामान्य XML विशेषता नहीं है।

वर्तमान एसवीजी डब्ल्यू 3 सी सिफारिश एसवीजी 1.1 (2011-08 से) है। यह इस विशेषता को अनुमति नहीं देता है, जैसा कि आप विशेषता सूची में देख सकते हैं ।

एक ही बात लागू होती है एसवीजी 2 कार्यकारी ड्राफ्ट (2012-08 से)। अद्यतन (2015) : ऐसा लगता है कि यह एसवीजी 2 (वर्तमान में अभी भी एक काम करने वाला मसौदा) data-*में विशेषताओं का समर्थन करने का इरादा है ।


19

9

अधिक सामान्य तंत्र है।

svg उन descतत्वों का समर्थन करता है जिनमें अन्य नामस्थानों से मनमानी xml हो सकता है। इस तत्व के लिंक उदाहरण या चाइल्ड नोड्स आप के नामस्थान पर निर्भर आईडी या रीफीड विशेषताओं के द्वारा हैं।

यह युक्ति का प्रासंगिक हिस्सा है (5.4)


1
सूचक के लिए धन्यवाद। क्या मुझे यह अनुमान लगाना चाहिए कि एसवीजी आधिकारिक तौर पर data-विशेषताओं का समर्थन नहीं करता है ?
तेंदुआ

2
descपहुँच क्षमता के लिए नहीं है ?
Matanster

@ मट्ट मुझे ऐसा नहीं लगता, कम से कम स्टैबर्ड पर आधारित है।
कोलैपसर

1
@ मोट जरूरी नहीं। अफाक मानक केवल किसी भी प्रतिपादन के स्वतंत्र एनोटेशन के उद्देश्य का उल्लेख करेगा। यह उद्देश्य के लिए तत्व की उपयुक्तता का खंडन नहीं करता है। विशेष रूप से, एक ब्लॉग पोस्ट है जो aria-labelledbyसुलभ लेबल के रूप में विशेषताओं और desc तत्वों के उपयोग पर चर्चा कर रहा है । एमडीएन एक समान उपयोग की सिफारिश करता है। गूगल परिणामों की अधिकता को देखते हुए सुलभ svg के लिए सर्वोत्तम प्रथाओं की अपनी एक सवाल के लायक, हो सकता है
collapsar

1
@RockyRoad: वास्तव में नहीं - SVG विनिर्देश स्पष्ट रूप से ऐसी विशेषताओं की अनुमति देता है (उदाहरण के लिए HTML / XHTML जो विरोध नहीं करता है)। यह भी ध्यान दें कि जब आप कर सकते हैं (गलत) descमनमाने ढंग से डेटा के लिए ription तत्वों का उपयोग करते हैं तो यह (IMHO) लिंक से काफी स्पष्ट है कि यह descतत्व का उद्देश्य नहीं था । यह कहते हुए कि आपको ऐसा नहीं करना चाहिए, बस एक बेहतर तरीका है।
जॉन्डोडो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.