最初,XML社区里的很多成员认为,X#将会成为W3C的XSLT转换语言的替代品,用来将XML转变成HTML或者各种不同的XML的格式。但是,这不太像微软对.NET平台上强制编程模型的强调。而且,对这样一种转换语言的需求并不真的存在——XSLT这门丰富但是被公认为复杂的语言是大多数程序员需要学习的,这门语言核心用户的数量和.NET开发人员的数量比较起来要少得多。
XML社区的其他成员认为,X#更有可能是对当前XML开发一个更加基本的领域的扩展——后结构描述已验证信息集(Post-Schema Validated
Information Set,Infoset)。一个XML的文档可以被看作是信息的结构集合,即Infoset。当XML最初作为文档元语言SGML的子集诞生时,它还不具有数据类型的概念——也就是说,你不能指定XML的<cost>标签应该包含数值数据,更不要说把数据限制为小数点后带有两位小数的十进制数。XML结构描述定义语言(XML
Schema Definition Language,XSD)能够提供这个能力,对这个语言的研究工作是在XML规范自身仍在发展的时候开始的。但是经过了三年半的时间和大量口水大战之后,终于诞生了用XML编写成的用于XML文档的类型定义语言。
XML结构描述的一个目的是描述一套规则,用来定义合法的XML文档由什么组成。将一个文档同结构描述进行对比检查的过程叫做验证,在典型的情况下,这一过程需要使用类型信息来创建二进制对象,这些类型信息被明确地编码进了XML元素自身里。因此,任何尝试要把<cost>标签的内容更改为预先专门指定的元素域(domain
of the element)以外的字符串、日期或者数字的行为,都会生成一个能够被处理器所理解的错误(信息)。一旦文档通过了验证,它就能够被作为后结构描述已验证信息集(Post-Schema
Validated Infoset,PSVI)。
这些PSVI有很多有趣和有用的属性。对刚刚接触它的人而言,PSVI看起来和用起来都很像类,如此之像,以至于如果有合适的框架,你可以直接利用PSVI所具有的面向对象的能力轻易地创建一门非常强健的语言。由于结构描述是有效的和唯一的,只要它被打上叫做命名空间的唯一标签,所以在理论上,它就应该能够向描述对象能够做什么的命名空间附加一系列方法——这一系列方法自身可能会被定义为XML实体。