2011-04-21 54 views
1

我在XML方面相當新穎,並且對模式有問題。如何更改XML Schema以便它能識別重複元素?

下面是我在XML文件中:

<?xml version="1.0" encoding="utf-8" ?> 
<Receipt> 
    <Customer> 
    <FullName>Sammy Stevan Djap</FullName> 
    <Address>Jalan Daan Mogot Raya No. 10</Address> 
    <Province>Sulawesi Utara</Province> 
    <City>Manado</City> 
    <ZipCode>95126</ZipCode> 
    <Telephone>62431862169</Telephone> 
    <Memo>Barang di kirim bareng - bareng</Memo> 
    </Customer> 
    <Order> 
    <Product> 
     <Name>Afduner Botol</Name> 
     <Unit>Botol</Unit> 
     <Quantity>10</Quantity> 
     <Price>4500</Price> 
     <Total>45000</Total> 
    </Product> 
    </Order> 
</Receipt> 

這是我在架構:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="Receipt"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="Customer"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="FullName" type="xs:string" /> 
       <xs:element name="Address" type="xs:string" /> 
       <xs:element name="Province" type="xs:string" /> 
       <xs:element name="City" type="xs:string" /> 
       <xs:element name="ZipCode" type="xs:unsignedInt" /> 
       <xs:element name="Telephone" type="xs:unsignedLong" /> 
       <xs:element name="Memo" type="xs:string" /> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     <xs:element name="Order"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="Product"> 
       <xs:complexType> 
        <xs:sequence> 
        <xs:element name="Name" type="xs:string" /> 
        <xs:element name="Unit" type="xs:string" /> 
        <xs:element name="Quantity" type="xs:unsignedByte" /> 
        <xs:element name="Price" type="xs:unsignedShort" /> 
        <xs:element name="Total" type="xs:unsignedShort" /> 
        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

我的目標實際上是讓一個XML文件,可反覆「產品「標籤。例如:

<?xml version="1.0" encoding="utf-8" ?> 
<Receipt> 
    <Customer> 
    <FullName>Sammy Stevan Djap</FullName> 
    <Address>Jalan Daan Mogot Raya No. 10</Address> 
    <Province>Sulawesi Utara</Province> 
    <City>Manado</City> 
    <ZipCode>95126</ZipCode> 
    <Telephone>62431862169</Telephone> 
    <Memo>Barang di kirim bareng - bareng</Memo> 
    </Customer> 
    <Order> 
    <Product> 
     <Name>Afduner Botol</Name> 
     <Unit>Botol</Unit> 
     <Quantity>10</Quantity> 
     <Price>4500</Price> 
     <Total>45000</Total> 
    </Product> 
    <Product> 
     <Name>Alat Potong Keramik 3 in 1</Name> 
     <Unit>Buah</Unit> 
     <Quantity>5</Quantity> 
     <Price>205000</Price> 
     <Total>1025000</Total> 
    </Product> 
    </Order> 
</Receipt> 

顯然我的模式不知道我會反覆調用「產品」標籤。目前,我的模式只允許調用1個「Product」標籤。

因此,我的問題是你們是否知道我該如何改變我的模式,以便它能讓我在「Order」標籤內添加多個「Product」標籤?

+0

我會質疑你使用的一些數據類型。將zipCode和Telephone建模爲整數意味着您很可能失去前導零 - 這是您真正想要的嗎?數量爲unsignedByte - 你真的不想讓人們訂購超過255件任何東西嗎? – 2011-04-21 21:28:30

回答

3

minOccurs="0"maxOccurs="unbounded"添加到<xs:element name="Product">元素。如果您至少需要一個Product,請使用。

+0

它像一個魔術般的工作..謝謝 – Sammm 2011-04-21 19:49:17

相關問題