私は確かにスキーマに不慣れで、特定の属性をセット内で一意にしようとしています。他の場所で参照されるため、この値をキーにする必要もあります。
これは私の現在のスキーマです:
<xs:element name="subroutines" type="guisubroutines_Type" minOccurs="1">
<xs:key name="Subroutine_Key">
<xs:selector xpath="subroutine"/>
<xs:field xpath="@name"/>
</xs:key>
<xs:unique name="Subroutine_Unique">
<xs:selector xpath="subroutine"/>
<xs:field xpath="@name"/>
</xs:unique>
</xs:element>
<xs:complexType name="guisubroutines_Type" >
<xs:sequence>
<xs:element name="subroutine" type="subroutine_Type" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="subroutine_Type">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
これは私のxmlです:
<subroutines>
<subroutine name="one"></subroutine>
<subroutine name="one"></subroutine>
</subroutines>
現在 Visual Studio 2010 を使用していますが、この xml は有効であると表示されていますが、名前が存在しない場合は警告がスローされます。2 つの名前が同じ場合に警告をスローしたいと思います。
誰かが私を正しい方向に向けてもらえますか?
お時間をいただきありがとうございます。