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?
Antworten:
Es gibt einen Unterschied, ja.
XML, das dem XML-Standard entspricht, wird als gut geformt angesehen, während XML, das einer DTD entspricht, als gültig angesehen wird.
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.
Gemäß der W3C-Empfehlung für XML :
[Definition: Ein Datenobjekt ist ein XML-Dokument, wenn es gemäß dieser Spezifikation wohlgeformt ist. Darüber hinaus ist das XML-Dokument gültig, wenn es bestimmte weitere Einschränkungen erfüllt.]
<a><b></a></b>
<
oder &
werden eher in Inhalten als <
oder verwendet &
.Technisch gesehen sind Doppelpunktzeichen in Komponentennamen in XML zulässig. Doppelpunkte sollten jedoch nur in Namen für Namespace-Zwecke verwendet werden:
Hinweis:
Die Namespaces in der XML-Empfehlung [ XML-Namen ] weisen Namen mit Doppelpunktzeichen eine Bedeutung zu. Daher sollten Autoren den Doppelpunkt nur für Namespace-Zwecke in XML-Namen verwenden. XML-Prozessoren müssen den Doppelpunkt jedoch als Namenszeichen akzeptieren.
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 .
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.
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.
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.
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.
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.
Ich werde hinzufügen, dass gültiges XML auch impliziert, dass es wohlgeformt ist, aber wohlgeformtes XML ist nicht unbedingt gültig.
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.
Entnommen aus XML (Extensible Markup Language) 1.0 (fünfte Ausgabe) - W3C-Empfehlung 26. November 2008 :
[Definition: Ein Datenobjekt ist ein XML-Dokument, wenn es gemäß dieser Spezifikation wohlgeformt ist. Darüber hinaus ist das XML-Dokument gültig, wenn es bestimmte weitere Einschränkungen erfüllt.]
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
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.
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.
Siehe XML-DTD für W3-Schulen :
Ein XML-Dokument mit korrekter Syntax heißt "Well Formed".
Ein gegen eine DTD validiertes XML-Dokument ist sowohl "gut geformt" als auch "gültig".