Perché si dice che XML fornisce sicurezza di tipo e come è espresso nello stesso XML?
In che cosa differisce da JSON (ad esempio) che (come ho capito) non è sicuro?
Perché si dice che XML fornisce sicurezza di tipo e come è espresso nello stesso XML?
In che cosa differisce da JSON (ad esempio) che (come ho capito) non è sicuro?
A causa della definizione dello schema XML (XSD).
Con XML, puoi avere un file aggiuntivo che descrive lo schema. Ad esempio, indica che l'elemento /a/b
è un array e contiene da 1 a 10 elementi o che l'elemento /a/c
è un numero intero. Puoi trovare un esempio di XSD qui .
La convalida di un determinato file XML tramite XSD è supportata da molte lingue . Ad esempio, un'applicazione .NET può richiedere un file XML da una fonte non attendibile e controllare che corrisponda all'XSD ; quindi, può salvarlo in un database Microsoft SQL Server, che a sua volta contiene un XSD e fai di nuovo il controllo (per assicurarti che qualsiasi client che abbia accesso al database sia conforme).
XSD non è l'unica lingua.
Se hai fatto lo sviluppo web, hai sicuramente sentito parlare di Document Type Definition (DTD) -un linguaggio di markup che definisce la struttura di XML ed è usato soprattutto nella validazione di HTML- Contenuto relativo. Anche se non può fare tutto ciò che XSD può fare, come assicurarsi che un elemento o un attributo contenga un numero intero, può comunque eseguire una serie di controlli di struttura.
RELAX NG ha il vantaggio di essere relativamente semplice rispetto ad altri linguaggi e può essere scritto in una forma più compatta di XML.
Schematron è un altro "linguaggio di convalida basato su regole per fare asserzioni sulla presenza o assenza di pattern negli alberi XML" ( Wikipedia ) e presenta un approccio leggermente diverso, basato sulle asserzioni XPath.
Iniziative simili per JSON non sono così popolari (in particolare, credo, nel mondo aziendale Microsoft-centrico). Uno dei motivi è che JSON è destinato a situazioni in cui la struttura dei dati è piuttosto basilare (ad esempio può essere espressa come un albero, senza la necessità di attributi, ad esempio) e non deve necessariamente essere convalidata. Un esempio eccellente è un'API REST utilizzata da un linguaggio tipizzato dinamicamente:
/something/percentage
sia un numero reale e sia compreso nell'intervallo 0..100). XML può essere sicuro, poiché è possibile con gli schemi XSD dichiarare il tipo di dati degli elementi. Un documento validato rispetto a uno schema XSD è garantito conforme ai tipi previsti. Ma non è richiesto un formato XML per avere uno schema, quindi un documento non è automaticamente sicuro in quanto essere XML.
Esiste effettivamente un linguaggio di schema per JSON anche, quindi digitare JSON sicuro è possibile. Ma è usato raramente, quindi tipicamente JSON non è sicuro per tipo.
In computer science, type safety is the extent to which a programming language discourages or prevents type errors.
La sicurezza del tipo non è un attributo assoluto. Non è booleano. Le lingue (e le lingue XML e JSON sono ) consentono e impediscono diversi tipi di errori ed errori. Ad esempio è possibile definire erroneamente gli elementi. Ma non puoi saltare elementi sintattici richiesti come la chiusura di tag e parentesi graffe.
Plain XML e JSON sono praticamente ugualmente sicuri (o non sicuri). Una stringa XML / JSON valida ha una certa struttura sintattica e semantica, ma questo non è quasi mai sufficiente per un'applicazione che lavori con esso. Le applicazioni non hanno solo una struttura a ma specifica.
L'XML risplende con XML Schema Definition (XSD), un modo flessibile e potente per convalidare un determinato documento XML rispetto a uno schema. Questo fornisce un sacco di sicurezza del tipo sotto la definizione di cui sopra.
Leggi altre domande sui tag type-safety xml