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