2010-12-12 4 views
1

Рассмотрим этот фрагмент XML:Поддерживает ли Intellisense xs: key/xs: keyref?

<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» должен ссылаться на один из языков в списке. Я также получаю поддержку Intellisense для полей «id» и «default». Но я хотел бы, чтобы Intellisense предлагал только языки из списка в xml-файле для поля «default» - не все из доступных типов Cultures (ведь они единственные допустимые). Как мне это сделать?

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

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

ответ

0

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

Смежные вопросы