XML valideerimine

Fail MinuSugupuu.xml kontrollitakse skeemi Isoleveta.xsd vastu (C# XmlReader + XmlSchemaSet).

Valideerimine õnnestus! MinuSugupuu.xml vastab skeemile Isoleveta.xsd.

Ekraanipilt

Ekraanipilt: MinuSugupuu.xml valideerimine õnnestus
MinuSugupuu.xml valideeriti edukalt skeemi Isoleveta.xsd vastu.

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>