在XML中,约束模式定义了文档的结构,在某种程度上,也说明了如何在文档结构中放置数据。事实上,如果用XML作为数据的呈现,文档(通常称为一个实例)就无法与约束(通常称为Schema)相脱离。文档实例包含数据,而Schema指定这些数据的格式。
现在有三种基本模式用于约束,如下所示:
DTD:作为XML1.0规范中的一部分,DTD是最早的约束模式,使用非常简单,但这需要付出相应的代价。DTD不灵活,而且在格式良好校验中所支持的数据类型较少。
XML Schema(XSD):XML Schema是W3C继DTD之后推出的一种约束模式。针对DTD的不足,XML Schema提供了比DTD更高的灵活性,而且还提供了几乎所有数据类型的支持。DTD简单,不灵活,而XML Schema复杂,灵活,还有人说比较 臃肿。所以说XML Schema也有许多令人不满的地方,即使它已经被广泛应用了。
BELAX NG:RELAX NG是针对解决XML Schema复杂性而产生的一种约束模式。RELAX NG是另一种模式语言,它试图融合XML Schema的灵活性和DTD简单性。虽然不具备XML Schema的全部特性,但它能够在大多数的普通应用中使用,将成为XML开发者的一个日常使用的强大工具。