Personal tools
You are here: Home Schematron lomfrv1.0 regles test lomfr.sch
Document Actions

regles test lomfr.sch

Click here to get the file

Size 22.9 kB - File type text/xml

File contents

<?xml version="1.0" encoding="UTF-8"?>
<sch:schema xmlns:sch="http://purl.oclc.org/dsdl/schematron">
	<sch:ns prefix="lom" uri="http://ltsc.ieee.org/xsd/LOM"/>
	<sch:ns prefix="lomfr" uri="http://www.lom-fr.fr/xsd/LOMFR"/>
	<sch:ns prefix="xsi" uri="http://www.w3.org/2001/XMLSchema-instance"/>

	<sch:phase id="lomfrxsd">
		<sch:active pattern="vocab"/>
	</sch:phase>

	<sch:phase id="lomfr_extended_lom">
		<sch:active pattern="eltsObligatoires"/>
		<!-- <sch:active pattern="presenceVocab"/>
		<sch:active pattern="valeursVocab"/> -->
		<sch:active pattern="vocab"/>
	</sch:phase>

	<!-- Les métadonnées obligatoires en LOMFR-->
	<sch:pattern id="eltsObligatoires">
		<sch:title>Test de présence des éléments obligatoires</sch:title>
		<!-- remarque : pas de validation de la présence ou pas d'un contenu : du côté des applications -->
		<sch:rule context="/lom:lom/lom:general">
			<sch:assert test="lom:identifier/lom:catalog">Le document LOMFR doit avoir un
				identifiant dans un catalogue précisé.</sch:assert>
			<sch:assert test="lom:identifier/lom:entry">Le document LOMFR doit avoir un identifiant.</sch:assert>
			<sch:assert test="lom:title/lom:string">Le document LOMFR doit présenter un
			titre.</sch:assert>
		</sch:rule>
	</sch:pattern>

	<!-- elements dont le vocabulaire est issu du LOM -->
	<sch:pattern id="vocab">
		<sch:title>Tests de présence des balises source et value et de leurs valeurs pour chaque
			élément</sch:title>

		<!--Règles abstraites : balises source et value appartenant au nom de domaine LOM-->
		<sch:rule abstract="true" id="balisesLOMCheck">
			<sch:let name="eltName" value="name(.)"/>
			<sch:let name="nbAncestor" value="count(ancestor::node())"/>
			<sch:let name="categorieName" value="name(ancestor::node()[$nbAncestor - 2])"/>
			
			<sch:assert test="lom:value">Erreur catégorie "<sch:value-of select="$categorieName"/>",
				élément "<sch:value-of select="$eltName"/>" : les éléments de types vocabulaires
				doivent contenir un élément value.</sch:assert>
			<sch:assert test="lom:source">Erreur catégorie "<sch:value-of select="$categorieName"
				/>", élément "<sch:value-of select="$eltName"/>" : les éléments de types
				vocabulaires doivent contenir un élément source. </sch:assert>
			<!--<sch:assert test="lom:source">test</sch:assert>-->
		</sch:rule>
		<!--Règles abstraites : balises source et value appartenant au nom de domaine LOMFR-->
		<sch:rule abstract="true" id="balisesLOMFRCheck">
			<sch:let name="eltName" value="name(.)"/>
			<sch:let name="nbAncestor" value="count(ancestor::node())"/>
			<sch:let name="categorieName" value="name(ancestor::node()[$nbAncestor - 2])"/>
			
			<sch:assert test="lomfr:value">Erreur catégorie "<sch:value-of select="$categorieName"
				/>", élément "<sch:value-of select="$eltName"/>" : les éléments de types
				vocabulaires doivent contenir un élément value. </sch:assert>
			<sch:assert test="lomfr:source">Erreur catégorie "<sch:value-of select="$categorieName"
				/>", élément "<sch:value-of select="$eltName"/>" : les éléments de types
				vocabulaires doivent contenir un élément source. </sch:assert>
		</sch:rule>
		<!--Règle abstraite : valeur de l'élément SOURCE des vocabulaires LOM-->
		<sch:rule abstract="true" id="sourceLOMCheck">
			<sch:let name="eltName" value="name(parent::node())"/>
			<sch:let name="nbAncestor" value="count(ancestor::node())"/>
			<sch:let name="categorieName" value="name(ancestor::node()[$nbAncestor - 2])"/>
			
			<sch:assert test="text() = 'LOMv1.0'">Erreur catégorie "<sch:value-of
					select="$categorieName"/>", élément "<sch:value-of select="$eltName"/>" : Le
				vocabulaire de cet élément est issu du LOM, il doit avoir comme source
			"LOMv1.0"</sch:assert>
		</sch:rule>
		<!--Règle abstraite : valeur de l'élément SOURCE des vocabulaires LOMFR-->
		<sch:rule abstract="true" id="sourceLOMFRCheck">
			<sch:let name="eltName" value="name(parent::node())"/>
			<sch:let name="nbAncestor" value="count(ancestor::node())"/>
			<sch:let name="categorieName" value="name(ancestor::node()[$nbAncestor - 2])"/>
			
			<sch:assert test="text() = 'LOMFRv1.0'">Erreur catégorie "<sch:value-of
					select="$categorieName"/>", élément "<sch:value-of select="$eltName"/>" : Le
				vocabulaire de cet élément est issu du LOMFR, il doit avoir comme source
			"LOMFRv1.0"</sch:assert>
		</sch:rule>
		<!--Règle abstraite : valeur de l'élément SOURCE des valeurs LOM des vocabulaires mixtes-->
		<sch:rule abstract="true" id="sourceMixteLOMCheck">
			<sch:let name="eltName" value="name(parent::node())"/>
			<sch:let name="nbAncestor" value="count(ancestor::node())"/>
			<sch:let name="categorieName" value="name(ancestor::node()[$nbAncestor - 2])"/>
			
			<sch:assert test="text() = 'LOMv1.0'">Erreur catégorie "<sch:value-of
				select="$categorieName"/>", élément "<sch:value-of select="$eltName"/>" : Ce mot appartient à un vocabulaire issu du LOM, il
				doit avoir comme source "LOMv1.0"</sch:assert>
		</sch:rule>
		<!--Règle abstraite : valeur de l'élément SOURCE des valeurs LOMFR des vocabulaires mixtes-->
		<sch:rule abstract="true" id="sourceMixteLOMFRCheck">
			<sch:let name="eltName" value="name(parent::node())"/>
			<sch:let name="nbAncestor" value="count(ancestor::node())"/>
			<sch:let name="categorieName" value="name(ancestor::node()[$nbAncestor - 2])"/>
			
			<sch:assert test="text() = 'LOMFRv1.0'">Erreur catégorie "<sch:value-of
				select="$categorieName"/>", élément "<sch:value-of select="$eltName"/>" : Ce mot appartient à un vocabulaire issu du LOMFR, il doit avoir comme source
				"LOMFRv1.0"</sch:assert>
		</sch:rule>

		<!-- 
			elements dont le vocabulaire est issu du LOM
		-->

		<!--/lom:general/lom:structure-->
		<sch:rule context="/lom:lom/lom:general/lom:structure">
			<sch:extends rule="balisesLOMCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:general/lom:structure/lom:source">
			<sch:extends rule="sourceLOMCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:general/lom:structure/lom:value">
			<sch:assert
				test="text() = 'atomic' or  text() = 'collection' or  text() = 'networked' or  text() = 'hierarchical' or text() = 'linear'"
				> Erreur catégorie "general", élément "structure" : Ce mot n'appartient pas au vocabulaire attaché à l'élément lom:structure. Les
				valeurs de ce vocabulaire sont : 'atomic', 'collection', 'networked', 'hierarchical'
				ou 'linear''</sch:assert>
		</sch:rule>

		<!--/lom:general/lom:aggregationLevel-->
		<sch:rule context="/lom:lom/lom:general/lom:aggregationLevel">
			<sch:extends rule="balisesLOMCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:general/lom:aggregationLevel/lom:source">
			<sch:extends rule="sourceLOMCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:general/lom:aggregationLevel/lom:value">
			<sch:assert test="text() = '1' or  text() = '2' or  text() = '3' or  text() = '4'">Erreur catégorie "general", élément "aggregationLevel" : Ce
				mot n'appartient pas au vocabulaire attaché à l'élément lom:aggregationLevel. Les
				valeurs de ce vocabulaire sont : '1', '2', '3' ou '4'</sch:assert>
		</sch:rule>

		<!--/lom:lifeCycle/lom:status-->
		<sch:rule context="/lom:lom/lom:lifeCycle/lom:status">
			<sch:extends rule="balisesLOMCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:lifeCycle/lom:status/lom:source">
			<sch:extends rule="sourceLOMCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:lifeCycle/lom:status/lom:value">
			<sch:assert
				test="text() = 'draft' or  text() = 'final' or  text() = 'revised' or  text() = 'unavailable'"
				>Erreur catégorie "lifeCycle", élément "status" : Ce mot n'appartient pas au vocabulaire attaché à l'élément lom:status. Les valeurs
				de ce vocabulaire sont : 'draft', 'final', 'revised' ou 'unavailable'</sch:assert>
		</sch:rule>

		<!--/lom:metaMetadata/lom:contribute/lom:role-->
		<sch:rule context="/lom:lom/lom:metaMetadata/lom:contribute/lom:role">
			<sch:extends rule="balisesLOMCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:metaMetadata/lom:contribute/lom:role/lom:source">
			<sch:extends rule="sourceLOMCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:metaMetadata/lom:contribute/lom:role/lom:value">
			<sch:assert test="text() = 'creator' or  text() = 'validator'">Erreur catégorie "metaMetadata", élément "role" : Ce mot n'appartient pas
				au vocabulaire attaché à l'élément lom:role. Les valeurs de ce vocabulaire sont :
				'creator' ou 'validator'</sch:assert>
		</sch:rule>

		<!--/lom:technical/lom:requirement/lom:orComposite/lom:type-->
		<sch:rule context="/lom:lom/lom:technical/lom:requirement/lom:orComposite/lom:type">
			<sch:extends rule="balisesLOMCheck"/>
		</sch:rule>
		<sch:rule
			context="/lom:lom/lom:technical/lom:requirement/lom:orComposite/lom:type/lom:source">
			<sch:extends rule="sourceLOMCheck"/>
		</sch:rule>
		<sch:rule
			context="/lom:lom/lom:technical/lom:requirement/lom:orComposite/lom:type/lom:value">
			<sch:assert test="text() = 'operating system' or  text() = 'browser'">Erreur catégorie "technical", élément "type" : Ce mot
				n'appartient pas au vocabulaire attaché à l'élément lom:type. Les valeurs de ce
				vocabulaire sont : 'operating system' ou 'browser'</sch:assert>
		</sch:rule>

		<!--/lom:educational/lom:intendedEndUserRole-->
		<sch:rule context="/lom:lom/lom:educational/lom:intendedEndUserRole">
			<sch:extends rule="balisesLOMCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:educational/lom:intendedEndUserRole/lom:source">
			<sch:extends rule="sourceLOMCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:educational/lom:intendedEndUserRole/lom:value">
			<sch:assert
				test="text() = 'teacher' or  text() = 'author' or  text() = 'learner' or  text() = 'manager'"
				>Erreur catégorie "educational", élément "intendedEndUserRole" : Ce mot n'appartient pas au vocabulaire attaché à l'élément lom:intendedEndUserRole.
				Les valeurs de ce vocabulaire sont : 'teacher', 'author', 'learner' ou
			'manager'</sch:assert>
		</sch:rule>

		<!--/lom:educational/lom:difficulty-->
		<sch:rule context="/lom:lom/lom:educational/lom:difficulty">
			<sch:extends rule="balisesLOMCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:educational/lom:difficulty/lom:source">
			<sch:extends rule="sourceLOMCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:educational/lom:difficulty/lom:value">
			<sch:assert
				test="text() = 'very easy' or  text() = 'easy' or  text() = 'medium' or  text() = 'difficult' or  text() = 'very difficult'"
				>Erreur catégorie "educational", élément "difficulty" : Ce mot n'appartient pas au vocabulaire attaché à l'élément lom:difficulty. Les
				valeurs de ce vocabulaire sont : 'very easy', 'easy', 'medium', 'difficult' ou 'very
				difficult'</sch:assert>
		</sch:rule>

		<!--/lom:rights/lom:cost-->
		<sch:rule context="/lom:lom/lom:rights/lom:cost">
			<sch:extends rule="balisesLOMCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:rights/lom:cost/lom:source">
			<sch:extends rule="sourceLOMCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:rights/lom:cost/lom:value">
			<sch:assert test="text() = 'yes' or  text() = 'no'">Erreur catégorie "rights", élément "cost" : Ce mot n'appartient pas au
				vocabulaire attaché à l'élément lom:cost. Les valeurs de ce vocabulaire sont : 'yes'
				ou 'no'</sch:assert>
		</sch:rule>

		<!--/lom:rights/lom:copyrightAndOtherRestrictions-->
		<sch:rule context="/lom:lom/lom:rights/lom:copyrightAndOtherRestrictions">
			<sch:extends rule="balisesLOMCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:rights/lom:copyrightAndOtherRestrictions/lom:source">
			<sch:extends rule="sourceLOMCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:rights/lom:copyrightAndOtherRestrictions/lom:value">
			<sch:assert test="text() = 'yes' or  text() = 'no'">Erreur catégorie "rights", élément "copyrightAndOtherRestrictions" : Ce mot n'appartient pas au
				vocabulaire attaché à l'élément lom:copyrightAndOtherRestrictions. Les valeurs de ce
				vocabulaire sont : 'yes' ou 'no'</sch:assert>
		</sch:rule>

		<!--/lom:classification/lom:purpose-->
		<sch:rule context="/lom:lom/lom:classification/lom:purpose">
			<sch:extends rule="balisesLOMCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:classification/lom:purpose/lom:source">
			<sch:extends rule="sourceLOMCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:classification/lom:purpose/lom:value">
			<sch:assert
				test="text() = 'discipline' or  text() = 'prerequisite' or  text() = 'educational objective' or  text() = 'accessibility restrictions' or  text() = 'educational level' or  text() = 'skill level' or  text() = 'security level' or  text() = 'competency'"
				>Erreur catégorie "classification", élément "purpose" : Ce mot n'appartient pas au vocabulaire attaché à l'élément lom:purpose. Les valeurs
				de ce vocabulaire sont : 'discipline', 'prerequisite', 'educational objective',
				'accessibility restrictions', 'educational level', 'skill level', 'security level'
				ou 'competency'</sch:assert>
		</sch:rule>

		<!-- 
			elements dont le vocabulaire est issu du LOMFR
		-->

		<!-- /lom:lom/lom:general/lomfr:documentType -->
		<sch:rule context="/lom:lom/lom:general/lomfr:documentType">
			<sch:extends rule="balisesLOMFRCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:general/lomfr:documentType/lomfr:source">
			<sch:extends rule="sourceLOMFRCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:general/lomfr:documentType/lomfr:value">
			<sch:assert
				test="text() = 'collection' or  text() = 'ensemble de données' or  text() = 'évènement' or  text() = 'image' or  text() = 'image en mouvement' or  text() = 'image fixe' or  text() = 'logiciel'  or  text() = 'objet physique' or  text() = 'ressource interactive' or  text() = 'service' or  text() = 'son' or  text() = 'texte'"
				>Erreur catégorie "general", élément "documentType" : Ce mot n'appartient pas au vocabulaire attaché à l'élément lomfr:documentType. Les
				valeurs de ce vocabulaire sont : 'collection', 'ensemble de données', 'évènement',
				'image', 'image en mouvement', 'image fixe', 'logiciel', 'objet physique',
				'ressource interactive', 'service', 'son' et 'texte'.</sch:assert>
		</sch:rule>

		<!-- /lom:lom/lom:educational/lomfr:activity -->
		<sch:rule context="/lom:lom/lom:educational/lomfr:activity">
			<sch:extends rule="balisesLOMFRCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:educational/lomfr:activity/lomfr:source">
			<sch:extends rule="sourceLOMFRCheck"/>
		</sch:rule>
		<sch:rule context="/lom:lom/lom:educational/lomfr:activity/lomfr:value">
			<sch:assert
				test="text() = &quot;animer&quot; or  text() = &quot;apprendre&quot; or  text() = &quot;collaborer&quot; or  text() = &quot;communiquer&quot; or  text() = &quot;coopérer&quot; or  text() = &quot;créer&quot; or  text() = &quot;échanger&quot; or  text() = &quot;lire&quot; or  text() = &quot;observer&quot; or  text() = &quot;organiser&quot; or  text() = &quot;produire&quot; or  text() = &quot;publier&quot; or  text() = &quot;rechercher&quot; or  text() = &quot;s&apos;auto-former&quot; or  text() = &quot;s&apos;exercer&quot; or  text() = &quot;se former&quot; or  text() = &quot;simuler&quot; or  text() = &quot;s&apos;évaluer&quot;"
				>Erreur catégorie "educational", élément "activity" : Ce mot n'appartient pas au vocabulaire attaché à l'élément lomfr:activity. Les
				valeurs de ce vocabulaire sont : 'animer', 'apprendre', 'collaborer', 'communiquer',
				'coopérer', 'créer', 'échanger', 'lire', 'observer', 'organiser', 'produire',
				'publier', 'rechercher', 's'auto-former', 's'exercer', 'se former', 'simuler' ou
				's'évaluer'.</sch:assert>
		</sch:rule>

		<!-- 
			elements dont le vocabulaire est mixte : issu du LOMFR et du LOM 
		-->

		<!-- /lom:lom/lom:lifeCycle/lomfr:contribute/lom:role -->
		<sch:rule context="/lom:lom/lom:lifeCycle/lom:contribute/lom:role">
			<sch:extends rule="balisesLOMCheck"/>
		</sch:rule>
		<sch:rule
			context="/lom:lom/lom:lifeCycle/lom:contribute/lom:role[lom:value/text() = 'author' or  lom:value/text() = 'publisher' or  lom:value/text() = 'graphical designer' or  lom:value/text() = 'instructional designer' or  lom:value/text() = 'subject matter expert' or  lom:value/text() = 'content provider' or  lom:value/text() = 'technical implementer' or  lom:value/text() = 'unknown' or  lom:value/text() = 'initiator' or  lom:value/text() = 'editor' or  lom:value/text() = 'script writer' or  lom:value/text() = 'terminator' or  lom:value/text() = 'validator' or  lom:value/text() = 'educational validator' or  lom:value/text() = 'technical validator']/lom:source">
			<sch:extends rule="sourceMixteLOMCheck"/>
		</sch:rule>
		<sch:rule
			context="/lom:lom/lom:lifeCycle/lom:contribute/lom:role[lom:value/text() = 'contributeur']/lom:source">
			<sch:extends rule="sourceMixteLOMFRCheck"/>
		</sch:rule>

		<!-- /lom:lom/lom:technical/lom:requirement/lom:orComposite/lom:name -->
		<sch:rule context="/lom:lom/lom:technical/lom:requirement/lom:orComposite/lom:name">
			<sch:extends rule="balisesLOMCheck"/>
		</sch:rule>
		<sch:rule
			context="/lom:lom/lom:technical/lom:requirement/lom:orComposite/lom:name[lom:value/text() = 'pc-dos' or  lom:value/text() = 'ms-windows' or  lom:value/text() = 'macos' or  lom:value/text() = 'unix' or  lom:value/text() = 'multi-os' or  lom:value/text() = 'none' or lom:value/text() = 'any' or  lom:value/text() = 'opera' or  lom:value/text() = 'ms-internet explorer' or  lom:value/text() = 'amaya' or  lom:value/text() = 'netscape communicator']/lom:source">
			<sch:extends rule="sourceMixteLOMCheck"/>
		</sch:rule>
		<sch:rule
			context="/lom:lom/lom:technical/lom:requirement/lom:orComposite/lom:name[lom:value/text() = 'linux' or lom:value/text() = 'firefox' or lom:value/text() = 'safari']/lom:source">
			<sch:extends rule="sourceMixteLOMFRCheck"/>
		</sch:rule>
		<sch:rule
			context="/lom:lom/lom:technical/lom:requirement/lom:orComposite[lom:type/lom:value = 'operating system']/lom:name/lom:value">
			<sch:assert
				test="text() = 'pc-dos' or  text() = 'ms-windows' or  text() = 'macos' or  text() = 'unix' or  text() = 'multi-os' or  text() = 'none' or text() = 'linux'"
				>Erreur catégorie "technical", élément "name" : Ce vocabulaire est lié au système d'exploitation (type = 'operating system') et non
				au navigateur (type = 'browser').</sch:assert>
		</sch:rule>
		<sch:rule
			context="/lom:lom/lom:technical/lom:requirement/lom:orComposite[lom:type/lom:value = 'browser']/lom:name/lom:value">
			<sch:assert
				test="text() = 'any' or  text() = 'opera' or  text() = 'ms-internet explorer' or  text() = 'amaya' or  text() = 'netscape communicator' or text() = 'firefox' or text() = 'safari'"
				>Erreur catégorie "technical", élément "name" : Ce vocabulaire est lié au navigateur (type = 'browser') et non au système
				d'exploitation (type = 'operating system').</sch:assert>
		</sch:rule>

		<!-- /lom:lom/lom:educational/lom:learningResourceType -->
		<sch:rule context="/lom:lom/lom:educational/lom:learningResourceType">
			<sch:extends rule="balisesLOMCheck"/>
		</sch:rule>
		<sch:rule
			context="/lom:lom/lom:educational/lom:learningResourceType[lom:value/text() = 'exercise' or lom:value/text() = 'simulation' or lom:value/text() = 'questionnaire' or lom:value/text() = 'exam' or lom:value/text() = 'experiment' or lom:value/text() = 'lecture']/lom:source">
			<sch:extends rule="sourceMixteLOMCheck"/>
		</sch:rule>
		<sch:rule
			context="/lom:lom/lom:educational/lom:learningResourceType[lom:value/text() = 'démonstration' or lom:value/text() = 'évaluation' or lom:value/text() = 'animation' or lom:value/text() = 'tutoriel' or lom:value/text() = 'glossaire' or lom:value/text() = 'guide' or lom:value/text() = 'matériel de référence' or lom:value/text() = 'méthodologie' or lom:value/text() = 'outil' or lom:value/text() = 'scénario pédagogique']/lom:source">
			<sch:extends rule="sourceMixteLOMFRCheck"/>
		</sch:rule>
		<!-- nécessaire (?) car on a enlevé des valeurs du vocabulaire LOM -->
		<sch:rule context="/lom:lom/lom:educational/lom:learningResourceType/lom:value">
			<sch:assert
				test="text() = 'exercise' or text() = 'simulation' or text() = 'questionnaire' or text() = 'exam' or text() = 'experiment' or text() = 'lecture' or text() = 'démonstration' or text() = 'évaluation' or text() = 'animation' or text() = 'tutoriel' or text() = 'glossaire' or text() = 'guide' or text() = 'matériel de référence' or text() = 'méthodologie' or text() = 'outil' or text() = 'scénario pédagogique'"
				> Erreur catégorie "educational", élément "learningResourceType" : Ce mot n'appartient pas au vocabulaire attaché à l'élément
				lom:learningResourceType. Les valeurs de ce vocabulaire sont : 'exercise',
				'simulation', 'questionnaire', 'exam', 'experiment', 'lecture', 'démonstration',
				'évaluation', 'animation', 'tutoriel', 'glossaire', 'guide', 'matériel de
				référence', 'méthodologie', 'outil', 'scénario pédagogique' .</sch:assert>
		</sch:rule>

		<!-- /lom:lom/lom:educational/lom:context -->
		<sch:rule context="/lom:lom/lom:educational/lom:context">
			<sch:extends rule="balisesLOMCheck"/>
		</sch:rule>
		<sch:rule
			context="/lom:lom/lom:educational/lom:context[lom:value/text() = 'school' or  lom:value/text() = 'higher education' or  lom:value/text() = 'training' or  lom:value/text() = 'other']/lom:source">
			<sch:extends rule="sourceMixteLOMCheck"/>
		</sch:rule>
		<sch:rule
			context="/lom:lom/lom:educational/lom:context[lom:value/text() = 'enseignement primaire' or lom:value/text() = 'enseignement secondaire' or lom:value/text() = 'licence' or lom:value/text() = 'mastère' or lom:value/text() = 'doctorat' or lom:value/text() = 'formation continue' or lom:value/text() = 'formation en entreprise']/lom:source">
			<sch:extends rule="sourceMixteLOMFRCheck"/>
		</sch:rule>

		<!-- /lom:lom/lom:relation/lom:kind -->
		<sch:rule context="/lom:lom/lom:relation/lom:kind">
			<sch:extends rule="balisesLOMCheck"/>
		</sch:rule>
		<sch:rule
			context="/lom:lom/lom:relation/lom:kind[lom:value/text() = 'ispartof' or  lom:value/text() = 'haspart' or  lom:value/text() = 'isversionof' or  lom:value/text() = 'hasversion' or  lom:value/text() = 'isformatof' or  lom:value/text() = 'hasformat' or  lom:value/text() = 'references' or  lom:value/text() = 'isreferencedby' or  lom:value/text() = 'isbasedon' or  lom:value/text() = 'isbasisfor' or  lom:value/text() = 'requires' or  lom:value/text() = 'isrequiredby']/lom:source">
			<sch:extends rule="sourceMixteLOMCheck"/>
		</sch:rule>
		<sch:rule
			context="/lom:lom/lom:relation/lom:kind[lom:value/text() = &quot;est associée à&quot; or lom:value/text() = &quot;est la traduction de&quot; or lom:value/text() = &quot;fait l&apos;objet d’une traduction&quot; or lom:value/text() = &quot;est la localisation de&quot; or lom:value/text() = &quot;fait l&apos;objet d’une localisation&quot; or lom:value/text() = &quot;est pré-requis de&quot; or lom:value/text() = &quot;a pour pré-requis&quot;]/lom:source">
			<sch:extends rule="sourceMixteLOMFRCheck"/>
		</sch:rule>
	</sch:pattern>
</sch:schema>