Answers:
由于XML架构定义(XSD)。
使用XML,可以有一个描述模式的附加文件。例如,它表示元素/a/b
是一个数组并包含1到10个元素,或者该元素/a/c
是整数。您可以在此处找到XSD的示例。
许多语言都支持通过 XSD验证给定的XML文件。例如,.NET应用程序可能会从不受信任的来源请求XML文件,并检查其是否与XSD匹配;例如,然后,它可以将其保存到Microsoft SQL Server数据库,该数据库又可以包含XSD并再次进行检查(以确保可以访问该数据库的所有客户端都可以使用)。
XSD不是唯一的语言。
如果您已经完成了Web开发,您肯定会听说过文档类型定义(DTD),它是一种定义XML结构的标记语言,特别用于验证与HTML相关的内容。尽管它不能完成XSD可以做的所有事情,例如确保元素或属性包含整数,但是它仍然可以执行一堆结构检查。
与其他语言相比,RELAX NG具有相对简单的优点,并且可以以比XML更紧凑的形式编写。
Schematron是另一种“基于规则的验证语言,用于对XML树中的模式是否存在进行断言”(维基百科),并且基于XPath断言提出了一种略有不同的方法。
类似的JSON 倡议并不流行(尤其是,我相信,在以Microsoft为中心的企业界)。原因之一是JSON用于数据结构相当基本(例如,可以表示为树,而无需属性)并且不必进行验证的情况。一个很好的例子是动态类型语言使用的REST API:
/something/percentage
是否为实际数字并且在0..100范围内)。在计算机科学中,类型安全性是编程语言阻止或防止类型错误的程度。
类型安全性不是绝对属性。它不是布尔值。语言(而XML和JSON 是语言)允许并防止不同类型的错误和错误。例如,您可以错误命名元素。但是您不能跳过必需的语法元素,例如结束标记和花括号。
纯XML和JSON在类型安全(或类型不安全)方面几乎相同。有效的XML / JSON字符串具有一定的语法和语义结构,但是对于应用程序而言,这几乎是远远不够的。应用程序不仅具有任何结构,而且具有特定的结构。
XML带有XML模式定义(XSD),这是一种灵活而强大的方法,可以根据模式验证给定的XML文档。根据上面给出的定义,这提供了很多类型安全性。