Vous pouvez certainement parler d'un document XML weing well-formed, et vous pouvez construire un document à partir de n'importe quel élément et ses enfants. Vous pourriez ainsi parler de fragments XHTML5 à racine unique bien formés. Vous pouvez traiter un fragment à racines multiples (comme <img/><img/>
) en traitant cette séquence comme une séquence de documents, ou en l'enveloppant dans un élément de conteneur synthétique - puisque nous parlons seulement de bonne forme, ce serait bien. Cependant, HTML5 permet toujours les balises SGML à fermeture automatique, comme <hr>
et ainsi de suite, dont l'auto-fermeture ne peut être déterminée qu'en faisant appel au doctype. Par exemple, <div><hr></div>
est correct, mais <div><tr></div>
ne l'est pas. Si vous utilisiez des nœuds DOM plutôt que du texte en entrée, ce serait un non-problème, mais si vous avez du texte, vous aurez besoin d'un analyseur qui en sait assez sur le langage HTML pour pouvoir traiter ces éléments. Au-delà de cela, cependant, quelques règles très simples, levées directement à partir de XML, suffiraient à gérer la forme.
Si vous voulez aller au-delà de la forme et regarder quelques aspects de validity, je pense que vous pouvez toujours faire cela au niveau du fragment à racine unique avec XML. Comme le dit la spécification:
Un document XML est valide s'il a une déclaration de type de document associé et si le document respecte les contraintes qui y sont exprimées.
Une DTD peut nommer tout élément comme la racine et la mécanique puis prendre soin de vérifier la relation entre cet élément et ses enfants, et leurs enfants, et ainsi de suite, et les diverses autres contraintes qui composent la validité.
Encore une fois, vous pouvez transférer cette idée directement au format HTML. Cependant, je ne sais pas comment vous traitez des fragments à racines multiples. Et gardez à l'esprit que certaines contraintes de document entier (comme les identifiants étant uniques) peuvent rester à l'intérieur du fragment, mais pas dans un document autrement valide une fois que le fragment a été inséré dans le fragment.
Votre pseudocode ne fonctionne pas avec '
'sont des fragments valides mais' <'ne l'est pas. Je ne trouve pas de définition de fragment dans les spécifications XML ou HTML –