Ich war mir eines Unterschieds nicht bewusst, aber ein Mitarbeiter sagt, dass es einen gibt, obwohl er ihn nicht sichern kann. Was ist der Unterschied, wenn überhaupt?
xml
validation
xsd
dtd
user18931
quelle
quelle
Gut geformtes vs gültiges XML
Gut geformt bedeutet, dass ein Textobjekt die W3C-Anforderungen für XML erfüllt .
Gültig bedeutet, dass wohlgeformtes XML zusätzliche Anforderungen erfüllt, die von einem bestimmten Schema vorgegeben werden.
Offizielle Definitionen
Gemäß der W3C-Empfehlung für XML :
Beobachtungen:
Beispiele dafür, warum ein Dokument ...
Nicht gut geformt :
<a><b></a></b>
<
oder&
werden eher in Inhalten als<
oder verwendet&
.Ungültig :
Namespace-wohlgeformt
Technisch gesehen sind Doppelpunktzeichen in Komponentennamen in XML zulässig. Doppelpunkte sollten jedoch nur in Namen für Namespace-Zwecke verwendet werden:
Daher wird in der Namespaces in XML 1.0 W3C-Empfehlung ein anderer Begriff, Namespace-wohlgeformt , definiert , der alle XML-Regeln für die Wohlgeformtheit sowie die Regeln für Namespaces und Namespace-Präfixe enthält.
Umgangssprachlich wird der Begriff wohlgeformt häufig verwendet, wenn der gut geformte Namespace genauer wäre. Dies ist jedoch eine geringfügige technische Methode mit weniger praktischen Konsequenzen als die in dieser Antwort beschriebene Unterscheidung zwischen wohlgeformtem und gültigem XML .
quelle
Gültiges XML ist XML, dessen Validierung anhand einer DTD erfolgreich ist.
Gut geformtes XML ist XML, bei dem alle Tags in der richtigen Reihenfolge geschlossen sind. Wenn eine Deklaration vorhanden ist, enthält sie als erstes die Datei mit den richtigen Attributen.
Mit anderen Worten, Gültigkeit bezieht sich auf Semantik, Wohlgeformtheit bezieht sich auf Syntax.
Sie können also ungültiges, wohlgeformtes XML haben.
quelle
Wie bereits erwähnt, entspricht wohlgeformtes XML der XML-Spezifikation und gültiges XML einem bestimmten Schema.
Eine andere Möglichkeit ist, dass wohlgeformtes XML lexikalisch korrekt ist (es kann analysiert werden), während gültiges XML grammatikalisch korrekt ist (es kann mit einem bekannten Vokabular und einer bekannten Grammatik abgeglichen werden).
Ein XML-Dokument kann erst gültig sein, wenn es wohlgeformt ist. Alle XML-Dokumente unterliegen dem gleichen Standard für die Formgebung (ein vom W3 herausgegebener RFC). Ein XML-Dokument kann für einige Schemas gültig und für andere ungültig sein. Es gibt eine Reihe von Schemasprachen, von denen viele selbst XML-basiert sind.
quelle
Gut geformtes XML ist XML, das die syntaktischen Anforderungen der Sprache erfüllt. Keine fehlenden schließenden Tags verpassen, alle Ihre Singleton-Tags
<whatever />
anstelle von nur verwenden<whatever>
und Ihre schließenden Tags in der richtigen Reihenfolge haben.Gültiges XML ist XML, das eine DTD verwendet und alle Anforderungen erfüllt. Wenn Sie also ein Attribut falsch verwenden, verletzen Sie die DTD und sind ungültig.
Alle gültigen XML-Dateien sind wohlgeformt, aber nicht alle wohlgeformten XML-Dateien sind gültig.
quelle
XML ist gut geformt, wenn es die Anforderungen für alle XML-Dokumente erfüllt, die in den Standards festgelegt sind - beispielsweise einen einzelnen Stammknoten, korrekt verschachtelte Knoten, alle Knoten mit einem schließenden Tag (oder die Verwendung der Leerknotenkürzel eines Schrägstrichs zuvor) die schließende Klammer), Attribute, die zitiert werden usw. Gut geformt zu sein bedeutet nur, dass es den Regeln von XML entspricht und daher richtig analysiert werden kann.
XML ist gültig, wenn es anhand einer DTD oder eines Schemas validiert wird. Dies ist offensichtlich von Fall zu Fall unterschiedlich - XML, das für ein Schema gültig ist, ist für ein anderes Schema nicht gültig, obwohl es noch gut geformt ist.
Wenn XML nicht gut geformt ist, kann es nicht richtig analysiert werden - Parser lösen einfach eine Ausnahme aus oder melden einen Fehler. Dies ist generisch und spielt keine Rolle, was Ihr XML enthält. Erst wenn es analysiert wurde, kann es auf Gültigkeit überprüft werden. Diese Domäne oder dieser Kontext ist abhängig und erfordert eine DTD oder ein Schema zur Validierung. Bei einfachen XML-Dokumenten verfügen Sie möglicherweise nicht über eine DTD oder ein Schema. In diesem Fall können Sie nicht wissen, ob das XML gültig ist. In diesem Fall gilt das Konzept oder die Gültigkeit einfach nicht. Dies bedeutet natürlich nicht, dass Sie es nicht verwenden können, sondern nur, dass Sie nicht sagen können, ob es gültig ist oder nicht.
quelle
W3C hat in der XML-Spezifikation bestimmte Regeln definiert, die beim Erstellen von XML-Dokumenten befolgt werden müssen. Die Beispiele für solche Regeln umfassen genau ein Stammelement, ein End-Tag für jedes Start-Tag, einfache / doppelte Anführungszeichen für Attributwerte usw. Wenn ein XML-Dokument all diesen Regeln folgt, wird es als wohlgeformtes Dokument bezeichnet, und XML-Parser können zum Parsen und Verarbeiten solcher Dokumente verwendet werden.
Dokumenttypdefinitionen (DTDs) oder XML-Schemas können verwendet werden, um die Struktur und den Inhalt einer bestimmten Klasse von XML-Dokumenten zu definieren. Dies umfasst die Eltern-Kind-Beziehungsdetails, Attributlisten, Datentypinformationen, Werteinschränkungen usw. Zusätzlich zu den Wohlgeformungsregeln wird gesagt, dass ein XML-Dokument, wenn es auch den in der zugehörigen DTD / dem Schema angegebenen Regeln folgt, dies befolgt ein gültiges XML-Dokument sein.
Alle gültigen XML-Dokumente sind wohlgeformt, aber das Gegenteil ist nicht immer der Fall. Wohlgeformte XML-Dokumente müssen nicht unbedingt gültig sein.
quelle
Ich werde hinzufügen, dass gültiges XML auch impliziert, dass es wohlgeformt ist, aber wohlgeformtes XML ist nicht unbedingt gültig.
quelle
Zusätzlich zu den oben genannten DTDs gibt es zwei weitere Möglichkeiten zur Beschreibung und Validierung von XML-Dokumenten: XMLSchema und RelaxNG . Beide sind möglicherweise einfacher zu verwenden und unterstützen mehr Funktionen als DTDs.
quelle
Wenn XML DTD-Regeln bestätigt, handelt es sich um ein gültiges XML. Wenn ein XML-Dokument den XML-Regeln entspricht (alle gestarteten Tags sind geschlossen, es gibt ein Stammelement usw.), handelt es sich um ein wohlgeformtes XML.
quelle
Entnommen aus XML (Extensible Markup Language) 1.0 (fünfte Ausgabe) - W3C-Empfehlung 26. November 2008 :
Für diejenigen, die Pseudo-Code Absätzen über Absätzen des Textes vorziehen ... :)
IF is_well_formed(<XML_doc>) THEN # It is well-formed, and can be parsed IF is_valid(<XML_doc>) THEN # Well-formed and ALSO valid. Hurray! # **A valid XML doc, is a well-formed doc!** ELSE # Only well-formed, NOT valid END IF ELSE # Not well-formed, or valid! END IF FUNCTION is_well_formed IF <does_not_contain_syntax,_spelling,_punctuation,_grammar_errors,_etc._errors> THEN RETURN TRUE ELSE RETURN FALSE END IF END FUNCTION FUNCTION is_valid IF <markup_of_the_XML_document_matches_"some"_defined_standard> THEN # Standards used to validate XML could be a DTDs or XML Schemas, referenced within the XML document RETURN TRUE ELSE RETURN FALSE END IF END FUNCTION
Basierend auf der Theorie: "Gut geformt" vs. Gültig
quelle
DTD ist die Abkürzung für Document Type Definition. Dies ist eine Beschreibung des Inhalts für eine Familie von XML-Dateien. Dies ist Teil der XML 1.0-Spezifikation und ermöglicht die Beschreibung und Überprüfung, ob eine bestimmte Dokumentinstanz den Regeln entspricht, die ihre Struktur und ihren Inhalt detailliert beschreiben.
Bei der Validierung wird ein Dokument anhand einer DTD überprüft (allgemeiner anhand einer Reihe von Konstruktionsregeln).
Der Validierungsprozess und das Erstellen von DTDs sind die beiden schwierigsten Teile des XML-Lebenszyklus. Kurz gesagt definiert eine DTD alle möglichen Elemente in Ihrem Dokument, die formale Form Ihres Dokumentbaums (indem Sie den zulässigen Inhalt eines Elements definieren; entweder Text, einen regulären Ausdruck für die zulässige Liste der untergeordneten Elemente oder gemischten Inhalt dh sowohl Text als auch Kinder). Die DTD definiert auch die gültigen Attribute für alle Elemente und die Typen dieser Attribute.
quelle
Nun, XML, das per Definition nicht gut geformt ist, ist kein XML. Menschen bezeichnen gültiges XML normalerweise als XML, das einem bestimmten Schema (XSD oder DTD) entspricht.
quelle
Siehe XML-DTD für W3-Schulen :
quelle