다음 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>
이제는 거의 작동합니다. 목록의 언어는 고유해야하며 '기본'속성은 목록의 언어 중 하나를 참조해야합니다. 또한 'id'및 'default'필드 모두에 대해 Intellisense를 지원합니다. 그러나 Intellisense가 XML 파일의 'default'필드에 대한 언어 목록 만 제공하도록하고 싶습니다. availableCultures 유형의 모든 언어가 아니라 (모두 올바른 언어입니다). 어떻게해야합니까?
왜 이것이 가능해야한다고 생각합니까? 위의 xsd 파일을 작성할 때 Intellisense는 'xs : attribute'요소의 'type'속성에 대한 드롭 다운 목록에 "mstns : availableCultures"를 표시했습니다.
내가 모르는 이유는 xsd만으로도이 작업을 수행 할 수 있는지 또는 일종의 VS 패키지/추가 기능을 작성해야한다는 것입니다.