Por que eles dizem que o XML fornece segurança de tipo e como é expresso no próprio XML?
Qual é a diferença do JSON (por exemplo) que (como eu entendo) não é do tipo seguro?
Por que eles dizem que o XML fornece segurança de tipo e como é expresso no próprio XML?
Qual é a diferença do JSON (por exemplo) que (como eu entendo) não é do tipo seguro?
Respostas:
Por causa da definição de esquema XML (XSD).
Com o XML, você pode ter um arquivo adicional que descreve o esquema. Indica, por exemplo, que o elemento /a/b
é uma matriz e contém de 1 a 10 elementos, ou que o elemento /a/c
é um número inteiro. Você pode encontrar um exemplo de um XSD aqui .
A validação de um determinado arquivo XML por meio de um XSD é suportada por vários idiomas . Por exemplo, um aplicativo .NET pode solicitar um arquivo XML de uma fonte não confiável e verificar se ele corresponde ao XSD ; em seguida, ele pode salvá-lo em um banco de dados do Microsoft SQL Server, que por sua vez pode conter um XSD e fazer a verificação novamente (para garantir que qualquer cliente que tenha acesso ao banco de dados seja compatível).
XSD não é o único idioma.
Se você fez o desenvolvimento da Web, certamente ouviu falar sobre a Document Type Definition (DTD) - uma linguagem de marcação que define a estrutura do XML e é usada especialmente na validação de conteúdo relacionado a HTML. Embora ele não possa fazer tudo o que o XSD pode, como garantir que um elemento ou atributo contenha um número inteiro, ele ainda pode executar várias verificações de estrutura.
O RELAX NG tem o benefício de ser relativamente simples em comparação com outras linguagens e pode ser escrito de uma forma mais compacta que o XML.
Schematron é outra "linguagem de validação baseada em regras para fazer afirmações sobre a presença ou ausência de padrões nas árvores XML" ( Wikipedia ) e apresenta uma abordagem ligeiramente diferente, baseada nas afirmações XPath.
Iniciativas semelhantes para JSON não são tão populares (especialmente, acredito, no mundo corporativo centrado na Microsoft). Uma das razões é que o JSON é destinado a situações em que a estrutura de dados é bastante básica (ou seja, pode ser expressa como uma árvore, sem a necessidade de atributos, por exemplo) e não necessariamente precisa ser validada. Um excelente exemplo é uma API REST usada por uma linguagem de tipo dinâmico:
/something/percentage
é um número real e se está no intervalo de 0 a 100).O XML pode ser do tipo seguro, pois é possível com os esquemas XSD declarar o tipo de dados dos elementos. É garantido que um documento validado em um esquema XSD esteja em conformidade com os tipos esperados. Porém, não é necessário que um formato XML tenha um esquema; portanto, um documento não é automaticamente seguro como sendo XML.
Na verdade, também existe uma linguagem de esquema para JSON , portanto, é possível digitar JSON seguro. Mas raramente é usado, portanto, normalmente o JSON não é do tipo seguro.
Na ciência da computação, segurança de tipo é a extensão em que uma linguagem de programação desencoraja ou evita erros de tipo.
A segurança do tipo não é um atributo absoluto. Não é booleano. Os idiomas (e XML e JSON são idiomas) permitem e evitam diferentes tipos de erros. Por exemplo, você pode dar um nome errado aos elementos. Mas você não pode pular os elementos sintáticos necessários, como fechar tags e chaves.
XML simples e JSON são praticamente igualmente seguros quanto ao tipo (ou não seguros). Uma cadeia XML / JSON válida possui uma certa estrutura sintática e semântica, mas isso quase nunca é suficiente para um aplicativo trabalhar com ela. Os aplicativos não possuem apenas uma estrutura, mas uma estrutura específica.
XML brilha com o XML Schema Definition (XSD), que é uma maneira flexível e poderosa de validar um determinado documento XML em um esquema. Isso fornece muita segurança de tipo na definição dada acima.