XSD 架构:对另一个元素继承的属性的限制

XSD schema: restriction on attribute inherited by another element

我的 XSD 架构有问题。 我有一个名为 xsd:string 的属性 id 的元素,它必须没有限制。 然后是另一个元素,它扩展并具有更多属性,但继承属性 "id" 必须仅由字母和数字组成。这是我的代码:

我尝试将 和 都添加到并为 id 属性指定一个新类型,但它不起作用。

<xsd:complexType name="BaseElement">
    <xsd:attribute name="id" type="xsd:string" />
</xsd:complexType>

<xsd:complexType name="Element">
    <xsd:complexContent>
    <xsd:restriction base="BaseElement">
        <xsd:attribute name="id" type="xsd:idNewType" />
    </xsd:restriction>
    <xsd:extension base="identifiedEntityType">
           <xsd:attribute name="attr2" type="xsd:string"/>
           <xsd:attribute name="attr3" type="xsd:string"/>
          </xsd:extension>
    </xsd:complexContent>
</xsd:complexType>

你不能一步定义一个限制和一个扩展,但是你可以定义 X 作为 Y 的限制,Y 作为 Z 的扩展,所以扩展步骤会添加两个属性和限制然后步骤将限制其中之一。