私は、あなたが望むのは属性ではなく、アイデンティティの制約であると信じています。だから、生成されたXSDが(私はパッケージの下のクラスは、何らかの形で繰り返す必要がありますと仮定)、次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<!--W3C Schema generated by QTAssistant/W3C Schema Refactoring Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Metamodel">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="Package">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="OwnedType">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Class" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="Name" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:unique name="ClassNameUniqueInPackage">
<xsd:selector xpath="OwnedType/Class"/>
<xsd:field xpath="@Name"/>
</xsd:unique>
</xsd:element>
<xsd:element ref="Class"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Class">
<xsd:complexType>
<xsd:attribute name="Name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
これにより
は、モデルを想定し、次のXMLが検証されます:
<Metamodel>
<Package Name="serhat">
<OwnedType>
<Class Name="serhat"></Class>
<Class Name="serhat2"></Class>
</OwnedType>
</Package>
<Package Name="serhat2">
<OwnedType>
<Class Name="serhat"></Class>
</OwnedType>
</Package>
<Class Name="serhat"></Class>
</Metamodel>
ではなく、この:
<Metamodel>
<Package Name="serhat">
<OwnedType>
<Class Name="serhat"></Class>
<Class Name="serhat"></Class>
</OwnedType>
</Package>
<Package Name="serhat2">
<OwnedType>
<Class Name="serhat"></Class>
</OwnedType>
</Package>
<Class Name="serhat"></Class>
</Metamodel>
エラーは次のようになります。
Error occurred while loading [], line 5 position 5
There is a duplicate key sequence 'serhat' for the 'ClassNameUniqueInPackage' key or unique identity constraint.
かなり良い解決策:) –