2009-09-25 14 views
17

क्या यह एक XML तत्व नाम में hyphen- का उपयोग करना ठीक है?का उपयोग - एक्सएमएल तत्व नाम में

उदा।

<rank-type>Rank</rank-type> 
+1

मुझे लगता है कि ऐसा करने के लिए यह मान्य है, लेकिन मुझे इस तथ्य के बारे में पता है कि जब आप $ node-> child-node जैसे नोड्स को संदर्भित करने का प्रयास करते हैं तो यह PHP में SimpleXML पार्सर को दुखी करता है। – inkedmn

+0

inkedmn, मुझे उम्मीद है कि यह php पार्सर को नाखुश बनाने की उम्मीद करेगा, सिम्पलएक्सएमएल पार्सर नहीं ;-) क्योंकि, यह प्रभावी रूप से '$ node-> child - node' है। –

+1

मान्य लेकिन भद्दा। – Will

उत्तर

28

के रूप में आसानी से Vinko और हैकर द्वारा कहा गया है, इस सवाल का जवाब

हाँ, डैश, नाम में अनुमति दी जाती तत्व नाम के लिए या विशेषता नाम है या नहीं। हालांकि एक डैश नाम का पहला अक्षर नहीं हो सकता है।

W3C standard नामों को निम्नानुसार परिभाषित करता है (सेक्शन 2।3)

NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] 
NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] 
Name ::= NameStartChar (NameChar)* 

विभिन्न एक्स्टेंडेड ASCII charactes और डबल-बाइट वर्ण (जो वाक्य रचना परिभाषा # चिह्न से शुरू), एक नाम एक अपर या लोअर केस अक्षर (AZ), एक कॉलन से प्रारंभ करना होगा की उपेक्षा (:) या एक अंडरस्कोर। इस प्रारंभ वर्ण के बाद वर्ण, यदि कोई हों, यानी यदि नाम एक वर्ण नहीं है, तो वैध प्रारंभ वर्णों और/या किसी भी अंक (0-9), प्रसिद्ध डैश (-) और बिंदु (।)

जैसा कि संभव हो, अन्य प्रतिक्रियाओं में बताया गया है कि, कुछ विशिष्ट पात्रों से बचने के लिए सलाह दी जाती है, भले ही वे कानूनी हो जाएं, न कि हम विभिन्न पार्सर्स और इंटरऑप परतों के साथ कुछ कार्यान्वयन विशिष्ट कठिनाइयों का सामना करने का जोखिम उठाते हैं।

डब्ल्यू 3 सी ने खुद को डैश के उपयोग को स्पष्ट रूप से सही साबित कर दिया है क्योंकि उदाहरण के लिए एक्सएसएल में इनका व्यापक रूप से उपयोग किया जाता है।

5

हाँ, यह है। लेकिन आपका उदाहरण तत्व का नाम दिखाता है, न कि विशेषता-नाम। जो भी मान्य है।

11

यह एक विशेषता नाम नहीं है, लेकिन एक तत्व का नाम है।

किसी भी मामले में - जब तक नाम इसके साथ शुरू नहीं होता है तब तक विशेषता में तत्व और तत्व नाम दोनों के लिए समर्थित है (< -foo> मान्य तत्व नाम नहीं है)।

हालांकि कुछ सॉफ़्टवेयर इसे दबा सकते हैं, इसलिए चेतावनी दीजिये। यदि आपको ऐसे सॉफ़्टवेयर का उपयोग करना है तो बेहतर सॉफ़्टवेयर ढूंढने का प्रयास करें या इसे डेवलपर्स को एक्सएमएल स्पेक को सही तरीके से समर्थन दें।

W3CSchools' (polemic) recommendations

नाम वर्णनात्मक बनाएं। अंडरस्कोर सेपरेटर के साथ नाम अच्छे हैं: < first_name>, < last_name>।

नाम, छोटे और सरल होना चाहिए इस तरह: < BOOK_TITLE> यह पसंद नहीं: < the_title_of_the_book>।

वर्णों से बचें। यदि आप कुछ "पहला नाम" नाम देते हैं, तो कुछ सॉफ़्टवेयर सोच सकते हैं कि आप पहले से नाम घटाएं।

"से बचें"। वर्ण। यदि आप कुछ "first.name" नाम देते हैं, तो कुछ सॉफ़्टवेयर सोच सकते हैं कि "name" ऑब्जेक्ट "पहले" की संपत्ति है।

":" वर्णों से बचें। Colons नामक नामों के लिए उपयोग किए जाने के लिए आरक्षित हैं (बाद में)।

एक्सएमएल दस्तावेज़ों में अक्सर संबंधित डेटाबेस होता है। एक अच्छा अभ्यास के नामकरण नियमों का उपयोग XML दस्तावेज़ों के तत्वों के लिए आपके डेटाबेस का उपयोग करना है।

एओओ जैसे गैर-अंग्रेजी अक्षरों एक्सएमएल में पूरी तरह से कानूनी हैं, लेकिन यदि आपका सॉफ़्टवेयर विक्रेता उनका समर्थन नहीं करता है तो समस्याओं के लिए देखें।

+2

तो, '' अच्छा है तत्व का नाम और '' नहीं है? –

+0

वे दोनों वैध हैं। मुझे लगता है कि इस सवाल के कारण किसी घटना में उसका कारण हो सकता है - उसके साथ। वह कारण दोषपूर्ण सॉफ्टवेयर हो सकता है। –

+1

विंको, मैंने कहा "अच्छा", "वैध" नहीं। मुझे लगता है कि यह मजाकिया है जब 'w3cschools' का सबसे खराब प्रथाओं का उपयोग करने के लिए 'w3c' का आरोप लगाया जाता है ;-) और व्यक्तिगत रूप से * औपचारिक कारणों से, मैं' w3c' पक्ष पर हूं। –

संबंधित मुद्दे