Frage

Ich war von einem Unterschied nicht bewusst, aber ein Kollege sagt, dass es, obwohl er es nicht zurück kann bis. Was ist der Unterschied, wenn überhaupt?

War es hilfreich?

Lösung

Es gibt einen Unterschied, ja.

XML, die mit dem XML-Standard haftet gut gebildet angesehen, während xml, die eine haftet < a href = "https://www.w3schools.com/xml/xml_dtd.asp" rel = "noreferrer"> DTD wird als gültig betrachtet.

Andere Tipps

Valid XML ist XML, die Validierung gegen eine DTD erfolgreich ist.

Wohlgeformte XML ist XML, dass alle Tags in der richtigen Reihenfolge geschlossen hat, und wenn er eine Erklärung hat, hat sie es als erstes in der Datei mit den entsprechenden Attributen.

Mit anderen Worten Gültigkeit Semantik bezieht, Wohlgeformtheits- bezieht sich auf Syntax.

So können Sie ungültige haben auch XML gebildet.

Wohlgeformte vs Valid XML

Wohlgeformte bedeutet, dass ein Text-Objekt, das die W3C Anforderungen für ist XML .

Valid bedeutet, dass wohlgeformte XML zusätzliche Anforderungen von einem bestimmten Schema gegeben erfüllt.


Offizielle Definitionen

Per W3C-Empfehlung für XML :

  

[Definition: Ein Datenobjekt ist ein XML-Dokument, wenn es    wohlgeformter , wie definiert in diese Spezifikation. zusätzlich   XML-Dokument ist gültig wenn es trifft bestimmte weitere Einschränkungen.]


Bemerkungen:

  • Ein Dokument, das nicht wohlgeformt ist nicht XML. ( Wohlgeformte XML häufig verwendet wird, aber technisch überflüssig.)
  • gültig zu sein, impliziert sind wohlgeformt ist.
  • Die wohlgeformte bedeutet nicht gültig zu sein.
  • Obwohl die definiert rel="noreferrer"> Gültigkeit gegen eine DTD sein, ermöglicht die herkömmliche Verwendung der Begriff für die Konformität mit XML-Schemas angegeben über XSD , RELAX NG , Schematron oder andere Methoden.

Beispiele von dem, was bewirkt, dass ein Dokument zu sein ...

nicht wohlgeformt :

  • Ein Element fehlt ein schließenden Tag (und ist nicht selbstschließend).
  • überlappen Elemente ohne richtige Verschachtelung: <a><b></a></b>
  • Ein Attributwert fehlt ein Schlusskurs, der die Spiele Öffnen Zitat.
  • < oder & sind in Inhalt verwendet statt &lt oder &amp;.
  • existieren mehrere Stammelemente.
  • Mehrere XML-Deklarationen geben, oder eine XML-Deklaration erscheint anders als am Anfang des Dokuments.

Ungültige :

  • Ein Element oder Attribut fehlt, sondern durch das XML-Schema erforderlich.
  • Ein Element oder Attribut wird verwendet, sondern durch das XML-Schema nicht definiert.
  • Der Inhalt eines Elements nicht den Inhalt des XML-Schema angegebenen überein.
  • Der Wert eines Attributs nicht die Art von XML-Schema angegebenen überein.

Namespace-Well-Formed

Technisch Doppelpunkt Zeichen werden in Komponentennamen in XML erlaubt. Allerdings Doppelpunkte sollte nur in Namen für Namespace-Zwecke verwendet werden:

  

Hinweis:

     

Die Namespaces in XML-Empfehlung [ XML Names ] weist ein   was bedeutet, zu Namen Kolon-Zeichen enthalten. Daher Autoren   sollte nicht den Doppelpunkt in XML-Namen mit Ausnahme von Namespace-Zwecken verwenden,   aber XML-Prozessoren müssen den Doppelpunkt als Name Charakter annehmen.

Daher ist ein weiterer Begriff, Namespace-well-formed , wird in der Namespaces in XML 1.0 W3C-Empfehlung definiert dass alle XML-Regeln für Wohlgeformtheits- und diese geltenden Namensräume und Namespacepräfixe impliziert.

Umgangssprachlich wird der Begriff well-formed wird häufig verwendet, WHEre Namespace-well-formed wäre präziser. Dies ist jedoch eine kleinere technische Art und Weise von weniger praktischen Konsequenz ist als der Unterschied zwischen well-formed vs gültigen XML in dieser Antwort beschrieben.

Wie andere gesagt haben, wohlgeformter XML entspricht die XML-Spezifikation, und gültige XML entspricht ein bestimmtes Schema.

Eine andere Möglichkeit, es zu setzen ist, dass wohlgeformte XML ist lexikalisch korrekt (es analysiert werden kann), während gültige XML ist grammatisch korrekt (es angepasst werden kann, um eine bekannte Vokabular und Grammatik).

Ein XML-Dokument kann nicht gültig sein, bis sie gut ausgebildet ist. Alle XML-Dokumente sind für Wohlgeformtheits- auf den gleichen Standard gehalten (ein RFC vom W3 löschte). Ein XML-Dokument kann gegen einige Schemata gültig und ungültig gegen andere. Es gibt eine Reihe von Schemasprachen, von denen viele sich auf XML-Basis.

well-formed XML ist XML, die die syntaktischen Anforderungen der Sprache entspricht. Keine Endtags fehlt, mit all Ihre Singleton Tags <whatever /> statt nur <whatever> verwenden, und in der richtigen Reihenfolge Ihre Endtags haben.

Valid XML ist XML, die eine DTD verwendet und erfüllt alle ihre Anforderungen. Also, wenn Sie ein Attribut nicht ordnungsgemäß verwenden, verletzen Sie die DTD und sind nicht gültig.

Alle gültigen XML ist wohlgeformt, aber nicht alle wohlgeformte XML gültig ist.

XML ist wohlgeformt, wenn die Anforderungen für alle XML-Dokumente erfüllt von den festgelegten Normen - so Dinge wie einen einzelnen Wurzelknoten, mit Knoten korrekt verschachtelt, wird alle Knoten einen End-Tag (oder mit der leeren Knoten Stenografie von ein Schrägstrich vor der Klammer Schließwinkel) bedeutet wohlgeformt zitiert usw. sein Attribut ist es nur die Regeln des XML haftet und kann daher richtig analysiert werden.

XML ist gültig, wenn sie gegen eine DTD oder ein Schema validiert werden. Dies unterscheidet sich offensichtlich von Fall zu Fall -. XML, die gegen ein Schema gültig ist, wird gegen ein anderes Schema nicht gültig sein, auch wenn es nach wie vor gut ausgebildet ist,

Wenn XML ist nicht wohlgeformt es kann nicht richtig analysiert werden - Parser einfach eine Ausnahme auslösen oder einen Fehler melden. Dies ist generisch und es spielt keine Rolle, was Ihr XML-Code enthält. Erst wenn es analysiert wird, kann sie auf ihre Gültigkeit überprüft werden. Diese Domain oder kontextabhängig und erfordert eine DTD oder Schema zu validieren gegen. Für eine einfache XML-Dokumente, können Sie nicht eine DTD oder ein Schema haben, in dem Fall, dass Sie nicht wissen können, wenn die XML gültig ist - das Konzept und ihrer Gültigkeit nicht einfach in diesem Fall keine Anwendung. Natürlich ist dies nicht, dass Sie es nicht verwenden können, bedeutet, es bedeutet nur, kann man nicht sagen, ob es gültig ist.

W3C, in der XML-Spezifikation hat bestimmte Regeln definiert, die befolgt werden muss, während XML-Dokumente zu erstellen. Die Beispiele für solche Regeln enthalten, die genau ein Root-Element, end-Identifizierungskennzeichen für jeden Start-Tag, ein- / doppelte Anführungszeichen für Attributwerte verwendet wird, und so weiter. Wenn ein XML-Dokument, das alle diese Regeln folgt, wird man sagen, wohlgeformtes Dokument und XML-Parser verwendet werden kann, zu analysieren und zu verarbeiten solche Dokumente.

Document Type Definitions (DTDs) oder XML-Schema kann die Struktur und den Inhalt einer bestimmten Klasse von XML-Dokumenten zu definieren, verwendet werden. Dazu gehört auch die Eltern-Kind-Beziehung Details, Attributlisten, Datentypinformationen, Wertbeschränkungen, etc. Zusätzlich zu den Wohlgeformtheits- Regeln, wenn ein XML-Dokument folgt auch die Regeln in der zugehörigen DTD angegeben / Schema, so heißt es zu sein ein gültiges XML-Dokument.

Alle gültigen XML-Dokumente sind gut ausgebildet, aber das Gegenteil ist nicht immer wahr. Wohlgeformte XML-Dokumente müssen nicht unbedingt gültig sein.

Ich werde hinzufügen, dass gültige XML bedeutet auch, dass es wohlgeformt, aber wohlgeformter XML ist nicht unbedingt gültig.

Neben den oben genannten DTDs gibt es 2 weitere Möglichkeiten zur Beschreibung und Validierung von XML-Dokumenten sind XMLSchema und RelaxNG , kann einfacher sein, um mehr zu nutzen und unterstützen beide die Funktionen als DTD.

Wenn XML-DTD-Regeln wird bestätigt, dann ist es ein gültiges XML. Wenn ein XML-Dokument ist konform zu XML-Regeln (Alle Tags begann geschlossen sind, ist es ein Wurzelelement usw.), dann ist es ein gut XML gebildet.

Genommen von Extensible Markup Language (XML) 1.0 (Fünfte Ausgabe) - W3C Empfehlung 26. November 2008 :

  

[Definition: Ein Datenobjekt ist ein XML-Dokument, wenn es gut ausgebildet ist, wie   in dieser Spezifikation definiert. Darüber hinaus ist das XML-Dokument gültig   wenn es trifft bestimmte weitere Einschränkungen.]


Für diejenigen, die nach den Absätzen des Textes der Absätze psuedo-Code bevorzugen ...:)

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

basiert auf der Theorie: "Well Formed" vs. Valid

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 ein zu beschreiben und zu überprüfen, ob eine bestimmte Dokumentinstanz auf den Satz von Regeln entspricht seine Struktur und Inhalt Details.

Die Validierung ist der Prozess ein Dokument gegen eine DTD (allgemeiner gegen eine Reihe von Konstruktionsregeln) zu prüfen.

Der Validierungsprozess und Gebäude DTDs sind die beiden schwierigsten Teile des XML-Lebenszyklus. Kurz gesagt eine DTD alle möglichen Elemente definiert in Ihrem Dokument zu finden ist, was ist die formale Form Ihres Dokumentenbaum (durch den zulässigen Inhalt eines Elements definieren, entweder Text, ein regulärer Ausdruck für die erlaubten Liste von Kindern, oder gemischte Inhalte dh sowohl Text als auch Kinder). Die DTD definiert auch die gültigen Attribute für alle Elemente und die Art dieses Attributs.

Nun, XML, die nicht gut ausgebildet ist, eine Art von Definition ist nicht XML. Poeple in der Regel auf gültige XML als XML verweisen, die zu einem bestimmten Schema (XSD oder DTD) haftet.

Siehe XML-DTD auf W3 Schools :

  

Ein XML-Dokument mit dem korrekten Syntax wird als "Well Formed".

     

Ein XML-Dokument gegen eine DTD validiert ist sowohl „Well Formed“ und   "Gültig".

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