regles test lomfr.sch
Cliquez ici pour obtenir le fichier
Taille 22.9 kB - Type du fichier text/xmlContenu du fichier
<?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() = "animer" or text() = "apprendre" or text() = "collaborer" or text() = "communiquer" or text() = "coopérer" or text() = "créer" or text() = "échanger" or text() = "lire" or text() = "observer" or text() = "organiser" or text() = "produire" or text() = "publier" or text() = "rechercher" or text() = "s'auto-former" or text() = "s'exercer" or text() = "se former" or text() = "simuler" or text() = "s'évaluer"" >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() = "est associée à" or lom:value/text() = "est la traduction de" or lom:value/text() = "fait l'objet d’une traduction" or lom:value/text() = "est la localisation de" or lom:value/text() = "fait l'objet d’une localisation" or lom:value/text() = "est pré-requis de" or lom:value/text() = "a pour pré-requis"]/lom:source"> <sch:extends rule="sourceMixteLOMFRCheck"/> </sch:rule> </sch:pattern> </sch:schema>