XSD 覆盖 parent
XSD overriding parent
我正在使用两个架构文件,parent.xsd 和 child.xsd,其中包括 parent 架构。
在parent里面,我用下面的方式定义了一个非常简单的元素
<xs:element name="parentElement">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="1">
<xs:element ref="another_element" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="firstAttr" type="attrType"/>
</xs:complexType>
</xs:element>
现在,在 child 模式中,我想覆盖此元素并添加一个新属性。 child 应与 parent 同名。这可以在 XSD 内完成吗?
我已经尝试过 但我想真正使用相同的 parent 元素而不是基于 parent.
定义一个新元素
首先您需要提取复杂类型。
<xs:element name="parentElement" type="typeOfParentElement"/>
<xs:complexType name="typeOfParentElement">
<xs:sequence minOccurs="0" maxOccurs="1">
<xs:element ref="another_element" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="firstAttr" type="attrType"/>
</xs:complexType>
然后您将需要定义一个类型,该类型使用附加属性扩展 typeOfParentElement
。
那么你需要定义这个扩展类型的子元素的类型。
从您的描述中不清楚子元素是否与父元素同名。如果是这样,您将需要在局部元素声明而不是全局元素声明中定义它,因为您不能有两个具有相同名称的全局元素。
我正在使用两个架构文件,parent.xsd 和 child.xsd,其中包括 parent 架构。
在parent里面,我用下面的方式定义了一个非常简单的元素
<xs:element name="parentElement">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="1">
<xs:element ref="another_element" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="firstAttr" type="attrType"/>
</xs:complexType>
</xs:element>
现在,在 child 模式中,我想覆盖此元素并添加一个新属性。 child 应与 parent 同名。这可以在 XSD 内完成吗?
我已经尝试过
首先您需要提取复杂类型。
<xs:element name="parentElement" type="typeOfParentElement"/>
<xs:complexType name="typeOfParentElement">
<xs:sequence minOccurs="0" maxOccurs="1">
<xs:element ref="another_element" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="firstAttr" type="attrType"/>
</xs:complexType>
然后您将需要定义一个类型,该类型使用附加属性扩展 typeOfParentElement
。
那么你需要定义这个扩展类型的子元素的类型。
从您的描述中不清楚子元素是否与父元素同名。如果是这样,您将需要在局部元素声明而不是全局元素声明中定义它,因为您不能有两个具有相同名称的全局元素。