2014-01-18 189 views
0

我無法弄清楚如何將多個節點的屬性添加到xsd文件中。 這是我的XML文件。將多個屬性添加到架構中的多個元素

<?xml version="1.0" encoding="utf-8"?> 
<xs:Root xmlns:xs="http://tempuri.org/SchemaFile" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://tempuri.org/SchemaFile SchemaFile.xsd" 
      xmlns:elementFormDefault="qualified"> 
    <xs:Node name="attributeName"> 
    <xs:data name="attributeName" amount="total" /> // These are unbounded. 
    </xs:Node> 
</xs:Root> 

這是我到目前爲止。儘管如此,我無法得到任何工作。

<sch:element name="Root"> 
    <sch:complexType> 
     <sch:sequence> 
     <sch:element name="Node" maxOccurs="unbounded"> 
      <sch:complexType> 
      <sch:simpleContent> 
       <sch:extension base="sch:string"> 
       <sch:attribute name="name" type="sch:string"/> 
       </sch:extension> 
      </sch:simpleContent> 
      </sch:complexType> 
     </sch:element> 
     </sch:sequence> 
    </sch:complexType> 
    </sch:element> 

我也嘗試了全球要添加的屬性類型,但我不能讓它的工作。當我使用這個類型時,它說我不能有任何其他複雜或簡單的類型以及xmlnode節點的屬性聲明。

+0

注意'xs'是通常用作XML Schemas的命名空間前綴('http:// www.w3.org/2001/XMLSchema'),當你使用該前綴作爲其他內容併爲'http:// www。 w3.org/2001/XMLSc hema' - 在研究出實例文檔位於頂部而底層模式而非反之亦然之前,我必須先閱讀您的問題兩次...... –

+0

實例文檔不是問題所在。這是屬性排序中的一個問題,因爲我的兩個節點都附帶了屬性。我認爲屬性必須首先列出,而實際上它們必須在其他元素之後列出。 – deathismyfriend

回答

0

我發現這似乎工作。這是我搞砸了上earlier.Root

<sch:element name="Root"> 
    <sch:complexType> 
     <sch:sequence> 
     <sch:element name="Node" maxOccurs="unbounded"> 
      <sch:complexType> 
      <sch:sequence> 
       <sch:element name="Data" maxOccurs="unbounded"> 
       <sch:complexType> 
        <sch:attribute name="name"/> 
        <sch:attribute name="amount"/> 
       </sch:complexType> 
       </sch:element> 
      </sch:sequence> 
      <sch:attribute name="name"/> 
      </sch:complexType> 
     </sch:element> 
     </sch:sequence> 
    </sch:complexType> 
    </sch:element> 
0

試試這個排序:

<xs:schema version="1.0" 
     xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     elementFormDefault="qualified"> 
    <xs:element name="Root"> 
     <xs:complexType> 
      <xs:sequence>      
        <xs:element name="Node" maxOccurs="unbounded"> 
         <xs:complexType> 
          <xs:sequence> 
           <xs:element name="data" maxOccurs="unbounded"> 
            <xs:complexType>           
             <xs:attribute name="name"> 
              <xs:simpleType> 
               <xs:restriction base="xs:string">            
               </xs:restriction> 
              </xs:simpleType> 
             </xs:attribute> 
             <xs:attribute name="amount"> 
              <xs:simpleType> 
               <xs:restriction base="xs:string">            
               </xs:restriction> 
              </xs:simpleType>  
             </xs:attribute> 
            </xs:complexType> 
           </xs:element> 
          </xs:sequence> 
         </xs:complexType> 
        </xs:element>     
      </xs:sequence> 
     </xs:complexType> 
    </xs:element>      
    </xs:schema>    

它適用於低於這個XML

<Root> 
<Node> 
     <data name="string 1" amount="string 2"/> 
     <data name="string 3" amount="string 4"/> 
</Node>  
</Root> 
+0

也不要忘了驗證這個xml文件與上述xsd正常運行 – Anastasis

+0

看看我的上述問題,然後我的帖子。我找到了解決方案。這不會幫助我,因爲它不是我問的。謝謝你嘗試。 – deathismyfriend