Are the type system represented by XmlSchema and the CLS isomorphic?

来源:互联网 发布:淘宝昵称显示修改失败 编辑:程序博客网 时间:2024/05/16 01:39

这个问题比较模棱两可,首先要解释什么是XmlSchema类型系统,什么是CLS类型系统,和同构(isomorphic)都是什么意思。XmlSchema是一个特定的XML文档必须满足的一套标准。这些标准能够描述不同的数据类型。例如:一个XSD文件(XmlSchema的物理实例化)可能会有一个entry like。这意味着一个必须满足XSD文件架构的XML文件可能有一个entry like 21.33。xs:decimal是一种XmlSchema 数据类型。其他类型包括xs:Boolean,xs:Date,xs:int等等。

CLS是公共语言规范(Common Language Specification),它是任何.net 语言(C#,VB.net等)使用的一套数据类型。例如:一个C#程序可能有这么一行代码:

System.Double payrate = 21.33;

System.Double是一种CLS数据类型。其他的包括System.Int32,System.Boolean等。

那什么是同构(isomorphic)呢?这是真正模棱两可的地方。同构可以不严谨地理解为“有相似的外表但不同的内在”,或者可以理解为“一对一的相似”。如果你将同构理解为有相似的外表,那么这道题的答案是“有点儿”。例如xs:Boolean 和System.Boolean相似。如果你将同构理解为“一对一的相似”那么这道题的答案仍然是“有点儿”。每一个XmlSchema类型都和CLS类型有那么一点相似,反之亦然。