Posted on 2008-10-22 16:45
semovy 閱讀(123)
評論(0) 編輯 收藏 所屬分類:
XML相關
1. 最簡單的Schema文檔
如何寫一個最簡單的XML Schema文檔呢?
首先,我們寫出一個最簡單的XML文檔。
hello.xml
-------------------
<?xml version="1.0"?>
<greeting>Hello World!!</greeting>
<!--一個根元素:greeting;且這個元素不含屬性,無子元素,內容是字符串。-->
hello.xsd
----------
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="
http://www.w3.org/2001/XMLSchema">
<xsd:element name="greeting" type="xsd:string"/>
</xsd:schema>
XML Schema文檔后綴名是.xsd,完全符合XML語法,根元素是schema,命名空間xmlns:xsd="
http://www.w3.org/2001/XMLSchema,用元素<element>定義實例文檔中的元素,如greeting。
2. 含子元素的Schema文檔
假設實例文檔是如下的:
customer.xml
-----------
<customer>
<name>teiki</name>
<address>No.237, Road Waitan, Shanghai</address>
</customer>
則可以寫出以下的XML Schema文檔:
customer.xsd
----------------
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="
http://www.w3.org/2001/XMLSchema">
<xsd:element name="customer">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="address" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
實例文檔customer.xml中,<customer>元素含有兩個子元素,所以我們在Schema文檔中采用ComplexType來定義該元素。sequence表示子元素依次出現的順序。
3. 含子元素和孫元素的Schema文檔
這次我們給出一個更加復雜一些的文檔:
customer.xml
---------------
<customer>
<name>Teiki</name>
<address>
<!-- address追加一個地址子元素 -->
<prefecture>Zhejiang</prefecture>
<city>Hangzhou</city>
<street>Xilu Road, No.121, 7F</street>
</address>
</customer>
為此,我們需要一個更加復雜一點的Schema文檔:
address.xsd
-----------------
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="
http://www.w3.org/2001/XMLSchema">
<xsd:element name="customer">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<!-- 追加子元素address-->
<xsd:element name="address">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="prefecture" type="xsd:string"/>
<xsd:element name="city" type="xsd:string" />
<xsd:element name="street" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
不過,我們還可以采用ref元素來重新編寫這個Schema文檔:
address2.xsd
----------------------
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="
http://www.w3.org/2001/XMLSchema">
<xsd:element name="customer">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element ref="address"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="address">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="prefecture" type="xsd:string"/>
<xsd:element name="city" type="xsd:string" />
<xsd:element name="street" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
使用ref元素可以直接將其指向另一個模塊,使文檔更加具有可讀性。