【发布时间】:2017-06-29 09:23:16
【问题描述】:
似乎应该可以将替换组限制为该组中的单个元素。然而,由于在验证期间处理替换组和元素,直觉仅适用于某些基数。
例如,以下架构无效:
<xs:element name="representedOrganization" type="Organization"/>
<xs:element name="scopingOrganization" type="Organization" substitutionGroup="representedOrganization"/>
<xs:complexType name="Test.Parent">
<xs:sequence>
<xs:element ref="representedOrganization" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Test.Child">
<xs:complexContent>
<xs:restriction base="Test.Parent">
<xs:sequence>
<xs:element name="scopingOrganization" type="Organization" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
但是,对限制的基数(即minOccurs)进行小幅更改是有效的:
<xs:element name="representedOrganization" type="Organization"/>
<xs:element name="scopingOrganization" type="Organization" substitutionGroup="representedOrganization"/>
<xs:complexType name="Test.Parent">
<xs:sequence>
<xs:element ref="representedOrganization" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Test.Child">
<xs:complexContent>
<xs:restriction base="Test.Parent">
<xs:sequence>
<xs:element name="scopingOrganization" type="Organization" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
这并不直观......但是为什么呢?
【问题讨论】: