Поддерживает ли Intellisense xs: key / xs: keyref? - PullRequest
1 голос
/ 12 декабря 2010

Рассмотрим этот фрагмент 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>

Теперь это почти работает, т.е. языки в списке должны быть уникальными, и этот атрибут «по умолчанию» должен ссылаться на один из языков в списке. Я также получаю поддержку Intellisense для полей 'id' и 'default'. Но я бы хотел, чтобы Intellisense предлагал только языки из списка в xml-файле для поля «по умолчанию», а не все из типа availableCultures (в конце концов, они единственные допустимые). Как мне это сделать?

Почему я подозреваю, что это должно быть выполнимо? Потому что при написании вышеуказанного xsd-файла Intellisense отображал «mstns: availableCultures» в раскрывающемся списке для атрибута «type» элемента «xs: attribute».

Чего я не знаю, так это того, можно ли это сделать, используя только xsd, или мне нужно написать какой-нибудь пакет / надстройку VS.

1 Ответ

0 голосов
/ 10 мая 2011

Мой опыт показывает, что этого не происходит в VS 2005.

...