如果我在xsd中有很多复杂类型,例如它有一些常见字段,比如'id','name','date'或'anyspecificId',这意味着那些类型相当彼此相似,再次为每个人添加一个共同字段将是一场噩梦。是否可以为复杂类型定义一些基类型,以便这种复杂类型可以扩展基本父类型的字段/项? 在这种情况下,我只是将这个新字段添加到基本类型,而不是每个子字段。 这可能吗?
答案 0 :(得分:2)
当然你应该使用类型扩展名:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="employee" type="fullpersoninfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="fullpersoninfo">
<xs:complexContent>
<xs:extension base="personinfo">
<xs:sequence>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>
答案 1 :(得分:2)
通过扩展来推导类型肯定是解决这个问题的一种方法。另一种有时可以更好地工作的方法是使用命名模型组。这可以更灵活,例如它不会强加公共元素必须在自定义元素之前出现的约束。