Inheritance 如何将密钥添加到派生架构中?
以下是问题的简化示例: base.xsd: 我想在derived.xsd中的项上定义一个键,但在base.xsd中不定义。因此,基本模式的行为不应更改,但在派生模式中,它的行为应符合以下定义:Inheritance 如何将密钥添加到派生架构中?,inheritance,xsd,extend,derived,redefinition,Inheritance,Xsd,Extend,Derived,Redefinition,以下是问题的简化示例: base.xsd: 我想在derived.xsd中的项上定义一个键,但在base.xsd中不定义。因此,基本模式的行为不应更改,但在派生模式中,它的行为应符合以下定义: <xs:element name="root"> <xs:complexType> <xs:sequence> <xs:element name="items" minOccurs="0">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="items" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="item" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:key name="itemKey">
<xs:selector xpath="item" />
<xs:field xpath="." />
</xs:key>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
尽管如此,我派生的.xsd应该保持从base.xsd派生,因为我真正的模式中还有其他元素需要继承 派生的.xsd
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:redefine schemaLocation="base.xsd">
<!-- redefining types from base.xsd ... -->
</xs:redefine>
</xs:schema>
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="items" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="item" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:key name="itemKey">
<xs:selector xpath="item" />
<xs:field xpath="." />
</xs:key>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:redefine schemaLocation="base.xsd">
<xs:complexType name="root">
<xs:complexContent>
<xs:restriction base="root">
<xs:sequence>
<xs:element name="items" type="items" minOccurs="0">
<xs:key name="itemKey">
<xs:selector xpath="item" />
<xs:field xpath="." />
</xs:key>
</xs:element>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:redefine>
</xs:schema>