<!--DATE MISE A JOUR 2025-12-16--><!--AJOUT DU POINT A8 DANS LA REGLE E4.31--><axsl:stylesheet xmlns:xx="http://xml.sandre.eaufrance.fr/scenario/desc_assain/1" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sch="http://www.ascc.net/xml/schematron" xmlns:sa_ref="http://xml.sandre.eaufrance.fr/scenario/referentiel/2" 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="cheminPAR">http://xml.sandre.eaufrance.fr/exist/sandre/Referentiels/PAR.xml</axsl:variable>
    <axsl:variable name="DateDebut" select="number(translate(/xx:DescAssain/xx:Scenario/xx:DateDebutReference/text(),'-',''))"/>
    <axsl:variable name="DateFin" select="number(translate(/xx:DescAssain/xx:Scenario/xx:DateFinReference/text(),'-',''))"/>
    <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>
    <axsl:template match="/xx:DescAssain" priority="4000" mode="M1">
        <axsl:choose>
            <axsl:when test="count(./xx:OuvrageDepollution[./xx:CdOuvrageDepollution/text()=preceding-sibling::xx:OuvrageDepollution/xx:CdOuvrageDepollution/text()])=0"/>
            <axsl:otherwise>E4.32/ Plusieurs stations d'épuration ont le même code '<axsl:value-of select="./xx:OuvrageDepollution[./xx:CdOuvrageDepollution/text()=preceding-sibling::xx:OuvrageDepollution/xx:CdOuvrageDepollution/text()]/xx:CdOuvrageDepollution"/>'.#</axsl:otherwise>
        </axsl:choose>
        <axsl:choose>
            <axsl:when test="count(./xx:SystemeCollecte[./xx:CdSystemeCollecte/text()=preceding-sibling::xx:SystemeCollecte/xx:CdSystemeCollecte/text()])=0"/>
            <axsl:otherwise>E4.32/ Plusieurs systèmes de collecte ont le même code <axsl:value-of select="./xx:SystemeCollecte[./xx:CdSystemeCollecte/text()=preceding-sibling::xx:SystemeCollecte/xx:CdSystemeCollecte/text()]/xx:CdSystemeCollecte"/>.#</axsl:otherwise>
        </axsl:choose>
        <axsl:apply-templates mode="M1"/>
    </axsl:template>
    <axsl:template match="/xx:DescAssain/xx:Scenario" priority="4000" mode="M1">
        <axsl:choose>
            <axsl:when test="($DateFin) &gt;= ($DateDebut)"/>
            <axsl:otherwise>E4.1/La date de début de début de référence du fichier DOIT être
                inferieure ou égale à la demande de fin de référence. Date de début de référence: <axsl:value-of select="./DateDebutReference"/>; Date de fin de référence: <axsl:value-of select="./DateFinReference"/>.#</axsl:otherwise>
        </axsl:choose>
        <axsl:apply-templates mode="M1"/>
    </axsl:template>
    <axsl:template match="/xx:DescAssain/xx:OuvrageDepollution" priority="4000" mode="M1">
        <axsl:choose>
            <axsl:when test="count(./xx:PointMesure[./xx:LocGlobalePointMesure/text()='A3'])&lt;='1'"/>
            <axsl:otherwise>E4.4/Plusieurs points réglementaires ont la même localisation 'A3' au
                sein du même ouvrage.#</axsl:otherwise>
        </axsl:choose>
        <axsl:choose>
            <axsl:when test="count(./xx:PointMesure[./xx:LocGlobalePointMesure/text()='A4'])&lt;='1'"/>
            <axsl:otherwise>E4.4/Plusieurs points réglementaires ont la même localisation 'A4' au
                sein du même ouvrage.#</axsl:otherwise>
        </axsl:choose>
        <axsl:choose>
            <axsl:when test="count(./xx:PointMesure[./xx:LocGlobalePointMesure/text()='A2'])&lt;='1'"/>
            <axsl:otherwise>E4.4/Plusieurs points réglementaires ont la même localisation 'A2' au
                sein du même ouvrage.#</axsl:otherwise>
        </axsl:choose>
        <axsl:choose>
            <axsl:when test="count(./xx:PointMesure[./xx:LocGlobalePointMesure/text()='A5'])&lt;='1'"/>
            <axsl:otherwise>E4.4/Plusieurs points réglementaires ont la même localisation 'A5' au
                sein du même ouvrage.#</axsl:otherwise>
        </axsl:choose>
        <axsl:choose>
            <axsl:when test="count(./xx:PointMesure[./xx:LocGlobalePointMesure/text()='A6'])&lt;='1'"/>
            <axsl:otherwise>E4.4/Plusieurs points réglementaires ont la même localisation 'A6' au
                sein du même ouvrage.#</axsl:otherwise>
        </axsl:choose>
        <axsl:choose>
            <axsl:when test="count(./xx:PointMesure[./xx:LocGlobalePointMesure/text()='A7'])&lt;='1'"/>
            <axsl:otherwise>E4.4/Plusieurs points réglementaires ont la même localisation 'A7' au
                sein du même ouvrage.#</axsl:otherwise>
        </axsl:choose>
        <axsl:choose>
            <axsl:when test="count(./xx:PointMesure[./xx:LocGlobalePointMesure/text()='A8'])&lt;='1'"/>
            <axsl:otherwise>E4.4/Plusieurs points réglementaires ont la même localisation 'A8' au
                sein du même ouvrage.#</axsl:otherwise>
        </axsl:choose>
        <axsl:choose>
            <axsl:when test="(count(./xx:PointMesure/xx:LocGlobalePointMesure[./text()='M1'])&lt;='1')"/>
            <axsl:otherwise>E4.46/Plusieurs points 'M1' ont été définis au
                sein du même ouvrage.#</axsl:otherwise>
        </axsl:choose>
        <axsl:choose>
            <axsl:when test="(count(./xx:PointMesure/xx:LocGlobalePointMesure[./text()='M2'])&lt;='1')"/>
            <axsl:otherwise>E4.46/Plusieurs points 'M2' ont été définis au
                sein du même ouvrage.#</axsl:otherwise>
        </axsl:choose>
        <axsl:choose>
            <axsl:when test="count(./xx:PointMesure[./xx:NumeroPointMesure/text()=preceding-sibling::xx:PointMesure/xx:NumeroPointMesure/text()])=0"/>
            <axsl:otherwise>E4.5/Plusieurs points ont le même code au sein de l'ouvrage
                    '<axsl:value-of select="./xx:CdOuvrageDepollution/text()"/>'.#</axsl:otherwise>
        </axsl:choose>
        <axsl:choose>
            <axsl:when test="./xx:TypeOuvrageDepollution='4'"/>
            <axsl:otherwise>E4.33/Seul le type d'ouvrage de dépollution '4' (STEP) est
                toléré.#</axsl:otherwise>
        </axsl:choose>
        <axsl:apply-templates mode="M1"/>
    </axsl:template>
    <axsl:template match="/xx:DescAssain/xx:OuvrageDepollution/xx:PointMesure" priority="4000" mode="M1">
        <axsl:variable name="Localisation" select="./xx:LocGlobalePointMesure/text()"/>
        <axsl:choose>
            <axsl:when test="($Localisation='A2') or ($Localisation='A3')  or ($Localisation='A4') or ($Localisation='A5') or ($Localisation='A6') or ($Localisation='A7') or ($Localisation='A8')or (substring($Localisation,1,1)='S') or (substring($Localisation,1,1)='M')"/>
            <axsl:otherwise>E4.31/La localisation globale de point de mesure <axsl:value-of select="./xx:LocGlobalePointMesure/text()"/> n'est pas tolérée pour un système
                de traitement d'eaux usées.#</axsl:otherwise>
        </axsl:choose>
        <axsl:apply-templates mode="M1"/>
    </axsl:template>
    <axsl:template match="/xx:DescAssain/xx:SystemeCollecte" priority="4000" mode="M1">
        <axsl:choose>
            <axsl:when test="(count(./xx:PointMesure/xx:LocGlobalePointMesure[./text()='M1'])&lt;='1')"/>
            <axsl:otherwise>E4.46/Plusieurs points 'M1' ont été définis au
                sein du même ouvrage.#</axsl:otherwise>
        </axsl:choose>
        <axsl:choose>
            <axsl:when test="(count(./xx:PointMesure/xx:LocGlobalePointMesure[./text()='M2'])&lt;='1')"/>
            <axsl:otherwise>E4.46/Plusieurs points 'M2' ont été définis au
                sein du même ouvrage.#</axsl:otherwise>
        </axsl:choose>
        <axsl:choose>
            <axsl:when test="count(./xx:PointMesure[./xx:NumeroPointMesure/text()=preceding-sibling::xx:PointMesure/xx:NumeroPointMesure/text()])=0"/>
            <axsl:otherwise>E4.5/Plusieurs points ont le même code au sein du système de collecte
                    '<axsl:value-of select="./xx:CdSystemeCollecte/text()"/>'.#</axsl:otherwise>
        </axsl:choose>
        <axsl:apply-templates mode="M1"/>
    </axsl:template>
    <axsl:template match="/xx:DescAssain/xx:SystemeCollecte/xx:PointMesure" priority="4000" mode="M1">
        <axsl:variable name="Localisation" select="./xx:LocGlobalePointMesure/text()"/>
        <axsl:choose>
            <axsl:when test="($Localisation='A1') or (substring($Localisation,1,1)='R') or (substring($Localisation,1,1)='M')"/>
            <axsl:otherwise>E4.31/La localisation globale de point de mesure <axsl:value-of select="./xx:LocGlobalePointMesure/text()"/> n'est pas tolérée pour un système
                de collecte.#</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>