Question

Je ne peux évidemment pas déterminer si un fragment de HTML est valide sans savoir ce que le reste du document ressemble à (au minimum, je besoin d'un doctype afin de connaître les règles que je suis contre la validation). Mais étant donné le fragment HTML5 suivant:

<article><header></article>My header</header><p>My text</p></article>

Je peux certainement déterminer qu'il est invalide sans voir le reste du document. Alors, est-il une telle chose comme « provisoirement valide » HTML, ou « validée si intègre dans un certain endroit dans un document valide »?

Y at-il plus à ce que le pseudo-code suivant?

def is_valid_fragment(fragment):
 tmp = "<!doctype html><html><head><title></title></head><body>" + fragment + "</body></html>"
 return my_HTML5_validator.is_valid_html5_document(tmp)
Était-ce utile?

La solution

Vous pouvez certainement parler d'un XML Document weing bien formés, et vous pouvez construire un document à partir d'un seul élément et ses enfants. Vous pouvez ainsi parler des liaisons simples racines XHTML5 fragments étant bien formés. Vous pouvez traiter avec un fragment enraciné se multiplient (comme <img/><img/>) en le traitant comme une séquence de documents, ou l'envelopper dans un élément conteneur synthétique - puisque nous ne parlons bien formedness, ce serait bien

Cependant, HTML5 permet encore les balises auto-fermeture SGML, comme <hr> et ainsi de suite, dont l'auto-closingness ne peut être déterminée par appel à la doctype. Par exemple, <div><hr></div> est correct, mais <div><tr></div> est pas. Si vous traitez avec des DOM nœuds plutôt que du texte en entrée, ce serait un faux problème, mais si vous avez un texte, vous auriez besoin d'un analyseur qui sait assez sur HTML pour pouvoir faire face à ces éléments. Au-delà, cependant, quelques règles très simples, directement à partir de XML soulevés, seraient suffisants pour gérer bien formedness.

Si vous voulez aller au-delà bien et formedness regard sur certains aspects de la validité , je pense que vous pouvez toujours le faire au niveau fragment seul enraciné avec XML. Comme la spécification dit:

  

Un document XML est valide si elle a une déclaration de type de document associé et si le document est conforme aux contraintes 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. Je ne sais pas comment vous traitez avec des fragments se multiplient enracinés, cependant. Et gardez à l'esprit que certaines contraintes tout-document (comme ID étant uniques) peuvent tenir à l'intérieur du fragment, mais pas dans un document valide par ailleurs une fois que le fragment a été inséré dans ce.

Autres conseils

Vous pouvez vérifier si elle est bien formée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top