XML模式唯一键
问题描述:
我承认对Schema来说是新的,我试图让一个特定的属性在一个集合中是唯一的。我也需要这个价值是一个关键,因为它会在其他地方引用。XML模式唯一键
这是我目前的架构:
<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是有效的,但它确实扔如果名字不在那里,会发出警告。如果两个名字相同,我希望它会发出警告。
难道有人请指点我正确的方向吗?
谢谢你的时间。
答
所以我想通了找这里经过:
简单的回答是,你需要将命名空间添加到XPath表达式。 不知道这是VS的东西或者只是一般,但...
<xs:key name="Subroutine_Key">
<xs:selector xpath="mstns:subroutine"/>
<xs:field xpath="@name"/>
</xs:key>
固定的,我遇到的问题。
再次感谢您的时间,我对此表示歉意。