2010-12-12 9 views
1

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.

Antwort

0

Meine Erfahrung zeigt, dass dies in VS 2005 nicht passiert.