2010-09-24 58 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\...

相關問題