對於像這樣的XML文檔,使用XSD架構文件驗證XML文件。 (XML結構)
<Products>
<productTypes>
<productType name="BigOranges">
<product>
<name>BigOrange1</name>
<quatity>25</quatity>
</product>
<product>
<name>BigOrange2</name>
<quatity>55</quatity>
</product>
</productType>
<productType name="BigApples">
<product>
<name>BigApples1</name>
<quatity>25</quatity>
</product>
<product>
<name>BigApples2</name>
<quatity>55</quatity>
</product>
</productType>
</productTypes>
</Products>
我試圖自動生成XSD文件中看到一個例子,這是生成的。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="T_quatity">
<xs:restriction base="xs:byte">
<xs:enumeration value="25"/>
<xs:enumeration value="55"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="T_name">
<xs:restriction base="xs:string">
<xs:enumeration value="BigApples1"/>
<xs:enumeration value="BigApples2"/>
<xs:enumeration value="BigOrange1"/>
<xs:enumeration value="BigOrange2"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="AT_1">
<xs:restriction base="xs:string">
<xs:enumeration value="BigApples"/>
<xs:enumeration value="BigOranges"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="T_productTypes">
<xs:sequence>
<xs:element ref="productType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="T_productType">
<xs:sequence>
<xs:element ref="product" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="name" use="required"/>
</xs:complexType>
<xs:complexType name="T_product">
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="quatity"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="T_Products">
<xs:sequence>
<xs:element ref="productTypes"/>
</xs:sequence>
</xs:complexType>
<xs:attribute name="name" type="AT_1"/>
<xs:element name="quatity" type="T_quatity"/>
<xs:element name="productTypes" type="T_productTypes"/>
<xs:element name="productType" type="T_productType"/>
<xs:element name="product" type="T_product"/>
<xs:element name="name" type="T_name"/>
<xs:element name="Products" type="T_Products"/>
</xs:schema>
看看上面,我可以看到發生了什麼是他們類型被定義,然後在元素被定義後使用。我不明白的是,元素是一個接一個地定義的,不遵循XML消息的結構。
如果此架構將被用於驗證XML文檔,如何將XML文件的結構驗證?例如,使用上述模式,它如何知道productTypes元素是productType標記的內部標記?
是上面的格式,使我更有意義比「伊甸園」的做法。哪一種是最常用的方法,是否比其他方法有什麼不利之處? – ziggy
在帖子中解釋太多了......嘗試[此鏈接](http://developers.sun.com/jsenterprise/archive/nb_enterprise_pack/reference/techart/design_patterns.html)。在現實生活中,俄羅斯娃娃是相當侷限於學習(至少我沒有看到它在任何生產環境中)。爲了增添混亂,還有兩種風格,威尼斯百葉窗和薩拉米切片;實際上,伊甸園是威尼斯人和薩拉米人的組合。如果有的話,我主要看過威尼斯人和花園。有關比較分析,請參閱外部鏈接。 –
好的,謝謝你會嘗試和調查更多。 – ziggy