分类:
2011-01-21 20:56:06
看这个图之后,就了解了各种类之间的对应关系了。
首先,在一个XSDSchema内,可以包含
1. n个属性声明(XSDAttributeDeclaration),
2. n个类型定义(XSDTypeDefinition),
3. n个元素声明(XSDElementDeclaration),
4. n个ID约束定义(XSDIdentityConstraintDefinition),
5. n个模型组定义(XSDModelGroupDefinition),
6. n个属性组定义(XSDAttributeGroupDefinition),
7. n个记号声明(XSDNOtationDeclaration)。
按照上面的顺序,一次看每个类的对应关系。
1. 关于属性声明(XSDAttributeDeclaration)
Ⅰ. 每个属性声明必须指定一个简单类型定义(XSDSimpleTypeDefinition)
2. 关于类型定义(XSDTypeDefinition),没有和其他类的对应关系
3. 关于元素声明(XSDElementDeclaration),
Ⅰ. 每个元素声明必须指定一个类型定义(XSDTypeDefinition),即可是简单类型,也可是复杂类型
Ⅱ. 每个元素声明可以包含n个substitutionGroup,每个substitutionGroup都是元素声明
Ⅲ. 每个元素声明可以指定一个substitutionGroupAffiliation,也可不指定。substitutionGroupAffiliation也是元素声明。
Ⅳ. 每个元素声明可以包含n个ID约束定义(XSDidentityConstraintDefinition)
4. 关于ID约束定义(XSDIdentityConstraintDefinition),
Ⅰ. 每个ID约束定义必须指定一个selector,类型为路径定义(XSDPathDefinition)
Ⅱ. 每个ID约束定义可以包含一个以上的fields,类型为路径定义(XSDPathDefinition)
Ⅲ. 每个ID约束定义可以指定一个referenceKey,也可不指定。referenceKey也是ID约束定义。
5. 关于模型组定义(XSDModelGroupDefinition),
Ⅰ. 每个模型组定义必须指定一个模型组(XSDModelGroup),
Ⅱ. 每个模型组可以指定一个以上的XSDParticle
Ⅲ. 每个XSDParticle必须指定一个XSDTerm
6. 关于属性组定义(XSDAttributeGroupDefinition),
Ⅰ. 每个属性组定义可以指定一个通配符,也可以不指定
Ⅱ. 每个属性组定义可以包含n个XSDAttributeUse
Ⅲ. 每个XSDAttributeUse必须指定一个属性声明(XSDAttributeDeclaration)
7. 关于记号声明(XSDNOtationDeclaration),没有和其他类的对应关系
根据上图在补充说明几个对应关系
8. 关于简单类型定义(XSDSimpleTypeDefinition)
Ⅰ. 每个简单类型定义必须指定一个baseTypeDefinition,类型也为简单类型定义。
9. 关于复杂类型定义(XSDComplexTypeDefinition)
Ⅰ. 每个复杂类型定义必须指定一个类型定义(XSDTypeDefinition)
Ⅱ. 每个复杂类型定义可以包含n个XSDAttributeUse
Ⅲ. 每个复杂类型可以指定一个复杂类型内容(XSDComplexTypeContent),也可以不指定
Ⅳ. 每个复杂类型可以指定一个通配符(XSDWildcard),也可以不指定