2010-09-24 77 views
0

我需要创建一个XML文件是这样的:XSD元素:如何将单一的简单值与复杂类型(顺序)

<AGENDA> 
<COVER COLOR>BLACK</COVER COLOR> 
<PRICE>24.99</PRICE> 
<ENTRIES> 
    <NAMESURNAME>AAABBB</NAMESURNAME> 
    <PHONENUMBER>3434534543</PHONENUMBER> 
    <NAMESURNAME>EEEAAA</NAMESURNAME> 
    <PHONENUMBER>2342342</PHONENUMBER> 
</ENTRIES> 
</AGENDA> 

也就是说,一个或多个选项,并在序列的复杂类型。每个xml文件只需要一个选项集合,同时有一个或多个条目。 我使用嵌入在VS2010中的xsd文本编辑器,但我不知道如何正确放置选项元素。 如果我型(<xsd:schema....>标签后):

<xsd:element name="OPTION1" type="xsd:string"/> 
    <xsd:element name="RawPolling"> 
    <xsd:complexType> 
     <xsd:sequence maxOccurs="unbounded" minOccurs="0"> 
     <xsd:element name="RawPollingEntry"> 
      <xsd:complexType> 
      <xsd:sequence maxOccurs="1" minOccurs="0"> 
       <xsd:element name="Nome" type="xsd:string" /> 
..... 
.... 

我没有得到的XSD任何错误,但是当我写的XML,我得到“XML文档不能包含多个根级别元素” 我试着动OPTION1的RawPolling内(但不是RawPollingEntry内,OPTION1不是一个复杂的/序列类型的一部分,我需要每个XML文件只有一个选项1),并得到其他错误(“元素...有无效的子元素...) ?

我怎样才能做到这一点

+0

的可能重复的[XML文档不能包含多个根级元素(http://stackoverflow.com/questions/8162207/xml-document-cannot-contain-multiple-root-level-elements) – 2013-05-31 20:14:39

回答

2

首先,你在没有有效的XML - 你的名字中不能有空格,所以这个:

<COVER COLOR> ..... </COVER COLOR> 

对于开头是无效的。

下一页 - .NET附带一个名为xsd.exe一个伟大的工具。在这种情况下,我做你的XML有效(变更后的标签来<COVERCOLOR>),然后跑了XSD.EXE就可以了 - 这将产生基于XML文件的内容的XML schema文件。

这里的结果是这样的:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema id="newschema" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="AGENDA"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="COVERCOLOR" type="xs:string" minOccurs="0" /> 
     <xs:element name="PRICE" type="xs:string" minOccurs="0" /> 
     <xs:element name="ENTRIES" minOccurs="0" maxOccurs="unbounded"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="NAMESURNAME" nillable="true" minOccurs="0" maxOccurs="unbounded"> 
       <xs:complexType> 
        <xs:simpleContent msdata:ColumnName="NAMESURNAME_Text" msdata:Ordinal="0"> 
        <xs:extension base="xs:string"> 
        </xs:extension> 
        </xs:simpleContent> 
       </xs:complexType> 
       </xs:element> 
       <xs:element name="PHONENUMBER" nillable="true" minOccurs="0" maxOccurs="unbounded"> 
       <xs:complexType> 
        <xs:simpleContent msdata:ColumnName="PHONENUMBER_Text" msdata:Ordinal="0"> 
        <xs:extension base="xs:string"> 
        </xs:extension> 
        </xs:simpleContent> 
       </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

你会发现在类似这样的路径东西你XSD.EXE:

C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Bin\ 

这是一个64位的Windows 7计算机上 - 在32位上,取而代之的是c:\program files\...

相关问题