<axsl:stylesheet xmlns:xx="http://xml.sandre.eaufrance.fr/scenario/referentiel/2" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sch="http://www.ascc.net/xml/schematron" xmlns:axsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><axsl:output method="text" omit-xml-declaration="no" standalone="yes" indent="yes"/>
    <!--<axsl:variable name="chemin">http://195.220.97.105:8080/exist/xmldb/db/sandre/Referentiels/old_referentiel.xml</axsl:variable>
    <axsl:variable name="cheminPAR">http://192.168.1.105:8080/exist/xmldb/db/sandre/Referentiels/PAR.xml</axsl:variable>
    <axsl:variable name="cheminMET">http://192.168.1.105:8080/exist/xmldb/db/sandre/Referentiels/MET.xml</axsl:variable>
    <axsl:variable name="cheminSUP">http://192.168.1.105:8080/exist/xmldb/db/sandre/Referentiels/SUP.xml</axsl:variable>
    <axsl:variable name="cheminFAN">http://192.168.1.105:8080/exist/xmldb/db/sandre/Referentiels/FAN.xml</axsl:variable>
    <axsl:variable name="cheminURF">http://192.168.1.105:8080/exist/xmldb/db/sandre/Referentiels/URF.xml</axsl:variable>--><axsl:template match="*|@*" mode="schematron-get-full-path"><axsl:apply-templates select="parent::*" mode="schematron-get-full-path"/><axsl:text>/</axsl:text><axsl:if test="count(. | ../@*) = count(../@*)">@</axsl:if><axsl:value-of select="name()"/><axsl:text>[</axsl:text><axsl:value-of select="1+count(preceding-sibling::*[name()=name(current())])"/><axsl:text>]</axsl:text></axsl:template><axsl:template match="/"><axsl:apply-templates select="/" mode="M1"/></axsl:template>
    
    <!--VERIFICATION DU SIRET DE RATTACHEMENT D'UN INTERVENANT--><axsl:template match="//xx:Intervenant[(./xx:CdIntervenant/@schemeAgencyID='SANDRE') and (./xx:StIntervenant='Validé') and (./xx:CdSIRETRattacheIntervenant/text()!='')]" priority="3996" mode="M1"><axsl:choose><axsl:when test="./xx:CdSIRETRattacheIntervenant/text()=../xx:Intervenant/xx:CdIntervenant/text()"/><axsl:otherwise>E4.2/Le code SIRET '<axsl:value-of select="./xx:CdSIRETRattacheIntervenant/text()"/>' rattaché au code Sandre d'intervenant '<axsl:value-of select="./xx:CdIntervenant/text()"/>' est inconnu au regard de la liste de référence des intervenants.#
            </axsl:otherwise></axsl:choose><axsl:apply-templates mode="M1"/></axsl:template><axsl:template match="//xx:Intervenant[(./xx:CdIntervenant/@schemeAgencyID='SIRET') and (./xx:StIntervenant='Validé')]" priority="4000" mode="M1">
        <!--Vérifier que tout intervenant SIRETE n’a pas en plus un code SIRET de rattachement--><axsl:choose><axsl:when test="./xx:CdSIRETRattacheIntervenant/text()!=''">
                E4.3/Le code SIRET '<axsl:value-of select="./xx:CdIntervenant/text()"/>'  est rattaché à un autre code SIRET '<axsl:value-of select="./xx:CdSIRETRattacheIntervenant/text()"/>'#</axsl:when></axsl:choose><axsl:choose><axsl:when test="string-length(./xx:CdIntervenant)=14"/><axsl:otherwise>E4.XXX/Le code SIRET '<axsl:value-of select="text()"/>' n'est pas composé de 14 chiffres.#
</axsl:otherwise></axsl:choose>
        <!--VERIFICATION DE LA VALIDITE DES CODES SIRET--><axsl:call-template name="controle-luhn"><axsl:with-param name="numero" select="./xx:CdIntervenant/text()"/><axsl:with-param name="somme" select="0"/><axsl:with-param name="indice" select="1"/></axsl:call-template><axsl:apply-templates mode="M1"/></axsl:template><axsl:template name="controle-luhn"><axsl:param name="numero" select="normalize-space(.)"/><axsl:param name="somme" select="0"/><axsl:param name="indice" select="1"/><axsl:choose><axsl:when test="string-length($numero)=0">
                <!-- Nous arrivons ici après le dernier chiffre --><axsl:choose><axsl:when test="$somme mod 10 = 0"/><axsl:otherwise>
                        E4.XX/Le code SIRET '<axsl:value-of select="./xx:CdIntervenant/text()"/>' est erroné au regard du contrôle de la formule de Luhn, la somme <axsl:value-of select="$somme"/> n'est pas un multiple de 10.#</axsl:otherwise></axsl:choose></axsl:when><axsl:when test="$indice mod 2 = 0">
                <!-- Cas des chiffres d'indice pair --><axsl:call-template name="controle-luhn"><axsl:with-param name="numero" select="substring($numero, 2)"/><axsl:with-param name="somme" select="$somme + substring($numero, 1, 1)"/><axsl:with-param name="indice" select="$indice + 1"/></axsl:call-template></axsl:when><axsl:otherwise>
                <!-- Cas des chiffres d'indice impair --><axsl:variable name="double" select="concat(substring($numero, 1, 1) * 2, '0') "/><axsl:call-template name="controle-luhn"><axsl:with-param name="numero" select="substring($numero, 2)"/><axsl:with-param name="somme" select="$somme + substring($double, 1, 1) + substring($double, 2, 1)"/><axsl:with-param name="indice" select="$indice + 1"/></axsl:call-template></axsl:otherwise></axsl:choose><axsl:apply-templates mode="M1"/></axsl:template><axsl:template match="text()" priority="-1" mode="M1"/><axsl:template match="text()" priority="-1"/></axsl:stylesheet>