を使用して属性の一意性を強制しようとしていますxs:unique
。ただし、XPath に問題があると思います。
文字列である属性「識別子」を持つ抽象要素 ObjectA があります。この識別子は、具体的な要素 ObjectB と ObjectC のすべてのインスタンスで一意にする必要があります。xpath="."
正しくないと思います。
<xs:element name="ObjectA" type="ns:ObjectAType">
<xs:unique name="Identifier">
<xs:selector xpath="."/>
<xs:field xpath="@identifier"/>
</xs:unique>
</xs:element>
<xs:complexType name="ObjectAType" abstract="true">
<xs:attribute ref="ns:identifier" use="required" />
</xs:complexType>
<xs:attribute name="identifier" type="xs:string" />
<xs:element name="ObjectB" type="ns:ObjectBType" substitutionGroup=ns:ObjectA" />
<xs:element name="ObjectC" type="ns:ObjectCType" substitutionGroup=ns:ObjectA" />