首页 > 解决方案 > XSD 架构:对另一个元素继承的属性的限制

问题描述

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

我尝试同时添加 and to 并赋予 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>

标签: xmlxsdschema

解决方案


您不能在一个步骤中定义限制和扩展,但您可以将 X 定义为 Y 的限制,并将 Y 定义为 Z 的扩展,因此扩展步骤将添加两个属性,然后限制步骤将限制一个其中。


推荐阅读