XML valideerimine
Fail MinuSugupuu.xml kontrollitakse skeemi Isoleveta.xsd vastu
(C# XmlReader + XmlSchemaSet).
Valideerimine õnnestus! MinuSugupuu.xml vastab skeemile Isoleveta.xsd.
Ekraanipilt
XML: MinuSugupuu.xml
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/css" href="StyleSheet.css"?>
<!-- Minu sugupuu: alguspunkt on vanaema Lalaze.
Sünniaastad on arvutatud vanuse järgi (2026): Lalaze 69, Hussein 19, Hamida 25, Rafael 8,
Ayhan, Usif ja Ali 8. klassis (~14), Farida 6. klassis (~12).
Esmira, Arzu ja Amid (1970-1988 vahel) on hinnangulised - paranda vajadusel. -->
<inimene synd="1957" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Isoleveta.xsd">
<nimi>Lalaze</nimi>
<lapsed>
<inimene synd="1977">
<nimi>Esmira</nimi>
<lapsed>
<inimene synd="2007">
<nimi>Hussein</nimi>
</inimene>
<inimene synd="2012">
<nimi>Ayhan</nimi>
</inimene>
</lapsed>
</inimene>
<inimene synd="1980">
<nimi>Arzu</nimi>
<lapsed>
<inimene synd="2001">
<nimi>Hamida</nimi>
</inimene>
<inimene synd="2012">
<nimi>Usif</nimi>
</inimene>
<inimene synd="2014">
<nimi>Farida</nimi>
</inimene>
</lapsed>
</inimene>
<inimene synd="1986">
<nimi>Amid</nimi>
<lapsed>
<inimene synd="2012">
<nimi>Ali</nimi>
</inimene>
<inimene synd="2018">
<nimi>Rafael</nimi>
</inimene>
</lapsed>
</inimene>
</lapsed>
</inimene>
Skeem: Isoleveta.xsd
<?xml version="1.0" encoding="utf-8"?>
<!-- Isoleveta.xml skeem: inimene -> nimi + (lapsed -> inimene ...) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!-- Juurelement -->
<xs:element name="inimene" type="inimeneTyyp"/>
<!-- Inimene: kohustuslik nimi, valikulised lapsed, sünni- ja surma-aasta -->
<xs:complexType name="inimeneTyyp">
<xs:sequence>
<xs:element name="nimi" type="nimiTyyp"/>
<xs:element name="lapsed" type="lapsedTyyp" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="synd" type="xs:gYear" use="optional"/>
<xs:attribute name="surm" type="xs:gYear" use="optional"/>
</xs:complexType>
<!-- Lapsed: vähemalt üks inimene (rekursioon) -->
<xs:complexType name="lapsedTyyp">
<xs:sequence>
<xs:element name="inimene" type="inimeneTyyp" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!-- Nimi ei tohi olla tühi -->
<xs:simpleType name="nimiTyyp">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>