Frage

Ich kann natürlich nicht feststellen, ob ein Fragment von HTML gültig ist, ohne zu wissen, was der Rest des Dokuments sieht aus wie (zumindest habe ich einen Doctype brauchen, um würde zu wissen, welche Regeln gegen ich Validierung). Aber angesichts der folgenden HTML5-Fragment:

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

Ich kann mit Sicherheit festzustellen, dass es ungültig , ohne den Rest des Dokuments zu sehen. Also, gibt es so etwas wie „vorläufig gültig“ HTML oder „gültig vorausgesetzt, sie paßt in einen bestimmten Ort in einem gültigen Dokument“?

Gibt es mehr zu bieten als den folgenden Pseudo-Code?

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)
War es hilfreich?

Lösung

Sie können sicher über eine XML Dokument Weing wohlgeformte , und Sie können ein Dokument aus einem einzelnen Element und seine Kinder konstruieren. Sie könnten also etwa einzeln verwurzelte XHTML5 Fragmente sprechen gut ausgebildet sind. Sie könnten mit einem mehrfach verwurzelten Fragmente (wie <img/><img/>) umgehen, indem sie mit ihm als eine Folge von Dokumenten zu tun, oder es in irgendeine synthetischen Containerelement Einwickeln - da wir nur über Wohlgeformtheits- sprechen, das in Ordnung wäre.

Allerdings ermöglicht HTML5 noch die SGML selbstschließenden Tags, wie <hr> und so weiter, deren Selbst closingness kann nur durch Berufung auf die Doctype bestimmt werden. Zum Beispiel ist <div><hr></div> in Ordnung, aber <div><tr></div> nicht. Wenn Sie mit DOM zu tun hatten eher Knoten als Text als Eingabe, wäre dies kein Thema sein, aber wenn du einen Text haben, würden Sie einen Parser benötigen, die über HTML genug kennt, um mit diesen Elementen beschäftigen. Darüber hinaus werden einige sehr einfache Regeln, hob aber direkt von XML, würde ausreichen, um Wohlgeformtheits- zu behandeln.

Wenn Sie über Wohlgeformtheits- und Blick auf einige Aspekte der gehen wollte Gültigkeit , ich glaube, Sie immer noch, dass bei der einfach verwurzelten Fragmente Ebene mit XML tun. Da die Spezifikation sagt:

  

Ein XML-Dokument ist gültig, wenn es eine zugehörige Dokumenttypdeklaration und wenn sich das Dokument mit den Einschränkungen hat in ihm zum Ausdruck gebracht.

Eine DTD jedes Element als Wurzel nennen kann, und die Mechanik dann darauf achten, die die Beziehung zwischen diesem Elemente zu kontrollieren und seinen Kindern, und ihre Kinder und so weiter, und die verschiedenen anderen Einschränkungen, die Gültigkeit bilden.

Auch hier können Sie diese Idee direkt übertragen zu HTML. Ich weiß nicht, wie Sie mit mehrfach verwurzelten Fragmenten beschäftigen, though. Und bedenken Sie, dass bestimmte Voll Dokument Einschränkungen (wie IDs eindeutig ist) könnten innerhalb des Fragments halten, aber nicht in einem ansonsten gültigen Dokument, wenn das Fragment in sie eingefügt wurde.

Andere Tipps

Sie können prüfen, ob es wohlgeformt ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top