pro všechny elementy se definují typy
elementy jsou definovány lokálně pomocí těchto typů
spojuje výhody předchozích dvou přístupů
nejupovídanější a nejpracnější
správný název je „žaluziová metoda“ (Venetian Blind)
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:simpleType name="jmenoType"> <xs:restriction base="xs:string"> <xs:minLength value="1"/> <xs:maxLength value="15"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="prijmeniType"> <xs:restriction base="xs:string"> <xs:minLength value="1"/> <xs:maxLength value="20"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="uliceType"> <xs:restriction base="xs:string"/> </xs:simpleType> <xs:simpleType name="městoType"> <xs:restriction base="xs:string"/> </xs:simpleType> <xs:simpleType name="psčType"> <xs:restriction base="xs:token"> <xs:pattern value="[0-9]{3} [0-9]{2}"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="platType"> <xs:restriction base="xs:decimal"> <xs:minInclusive value="0"/> </xs:restriction> </xs:simpleType> <xs:complexType name="adresaType"> <xs:sequence> <xs:element name="ulice" type="uliceType"/> <xs:element name="město" type="městoType"/> <xs:element name="psč" type="psčType"/> </xs:sequence> </xs:complexType> <xs:complexType name="zamestnanecType"> <xs:sequence> <xs:element name="jmeno" type="jmenoType"/> <xs:element name="prijmeni" type="prijmeniType"/> <xs:element name="adresa" type="adresaType"></xs:element> <xs:element name="plat" type="platType"/> </xs:sequence> </xs:complexType> <xs:element name="zamestnanec" type="zamestnanecType"/> </xs:schema>