2011-01-28 31 views
1

下面是一个示例XSD和示例XML。 XSD是这样写的:我可以让我的XML Schema(XSD)为VS VS Intellisense提供包含* any * name的元素吗?

<Columns> 
    <Column label="etc..."></Column> 
</Columns> 

我想让XSD允许任何名称而不是“列”的元素。我真正想要的是intellisense在Visual Studio中工作,以便我可以输入任何元素名称而不是“列”,并且仍会提示您输入各种列属性。这可能吗?我只是在寻找intellisense。我不需要使用模式实际验证XML。

示例XML:

<?xml version="1.0" encoding="utf-8" ?> 
<Columns name="FindPatient" label="Find Patient"> 
    <Name label="Patient Name" display="yes" order="1"/> 
    <MRN label="MRN #" display="yes" order="2"/> 
    <BirthDate label="Birth Date" format="shortdate" align="right" display="yes" order="3"/> 
    <SSN label="SSN" format="hiddenSsn" display="yes" order="4" notSortable="yes"/> 
    <DateOfService label="Date Of Service" format="shortdate" align="right" display="no" order="5"/> 
    <AdmitDate label="Admit Date" format="shortdate" align="right" display="no" order="6"/> 
    <DischargeDate label="Discharge Date" format="shortdate" align="right" display="no" order="7"/> 
    <Address label="Address" display="yes" order="8"/> 
    <Facility label="Facility" display="yes" order="9"/> 
</Columns> 

样品XSD:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema id="ColumnConfiguration" targetNamespace="http://example.com/columnconfiguration" xmlns="http://example.com/columnconfiguration" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> 
    <xs:simpleType name="yesNo"> 
     <xs:restriction base="xs:string"> 
      <xs:enumeration value="yes"/> 
      <xs:enumeration value="no"/> 
     </xs:restriction> 
    </xs:simpleType> 
    <xs:complexType name="Column"> 
     <xs:attribute name="label" type="xs:string" use="required"/> 
     <xs:attribute name="display" type="yesNo" use="required"/> 
     <xs:attribute name="order" type="xs:integer" use="required"/> 
     <xs:attribute name="format" type="format" use="optional"/> 
     <xs:attribute name="align" type="xs:string" use="optional"/> 
     <xs:attribute name="tooltip" type="xs:string" use="optional"/> 
    </xs:complexType> 
    <xs:complexType name="Columns"> 
     <xs:sequence> 
      <xs:element name="Column" type="Column" minOccurs="1" maxOccurs="unbounded"/> 
     </xs:sequence> 
    </xs:complexType> 
    <xs:element name="Columns" type="Columns"/> 
</xs:schema> 

回答

1

解决方案取代

<xs:complexType name="Columns"> 
    <xs:sequence> 
     <xs:element name="Column" type="Column" minOccurs="1" maxOccurs="unbounded"/> 
    </xs:sequence> 
</xs:complexType> 

:允许任何子元素,而无需指定他们

<xs:complexType name="Columns"> 
    <xs:sequence> 
     <xs:any minOccurs="1"/> 
    </xs:sequence> 
</xs:complexType> 

解决方案2:允许一些明确界定孩子的

<xs:complexType name="Columns"> 
    <xs:choice minOccurs="1" maxOccurs="unbound"> 
     <xs:element name="Column" type="Column" minOccurs="1" maxOccurs="unbounded"/> 
     <!-- add other xs:element here --> 
    </xs:choice> 
</xs:complexType> 
+0

第一个解决方案让我放在任何元素的名字,但并没有给我的属性的任何智能感知。如果我先将元素命名为“Column”,然后再改变它,第二个工作就行了。我不认为这有什么完美的解决方案。谢谢! – 2011-01-31 13:50:48

相关问题