是有另一種方式..
它定義每個實體的complexType給它一個名稱,並且使用類型: )
這裏是烏拉圭回合的樣本XML和XSD
XML:
<request>
<amenity>
<description>text</description>
</amenity>
</request>
XSD
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="request" type="request"/>
<xs:complexType name="request">
<xs:sequence>
<xs:element name="amenity" type="amenity"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="amenity">
<xs:sequence>
<xs:element name="description" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>
一些更多的解釋:
假設你的XML是這樣的:
<?xml version="1.0" encoding="utf-8"?>
<request>
<amenity>
<description>text</description>
<foo>text</foo>
</amenity>
<foobar>
<amenity2>
<description>text2</description>
<foo>text3</foo>
</amenity2>
</foobar>
</request>
你的XSD將是很簡單..因爲你沒有定義<descirption/>
和<foo/>
標籤兩次:)
觀察我多次使用Type="General"
:)
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="request" type="request"/>
<xs:complexType name="request">
<xs:sequence>
<xs:element name="amenity" type="General"/>
<xs:element name="foobar" type="foobar"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="General">
<xs:sequence>
<xs:element name="description" type="xs:string" />
<xs:element name="foo" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="foobar">
<xs:sequence>
<xs:element name="amenity2" type="General"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
它對我來說不算太糟糕,因爲一般來說XSD往往是冗長的。我的建議,不要改變它,如果它的工作。 – 2012-02-05 10:47:34
這就像XML模式獲取...一樣簡單。 – skaffman 2012-02-05 10:51:06
您可以使用' '而不是' '。在你的情況下,它並不重要,你可以安全的20個字符;-) –
2012-02-05 11:51:40