首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML架构唯一键

XML架构唯一键
EN

Stack Overflow用户
提问于 2012-04-11 13:42:55
回答 1查看 1.4K关注 0票数 4

无可否认,我是Schema的新手,我正在尝试让一个特定的属性在一个集合中是唯一的。我还需要这个值是一个键,因为它将在其他地方被引用。

这是我当前的模式:

代码语言:javascript
复制
 <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:

代码语言:javascript
复制
  <subroutines>
    <subroutine name="one"></subroutine>
    <subroutine name="one"></subroutine>
  </subroutines>

我目前使用的是Visual Studio2010,它显示此xml是有效的,但如果名称不在其中,它会抛出警告。如果两个名称相同,我希望它抛出一个警告。

有人能给我指个方向吗?

谢谢您抽时间见我。

EN

回答 1

Stack Overflow用户

发布于 2012-04-11 13:57:52

所以我在看了这里之后找到了答案:

http://social.msdn.microsoft.com/Forums/en-US/xmlandnetfx/thread/25603e1c-d7dd-48d2-a9f6-8d4177845441/

简单的答案是您需要将名称空间添加到xpath表达式中。我不确定这是VS还是一般情况下,但是...

代码语言:javascript
复制
<xs:key name="Subroutine_Key">
   <xs:selector xpath="mstns:subroutine"/>
   <xs:field xpath="@name"/>
</xs:key>

修复了我遇到的问题。

再次感谢您的时间,我很抱歉浪费了您的时间。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10100452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档