Warum geben sie an, dass XML Typensicherheit bietet, und wie kommt dies im XML selbst zum Ausdruck?
Wie unterscheidet es sich von JSON (zum Beispiel), das (wie ich verstehe) nicht typsicher ist?
Warum geben sie an, dass XML Typensicherheit bietet, und wie kommt dies im XML selbst zum Ausdruck?
Wie unterscheidet es sich von JSON (zum Beispiel), das (wie ich verstehe) nicht typsicher ist?
Antworten:
Aufgrund der XML-Schemadefinition (XSD).
Mit XML können Sie eine zusätzliche Datei haben, die das Schema beschreibt. Es gibt beispielsweise an, dass das Element /a/b
ein Array ist und 1 bis 10 Elemente enthält, oder dass das Element /a/c
eine Ganzzahl ist. Ein Beispiel für eine XSD finden Sie hier .
Die Validierung einer bestimmten XML-Datei über eine XSD wird von vielen Sprachen unterstützt . Beispielsweise kann eine .NET-Anwendung eine XML-Datei von einer nicht vertrauenswürdigen Quelle anfordern und prüfen, ob sie mit der XSD übereinstimmt . Anschließend kann es in einer Microsoft SQL Server-Datenbank gespeichert werden, die wiederum eine XSD-Datei enthält, und die Überprüfung erneut durchführen (um sicherzustellen, dass alle Clients, die Zugriff auf die Datenbank haben, kompatibel sind).
XSD ist nicht die einzige Sprache.
Wenn Sie eine Webentwicklung durchgeführt haben, haben Sie sicherlich von der Document Type Definition (DTD) gehört, einer Auszeichnungssprache, die die Struktur von XML definiert und insbesondere zur Validierung von HTML-Inhalten verwendet wird. XSD kann zwar nicht alle Funktionen ausführen, z. B. sicherstellen, dass ein Element oder ein Attribut eine Ganzzahl enthält, es kann jedoch eine Reihe von Strukturprüfungen durchführen.
RELAX NG hat den Vorteil, dass es im Vergleich zu anderen Sprachen relativ einfach ist und kompakter als XML geschrieben werden kann.
Schematron ist eine weitere "regelbasierte Validierungssprache für Aussagen über das Vorhandensein oder Fehlen von Mustern in XML-Bäumen" ( Wikipedia ) und präsentiert einen etwas anderen Ansatz, der auf XPath-Aussagen basiert.
Ähnliche Initiativen für JSON sind nicht so beliebt (insbesondere in Microsoft-zentrierten Unternehmenswelten). Einer der Gründe ist, dass JSON für Situationen gedacht ist, in denen die Datenstruktur eher grundlegend ist (dh als Baum ausgedrückt werden kann, ohne dass beispielsweise Attribute erforderlich sind) und nicht unbedingt validiert werden müssen. Ein hervorragendes Beispiel ist eine REST-API, die von einer dynamisch typisierten Sprache verwendet wird:
/something/percentage
es sich um eine tatsächliche Zahl handelt, die im Bereich von 0..100 liegt).XML kann typsicher sein, da es mit XSD-Schemas möglich ist, den Datentyp von Elementen zu deklarieren. Es wird garantiert, dass ein anhand eines XSD-Schemas validiertes Dokument den erwarteten Typen entspricht. Da für ein XML-Format kein Schema erforderlich ist, ist ein Dokument nicht automatisch als XML-Dokument typensicher.
Es gibt tatsächlich auch eine Schemasprache für JSON , sodass typensicheres JSON möglich ist. Da es jedoch nur selten verwendet wird, ist JSON in der Regel nicht typsicher.
In der Informatik ist Typensicherheit das Ausmaß, in dem eine Programmiersprache Tippfehler abschreckt oder verhindert.
Typensicherheit ist kein absolutes Attribut. Es ist nicht boolesch. Sprachen (und XML und JSON sind Sprachen) ermöglichen und verhindern verschiedene Arten von Fehlern und Irrtümern. Beispielsweise können Sie Elemente falsch benennen. Erforderliche syntaktische Elemente wie das Schließen von Tags und geschweiften Klammern können jedoch nicht übersprungen werden.
Normales XML und JSON sind ziemlich gleichermaßen typsicher (oder typunsicher). Eine gültige XML / JSON-Zeichenfolge hat eine bestimmte syntaktische und semantische Struktur, die jedoch für eine Anwendung fast nie ausreicht, um damit zu arbeiten. Anwendungen sind nicht nur eine Struktur, sondern eine bestimmte.
XML glänzt mit XML Schema Definition (XSD), einer flexiblen und leistungsstarken Methode, um ein bestimmtes XML-Dokument anhand eines Schemas zu validieren. Dies bietet viel Typensicherheit unter der oben angegebenen Definition.