【问题标题】:XML Schema Unique KeysXML 模式唯一键
【发布时间】:2012-04-23 10:25:13
【问题描述】:

诚然,我是 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 是有效的,但如果名称不存在,它会发出警告。如果两个名称相同,我希望它发出警告。

有人可以指点我正确的方向吗?

感谢您的宝贵时间。

【问题讨论】:

    标签: xml schema unique


    【解决方案1】:

    所以我看了这里才知道:

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

    快速回答是您需要将命名空间添加到 xpath 表达式。 不确定这是 VS 问题还是一般情况,但是...

    <xs:key name="Subroutine_Key">
       <xs:selector xpath="mstns:subroutine"/>
       <xs:field xpath="@name"/>
    </xs:key>
    

    解决了我遇到的问题。

    再次感谢您的宝贵时间,对于浪费时间我深表歉意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-24
      • 1970-01-01
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 1970-01-01
      相关资源
      最近更新 更多