वास्तव में
<img src="imgtag.gif" alt="<img>" />
मान्य HTML नहीं है, और XML भी मान्य नहीं है।
यह XML मान्य नहीं है क्योंकि '<' और '>' विशेषता स्ट्रिंग्स के अंदर मान्य वर्ण नहीं हैं। वे संबंधित XML संस्थाओं और लेफ्टिनेंट का उपयोग करके बच निकलने की जरूरत है; और & gt;
यह HTML मान्य नहीं है क्योंकि HTML में लघु समापन फ़ॉर्म की अनुमति नहीं है (लेकिन XML और XHTML में सही है)। HTML 4.01 विनिर्देशन के अनुसार 'img' टैग भी एक अनुमानित रूप से बंद टैग है। इसका मतलब है कि मैन्युअल रूप से इसे बंद करना वास्तव में गलत है, और किसी भी अन्य टैग को दो बार बंद करने के बराबर है।
HTML में सही संस्करण है
<img src="imgtag.gif" alt="<img>">
और XHTML और XML में सही संस्करण है
<img src="imgtag.gif" alt="<img>"/>
आपके द्वारा दिया गया निम्न उदाहरण भी अमान्य है
<
tag
attr="5"
/>
यह HTML या XML मान्य नहीं है। टैग का नाम '<' के ठीक पीछे होना चाहिए, हालाँकि विशेषताएँ और समापन '>' जहाँ चाहें वहाँ हो सकते हैं। तो वैध XML वास्तव में है
<tag
attr="5"
/>
और यहाँ एक और मजेदार बात है: आप वास्तव में या तो "या 'का उपयोग कर सकते हैं अपने चरित्र को उद्धृत करते हुए
<img src="image.gif" alt='This is single quoted AND valid!'>
पोस्ट किए गए अन्य सभी कारण सही हैं, लेकिन HTML को पार्स करने के साथ सबसे बड़ी समस्या यह है कि लोग आमतौर पर सभी वाक्यविन्यास नियमों को ठीक से नहीं समझते हैं। तथ्य यह है कि आपका ब्राउज़र आपके टैग्स की व्याख्या करता है क्योंकि HTML का मतलब यह नहीं है कि आपने वास्तव में वैध HTML लिखा है।
संपादित करें: और यहां तक कि stackoverflow.com वैध और अमान्य की परिभाषा के बारे में मुझसे सहमत है। आपका अमान्य XML / HTML हाइलाइट नहीं किया गया है, जबकि मेरा सही संस्करण है।
मूल रूप से, XML को regexps के साथ पार्स करने के लिए नहीं बनाया गया है। लेकिन ऐसा करने का कोई कारण भी नहीं है। प्रत्येक भाषा के लिए कई, कई XML पार्सर हैं। आपके पास SAX पार्सर, DOM पार्सर और पुल पार्सर के बीच विकल्प है। इन सभी को रेगेक्सपी के साथ पार्स करने की तुलना में बहुत तेज़ होने की गारंटी दी जाती है और आप परिणामस्वरूप डोम ट्री पर XPath या XSLT जैसी शांत तकनीकों का उपयोग कर सकते हैं।
इसलिए मेरा जवाब है: न केवल एक्सएमएल को रिजेक्स के साथ कड़ी मेहनत से पार्स कर रहा है, बल्कि यह एक बुरा विचार भी है। बस लाखों मौजूदा XML पार्सर में से एक का उपयोग करें, और XML की सभी उन्नत सुविधाओं का लाभ उठाएं।
HTML अभी भी अपने दम पर पार्स करने की कोशिश करने के लिए बहुत मुश्किल है। पहले कानूनी वाक्यविन्यास में बहुत कम सूक्ष्मताएं होती हैं, जिनके बारे में आपको जानकारी नहीं हो सकती है, और दूसरा, HTML में जंगली केवल एक विशाल बदबूदार ढेर है (आपको मेरा बहाव मिलता है)। विभिन्न प्रकार के लैक्स पार्सर लाइब्रेरी हैं जो HTML को टैग सूप की तरह संभालने में अच्छा काम करते हैं, बस इनका उपयोग करें।