簡體   English   中英

xsd元素:如何放置具有復雜類型(序列)的單個簡單值

[英]xsd Elements: how to place single simple values with complex type (sequence)

我需要創建一個像這樣的xml文件:

<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文本編輯器,但是我不知道如何正確放置options元素。 如果我鍵入(在<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文件只需要一個OPTION1)並獲得其他錯誤(“元素...具有無效的子元素...)

我怎么能做到這一點?

首先,您的XML無效-名稱中不能包含帶空格的標記,因此:

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

首先是無效的。

xsd.exe帶有一個名為xsd.exe的強大工具。 在這種情況下,我使您的XML有效(將標簽更改為<COVERCOLOR> ),然后在其上運行xsd.exe-這將基於XML文件的內容生成一個XML模式文件。

結果是這樣的:

<?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\\...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM