แท้จริง
<img src="imgtag.gif" alt="<img>" />
ไม่ใช่ HTML ที่ถูกต้องและไม่ใช่ XML ที่ถูกต้องเช่นกัน
ไม่ใช่ XML ที่ถูกต้องเพราะ '<' และ '>' ไม่ใช่อักขระที่ถูกต้องภายในสตริงของแอตทริบิวต์ พวกเขาจะต้องหลบหนีโดยใช้หน่วยงาน XML ที่สอดคล้องกัน & lt; และ & gt;
มันไม่ถูกต้อง HTML อย่างใดอย่างหนึ่งเนื่องจากไม่อนุญาตให้ใช้แบบฟอร์มปิดสั้นใน HTML (แต่ถูกต้องใน XML และ XHTML) แท็ก 'img' ยังเป็นแท็กที่ปิดโดยนัยตามข้อกำหนดของ HTML 4.01 ซึ่งหมายความว่าการปิดแท็กด้วยตนเองนั้นผิดจริงและเทียบเท่ากับการปิดแท็กอื่นสองครั้ง
เวอร์ชันที่ถูกต้องใน 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 parsers, DOM parsers และ Pull parsers ทั้งหมดเหล่านี้รับประกันว่าจะเร็วกว่าการแยกวิเคราะห์ด้วย regexp และจากนั้นคุณสามารถใช้เทคโนโลยีที่ยอดเยี่ยมเช่น XPath หรือ XSLT บนต้นไม้ DOM ที่เกิดขึ้น
คำตอบของฉันคือ: ไม่เพียง แต่การแยกวิเคราะห์ XML ด้วย regexps อย่างหนัก แต่ก็เป็นแนวคิดที่ไม่ดีเช่นกัน เพียงใช้ตัวแยกวิเคราะห์ XML ที่มีอยู่หนึ่งในล้านและใช้ประโยชน์จากคุณลักษณะขั้นสูงทั้งหมดของ XML
HTML นั้นยากเกินไปที่จะลองแยกวิเคราะห์ด้วยตัวเอง ก่อนอื่นไวยากรณ์ทางกฎหมายมีรายละเอียดปลีกย่อยเล็ก ๆ น้อย ๆ มากมายที่คุณอาจไม่ทราบและอย่างที่สอง HTML ในรูปแบบไวด์เป็นเพียงกองเหม็นอันยิ่งใหญ่ของคุณ มีไลบรารี lars parser หลากหลายประเภทที่ทำงาน HTML จัดการแท็กได้ดี