有人可以详细说明这个概念吗? 我是一名初学者,无法在这篇文章中找到一篇不错的文章。
答案 0 :(得分:2)
首先查看完整的type system of XML Schema。下图显示了几乎整个类型系统,除了anySimpleType
(以下所有类型都是简单类型)和任意的,用户定义的复杂类型。
查看被称为"原始类型"的类型:
现在,是什么让这些类型"原始"?它们是原始的,因为它们所代表的对象很少(如果没有)共同,它们的表现非常不同。另一种说法是这些原始类型的语义几乎没有重叠。从这个事实也可以得出,没有一种原始类型可以通过另一种原始类型的定义来解释。此外,原始类型是应该键入XML时最迫切需要的类型(例如,在XSLT 2.0中)。
然后,有派生类型:
派生类型被称为"派生"因为它们来自一种特定的原始类型。如您所见,只有string
和decimal
具有内置的派生类型。例如,token
源自string
,normalizedString
也是如此。
至关重要的是,从string
派生的所有类型仍然符合string
的条件,每个类型都定义了string
允许的特定字符串子集。另一方面,人们找不到所有基本类型的共同祖先类型 - 除了anySimpleType
,这是一种相当抽象的类型。
原始类型和派生类型之间区别的原因是XML Schema的类型系统是模块化:有一组有限的原子构建块(原始类型),在此基础上一切别的建成。
最后,specification本身非常好地说:
[Definition:] Primitive datatypes are those that are not defined in terms of other datatypes; they exist ab initio.
[Definition:] Derived datatypes are those that are defined in terms of other datatypes.
无法在这一篇文章上找到一篇不错的文章。
有许多资源可以解释此主题,其中包括http://books.xmlschemata.org/relaxng/relax-CHP-8-SECT-1.html,http://www.w3.org/TR/xmlschema-2/和https://msdn.microsoft.com/en-us/library/ms761405%28v=vs.85%29.aspx。