Tatsächlich
<img src="imgtag.gif" alt="<img>" />
ist kein gültiges HTML und auch kein gültiges XML.
Es ist kein gültiges XML, da '<' und '>' keine gültigen Zeichen in Attributzeichenfolgen sind. Sie müssen mit den entsprechenden XML-Entitäten & lt; und & gt;
Es ist auch kein gültiges HTML, da das kurze Abschlussformular in HTML nicht zulässig ist (aber in XML und XHTML korrekt ist). Das 'img'-Tag ist auch ein implizit geschlossenes Tag gemäß der HTML 4.01-Spezifikation. Dies bedeutet, dass das manuelle Schließen tatsächlich falsch ist und dem zweimaligen Schließen eines anderen Tags entspricht.
Die richtige Version in HTML ist
<img src="imgtag.gif" alt="<img>">
und die richtige Version in XHTML und XML ist
<img src="imgtag.gif" alt="<img>"/>
Das folgende Beispiel ist ebenfalls ungültig
<
tag
attr="5"
/>
Dies ist auch kein gültiges HTML oder XML. Der Name des Tags muss direkt hinter dem '<' stehen, obwohl die Attribute und das schließende '>' beliebig sein können. Das gültige XML ist also tatsächlich
<tag
attr="5"
/>
Und hier ist noch eine funkigere: Sie können entweder "oder" als Attribut-Anführungszeichen verwenden
<img src="image.gif" alt='This is single quoted AND valid!'>
Alle anderen Gründe, die veröffentlicht wurden, sind korrekt, aber das größte Problem beim Parsen von HTML ist, dass die Leute normalerweise nicht alle Syntaxregeln richtig verstehen. Die Tatsache, dass Ihr Browser Ihre Tag-Gruppe als HTML interpretiert, bedeutet nicht, dass Sie tatsächlich gültiges HTML geschrieben haben.
Bearbeiten: Und sogar stackoverflow.com stimmt mir hinsichtlich der Definition von gültig und ungültig zu. Ihr ungültiges XML / HTML wird nicht hervorgehoben, während meine korrigierte Version ist.
Grundsätzlich ist XML nicht dafür ausgelegt, mit regulären Ausdrücken analysiert zu werden. Es gibt aber auch keinen Grund dazu. Es gibt viele, viele XML-Parser für jede Sprache. Sie haben die Wahl zwischen SAX-Parsern, DOM-Parsern und Pull-Parsern. All dies ist garantiert viel schneller als das Parsen mit einem regulären Ausdruck, und Sie können dann coole Technologien wie XPath oder XSLT für den resultierenden DOM-Baum verwenden.
Meine Antwort lautet daher: Das Parsen von XML mit regulären Ausdrücken ist nicht nur schwierig, sondern auch eine schlechte Idee. Verwenden Sie einfach einen der Millionen vorhandenen XML-Parser und nutzen Sie alle erweiterten Funktionen von XML.
HTML ist einfach zu schwer, um es selbst zu analysieren. Erstens hat die legale Syntax viele kleine Feinheiten, die Sie vielleicht nicht kennen, und zweitens ist HTML in freier Wildbahn nur ein riesiger stinkender Haufen (Sie verstehen meine Abweichung). Es gibt eine Vielzahl von laxen Parser-Bibliotheken, die gute Arbeit im Umgang mit HTML wie Tag-Suppe leisten. Verwenden Sie einfach diese.