2012-05-31 11 views
38
<!-- here is some comment -- 
          ^
          | 
        what can be here apart from '>'? 

एक्सएमएल टिप्पणियों के अंदर '-' पसंद नहीं करता है। मैंने कहीं पढ़ा है कि '-' <! ... > चीज़ के अंदर कुछ मोड स्विच करता है, लेकिन <!-- -- -- --> (-- की संख्या भी) अमान्य प्रतीत होता है। यदि यह कुछ ऐतिहासिक विशेषता है, तो इसका "समर्थक" हिस्सा क्या है? ("contra" भाग टिप्पणियों में -- होने में असमर्थता है)।एक्सएमएल टिप्पणियां और "-"

टिप्पणी का अंत '->' न केवल 'और' को अनुमति देकर टिप्पणी प्रक्रिया को जटिल करने का क्या कारण है?

उत्तर

31

मानकों दस्तावेज़ से:

http://www.w3.org/TR/REC-xml/#sec-comments

[परिभाषा: टिप्पणियाँ अन्य मार्कअप के बाहर एक दस्तावेज में कहीं प्रकट हो सकता है; इसके अलावा, वे व्याकरण द्वारा अनुमत स्थानों पर दस्तावेज़ प्रकार घोषणा के भीतर प्रकट हो सकते हैं। वे दस्तावेज़ के चरित्र डेटा का हिस्सा नहीं हैं; एक एक्सएमएल प्रोसेसर, लेकिन इसकी आवश्यकता नहीं है, टिप्पणियों के पाठ को पुनर्प्राप्त करने के लिए किसी एप्लिकेशन के लिए संभव बनाएं। compatibility के लिए, स्ट्रिंग "-" (डबल-हाइफ़न) टिप्पणियों के भीतर नहीं होनी चाहिए।] पैरामीटर इकाई संदर्भ टिप्पणियों के भीतर पहचाना नहीं जाना चाहिए।

+0

तो "समर्थक" एसजीएमएल के साथ संगतता है। –

+1

मैं इसे एक इंजीनियरिंग व्यापार बंद कर दूंगा। – asawyer

16

-- एसजीएमएल के साथ संगतता के लिए अनुमति नहीं है। On SGML and HTML से:

व्हाइट अंतरिक्ष मार्कअप घोषणा खुला सीमांकक के बीच की अनुमति नहीं है और टिप्पणी खुला सीमांकक ("-"), लेकिन टिप्पणी निकट परिसीमक (बीच की अनुमति दी है "(" <! ") - ") और मार्कअप घोषणापत्र निकट डिलीमीटर (" > ")। एक टिप्पणी में हाइफ़न ("---") की स्ट्रिंग को शामिल करने में एक सामान्य त्रुटि है। लेखकों को से बचने के लिए टिप्पणियों के अंदर दो या अधिक आसन्न हाइफ़न डालना चाहिए।

तो SGML <! और > खुले और बंद "मार्कअप घोषणाओं" में और -- खोलता है और टिप्पणियां बंद कर देता है।

19

यह उन बेवकूफ नियमों में से एक है जो एक्सएमएल में हैं क्योंकि यह एसजीएमएल में था और लोग संगतता तोड़ना नहीं चाहते थे। एसजीएमएल में यह किसी का अनुमान क्यों है: शायद क्योंकि यह मूल पार्सर में कोड की तीन पंक्तियों को बचाता है।

26

शायद यह किसी के लिए सहायक हो सकता है। मैं एक समस्या थी, कि मैं एक्सएमएल से प्रारंभ होने वाले में एक कमांड लाइन पैरामीटर बाहर टिप्पणी करना चाहता था -:

<arg line="-v --line-break 0" /> 

इसलिए स्वाभाविक रूप से सामान्य तरीके से इस

<!-- <arg line="-v --line-break 0" /> --> 

काम नहीं किया है, लेकिन मैं की तरह पता चला है कि अगर - को इसके यूटीएफ -8 समकक्ष &#x002D; द्वारा प्रतिस्थापित किया गया है तो यह काम करता है और टिप्पणियों के भीतर सहन किया जा सकता है।

मेरे मामले में

तो स्ट्रिंग

<arg line="-v &#x002d;&#x002d;line-break 0" /> 

ठीक प्रकार से पार्स है और टिप्पणियों का हिस्सा हो सकता है।

बेशक यह थोड़ा बदसूरत दिखता है, लेकिन अगर कोई स्ट्रिंग रखना चाहता है - उसके एक्सएमएल में टिप्पणी के रूप में - मुझे लगता है कि यह अभी भी कुछ भी नहीं है।

+14

आप एस्केप अनुक्रम '-' का भी उपयोग कर सकते हैं जो एएससीआईआई एस्केप संस्करण है और यूनिकोड संस्करण से थोड़ा छोटा है। – ricovox

+1

या '-' (हेक्सि में यूनिसी/यूनिकोड) – Vojta