Intellisense是否支持xs:key / xs:keyref?

时间:2010-12-12 15:19:54

标签: xml visual-studio xsd intellisense vs-extensibility

考虑这个XML片段:

<languages default="de-DE">
  <language id="es-ES" />
  <language id="de-DE" />
</languages>

和描述它的xsd:

<xs:simpleType name="availableCultures" id="availableCultures">
  <xs:restriction base="xs:QName">
    <xs:enumeration value="en-US"/>
    <xs:enumeration value="de-DE"/>
    <xs:enumeration value="es-ES"/>
  </xs:restriction>
</xs:simpleType>
...
<xs:element name="languages">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="language" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="id" form="unqualified" type="mstns:availableCultures" use="required" />
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="default" form="unqualified" type="mstns:availableCultures" />
  </xs:complexType>
  <xs:keyref name="defaultP" refer="mstns:languageKey">
    <xs:selector xpath="."/>
    <xs:field xpath="@default"/>
  </xs:keyref>
  <xs:key name="languageKey">
    <xs:selector xpath="mstns:language"/>
    <xs:field xpath="@id"/>
  </xs:key>
  <xs:unique name="languageUnique">
    <xs:selector xpath="mstns:language"/>
    <xs:field xpath="@id"/>
  </xs:unique>
</xs:element>

现在,这几乎可行,即。列表中的语言被强制为唯一,“default”属性必须引用列表中的一种语言。我还获得了对“id”和“default”字段的Intellisense支持。但我希望Intellisense只提出xml文件中列表中的语言为'default'字段 - 而不是所有来自availableCultures类型的语言(毕竟它们是唯一有效的)。我该怎么做?

为什么我怀疑这应该可行?因为在编写上面的xsd文件时,Intellisense在'xs:attribute'元素的'type'属性的下拉列表中显示“mstns:availableCultures”。

我不知道的是,是否可以单独使用xsd或者我需要编写某种VS包/加载项。

1 个答案:

答案 0 :(得分:0)

我的经验表明,这不会发生在VS 2005中。