このような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タグの内部タグであることをどのように知ることができますか?