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 的扩展,所以扩展步骤会添加两个属性和限制然后步骤将限制其中之一。
我的 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 的扩展,所以扩展步骤会添加两个属性和限制然后步骤将限制其中之一。