考虑下面的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>现在,这几乎是可行的,即。列表中的语言必须是唯一的,并且“default”属性必须引用列表中的一种语言。我还获得了对'id‘和'default’字段的智能感知支持。但我希望智能感知只为“默认”字段建议xml文件中列表中的语言,而不是所有来自availableCultures类型的语言(毕竟它们是唯一有效的语言)。我该怎么做?
为什么我怀疑这应该是可行的?因为在编写上面的xsd文件时,Intellisense在“xs: attribute”元素的“type”属性的下拉列表中显示了"mstns:availableCultures“。
我不知道的是,这是否可以单独使用xsd来完成,或者我需要编写某种VS包/插件。
发布于 2011-05-11 02:12:54
我的经验表明,这种情况在VS2005中不会发生。
https://stackoverflow.com/questions/4422337
复制相似问题