En fait
<img src="imgtag.gif" alt="<img>" />
n'est pas valide en HTML, et n'est pas valide XML.
Il n'est pas valide XML, car les " < " et " > " ne sont pas des caractères valides à l'intérieur de l'attribut cordes. Ils ont besoin d'être échappés à l'aide du correspondant entités XML < et >
Il n'est pas valide HTML soit en raison de la court de fermeture du formulaire n'est pas autorisé dans le HTML (mais est correcte en XML et XHTML). Le 'img' tag est aussi un fermé implicitement étiquette conformément à la spécification HTML 4.01. Cela signifie que manuellement la fermeture est en fait mal, et est équivalent à la clôture de toute autre tag à deux reprises.
La version correcte dans le HTML est
<img src="imgtag.gif" alt="<img>">
et la version correcte en XHTML et XML est
<img src="imgtag.gif" alt="<img>"/>
L'exemple suivant vous a donné n'est pas valide
<
tag
attr="5"
/>
Ce n'est pas valide en HTML ou XML. Le nom de la balise doit être juste derrière le '<', bien que les attributs et la fermeture " > " est peut-être là où ils le désirent. De sorte que le XML valide est en fait
<tag
attr="5"
/>
Et voici un autre funky: vous pouvez choisir d'utiliser soit " ou " comme attribut citant caractère
<img src="image.gif" alt='This is single quoted AND valid!'>
Toutes les autres raisons qui ont été affichées sont correctes, mais le plus gros problème avec l'analyse HTML est que d'habitude les gens ne comprennent pas toutes les règles de syntaxe correctement. Le fait que votre navigateur interprète votre tagsoup que HTML ne signifie pas que vous avez écrit dans un code HTML valide.
Edit: Et même stackoverflow.com d'accord avec moi au sujet de la définition de valides et non valides. Votre invalid XML/HTML n'est pas mis en évidence, alors que ma version corrigée est.
Fondamentalement, XML n'est pas fait pour être analysé avec les expressions régulières. Mais il n'y a également aucune raison de le faire. Il y a beaucoup, beaucoup de parseurs XML pour chaque langue. Vous avez le choix entre les parseurs SAX, DOM analyseurs et de Tirer des analyseurs. Tous ces produits sont garantis d'être beaucoup plus rapide que l'analyse avec une regexp et vous pouvez ensuite utiliser cool technologies comme XPath ou XSLT sur l'arborescence DOM.
Ma réponse est donc: non seulement l'analyse de XML avec les expressions régulières dur, mais c'est aussi une mauvaise idée. Il suffit d'utiliser une des millions de existant parseurs XML, et de profiter de toutes les fonctionnalités avancées du langage XML.
HTML est tout simplement trop difficile à même d'essayer d'analyser sur votre propre. D'abord, le juridique, la syntaxe a beaucoup de petites subtilités que vous pourriez ne pas être conscient de, et la deuxième, HTML dans la nature est juste un énorme tas puant de (vous obtenez ma dérive). Il existe une variété de lax analyseur de bibliothèques qui font un bon travail lors de la manipulation de code HTML comme la soupe de tags, il suffit d'utiliser ces.