dieses XML-Fragment vor:Unterstützt Intellisense xs: key/xs: keyref?
<languages default="de-DE">
<language id="es-ES" />
<language id="de-DE" />
</languages>
und eine XSD, die es beschreibt:
<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>
Nun, dies funktioniert fast, dh. Sprachen in der Liste müssen eindeutig sein und das "Standard" -Attribut muss sich auf eine der Sprachen in der Liste beziehen. Ich erhalte auch Intellisense-Unterstützung für die Felder "id" und "default". Aber ich möchte, dass Intellisense nur Sprachen aus der Liste in der xml-Datei für das "Standard" -Feld vorschlägt - nicht alle vom Typ "verfügbareKulturen" (nach alledem sind sie die einzig gültigen). Wie mache ich das?
Warum vermute ich, dass dies machbar sein sollte? Beim Schreiben der obigen xsd-Datei zeigte Intellisense "mstns: availableCultures" in der Dropdown-Liste für das Attribut "type" des Elements "xs: attribute" an.
Was ich nicht weiß, ist, ob dies mit xsd allein getan werden kann, oder ich würde eine Art von VS-Paket/Add-in schreiben müssen.