[英]XML Schema Unique Keys
诚然,我是 Schema 的新手,我正试图让一个特定的属性在一个集合中是唯一的。 我还需要这个值作为键,因为它将在别处引用。
这是我当前的模式:
<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>
解决了我遇到的问题。
再次感谢您的宝贵时间,对于浪费时间,我深表歉意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.