<?xml version="1.0" encoding="windows-1251"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="xml" encoding="windows-1251" indent="yes"/>
        <xsl:strip-space elements="*"/>
        <xsl:variable name="accept"> !"#$%'()*+,-./0№123456789:;=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя</xsl:variable>
        <xsl:template name="CheckSym">
                <xsl:param name="sym"/>
                <xsl:param name="count"/>
                <xsl:param name="name"/>
                <xsl:if test="not(contains($accept,substring($sym,$count,1)))">
                        <xsl:element name="error">
                                <xsl:attribute name="must">1</xsl:attribute>
                                <xsl:text/>Поле "<xsl:value-of select="$name"/>" содержит недопустимый "<xsl:value-of select="substring($sym,$count,1)"/>"символ на позиции <xsl:value-of select="$count"/>
                        </xsl:element>
                </xsl:if>
                <xsl:if test="$count &lt; string-length($sym)">
                        <xsl:call-template name="CheckSym">
                                <xsl:with-param name="sym" select="$sym"/>
                                <xsl:with-param name="name" select="$name"/>
                                <xsl:with-param name="count" select="$count+1"/>
                        </xsl:call-template>
                </xsl:if>
        </xsl:template>
        <xsl:template name="CheckS">
                <xsl:param name="value"/>
                <xsl:param name="name"/>
                <xsl:param name="must"/>
                <xsl:param name="length"/>
                <xsl:variable name="labs">
                        <xsl:choose>
                                <xsl:when test="$length &gt; 0">
                                        <xsl:value-of select="$length"/>
                                </xsl:when>
                                <xsl:otherwise>
                                        <xsl:value-of select="-1*$length"/>
                                </xsl:otherwise>
                        </xsl:choose>
                </xsl:variable>
                <xsl:if test="string-length($value)=0 and not($must=-1) ">
                        <xsl:element name="error">
                                <xsl:attribute name="must">
                                        <xsl:value-of select="$must"/>
                                </xsl:attribute>
                                <xsl:choose>
                                        <xsl:when test="$must=1">Обязательное поле </xsl:when>
                                        <xsl:otherwise>Поле </xsl:otherwise>
                                </xsl:choose>
                                <xsl:text/>"<xsl:value-of select="$name"/>" не заполнено.</xsl:element>
                </xsl:if>
                <xsl:if test="string-length($value)&gt;0">
                        <xsl:call-template name="CheckSym">
                                <xsl:with-param name="sym" select="$value"/>
                                <xsl:with-param name="name" select="$name"/>
                                <xsl:with-param name="count" select="1"/>
                        </xsl:call-template>
                        <xsl:if test="string-length($value) &gt; $labs">
                                <xsl:element name="error">
                                        <xsl:attribute name="must">1</xsl:attribute>
                                        <xsl:text/>Поле "<xsl:value-of select="$name"/>" превышает максимальную длину (<xsl:value-of select="$labs"/>)</xsl:element>
                        </xsl:if>
                        <xsl:if test="(string-length($value) &lt; $length) and ($length &gt; 0)">
                                <xsl:element name="error">
                                        <xsl:attribute name="must">1</xsl:attribute>
                                        <xsl:text/>Поле "<xsl:value-of select="$name"/>" меньше обязательной длины (<xsl:value-of select="$length"/>)</xsl:element>
                        </xsl:if>
                </xsl:if>
        </xsl:template>
        <xsl:template name="validate" match="UF">
                <xsl:element name="errors">
                        <xsl:if test="UCH_TB=0">
                                <xsl:element name="error"><xsl:attribute name="must">1</xsl:attribute>Флаг 'Учитывать' в уведомлении не установлен</xsl:element>
                        </xsl:if>
                        <xsl:call-template name="CheckS"><xsl:with-param name="name">КБП клиента</xsl:with-param>
                                <xsl:with-param name="must">1</xsl:with-param>
                                <xsl:with-param name="length">5</xsl:with-param>
                                <xsl:with-param name="value" select="NUBP/KOD_UBP"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS"><xsl:with-param name="name">Уровень бюджета</xsl:with-param>
                                <xsl:with-param name="must">1</xsl:with-param>
                                <xsl:with-param name="length">1</xsl:with-param>
                                <xsl:with-param name="value" select="NUBP/BUDG_LEVEL"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS"><xsl:with-param name="name">Полное наименование клиента</xsl:with-param>
                                <xsl:with-param name="must">1</xsl:with-param>
                                <xsl:with-param name="length">-2000</xsl:with-param>
                                <xsl:with-param name="value" select="NUBP/NAME_UBP"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS"><xsl:with-param name="name">КОД ТОФК</xsl:with-param>
                                <xsl:with-param name="must">1</xsl:with-param>
                                <xsl:with-param name="length">4</xsl:with-param>
                                <xsl:with-param name="value" select="NUBP/KOD_TOFK"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS"><xsl:with-param name="name">Наименование органа ФК клиента</xsl:with-param>
                                <xsl:with-param name="must">1</xsl:with-param>
                                <xsl:with-param name="length">-2000</xsl:with-param>
                                <xsl:with-param name="value" select="NUBP/NAME_TOFK"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS"><xsl:with-param name="name">Номер Уведомления</xsl:with-param>
                                <xsl:with-param name="must">1</xsl:with-param>
                                <xsl:with-param name="length">-15</xsl:with-param>
                                <xsl:with-param name="value" select="NOM_UK"/>
                        </xsl:call-template>
                        <xsl:if test="DATE_UK=''">
                                <xsl:element name="error"><xsl:attribute name="must">1</xsl:attribute>Не указана дата Уведомления</xsl:element>
                        </xsl:if>
                        <xsl:call-template name="CheckS"><xsl:with-param name="name">Номер лицевого счета клиента</xsl:with-param>
                                <xsl:with-param name="must">1</xsl:with-param>
                                <xsl:with-param name="length">11</xsl:with-param>
                                <xsl:with-param name="value" select="NUBP/LS"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS"><xsl:with-param name="name">Наименование главного распорядителя</xsl:with-param>
                                <xsl:with-param name="must">0</xsl:with-param>
                                <xsl:with-param name="length">-2000</xsl:with-param>
                                <xsl:with-param name="value" select="NAME_GRS"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS"><xsl:with-param name="name">Глава по БК</xsl:with-param>
                                <xsl:with-param name="must">0</xsl:with-param>
                                <xsl:with-param name="length">3</xsl:with-param>
                                <xsl:with-param name="value" select="GLAVA_GRS"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS"><xsl:with-param name="name">Наименование бюджета</xsl:with-param>
                                <xsl:with-param name="must">1</xsl:with-param>
                                <xsl:with-param name="length">-512</xsl:with-param>
                                <xsl:with-param name="value" select="NUBP/NAME_BUDG"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS"><xsl:with-param name="name">Наименование финансового органа</xsl:with-param>
                                <xsl:with-param name="must">0</xsl:with-param>
                                <xsl:with-param name="length">-2000</xsl:with-param>
                                <xsl:with-param name="value" select="NUBP/NAME_UBP_FO"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS"><xsl:with-param name="name">Код по ОКПО финансового органа</xsl:with-param>
                                <xsl:with-param name="must">0</xsl:with-param>
                                <xsl:with-param name="length">8</xsl:with-param>
                                <xsl:with-param name="value" select="NUBP/OKPO_FO"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS"><xsl:with-param name="name">Лицевой счет финансового органа</xsl:with-param>
                                <xsl:with-param name="must">-1</xsl:with-param>
                                <xsl:with-param name="length">11</xsl:with-param>
                                <xsl:with-param name="value" select="NUBP/LS_FO"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS"><xsl:with-param name="name">Источник средств</xsl:with-param>
                                <xsl:with-param name="must">0</xsl:with-param>
                                <xsl:with-param name="length">1</xsl:with-param>
                                <xsl:with-param name="value" select="FUND_SOURCE"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS"><xsl:with-param name="name">Номер запроса ОрФК</xsl:with-param>
                                <xsl:with-param name="must">-1</xsl:with-param>
                                <xsl:with-param name="length">-15</xsl:with-param>
                                <xsl:with-param name="value" select="NOM_ZF"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS"><xsl:with-param name="name">Наименование плательщика</xsl:with-param>
                                <xsl:with-param name="must">0</xsl:with-param>
                                <xsl:with-param name="length">-160</xsl:with-param>
                                <xsl:with-param name="value" select="CNAME_PL"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS"><xsl:with-param name="name">ИНН плательщика</xsl:with-param>
                                <xsl:with-param name="must">0</xsl:with-param>
                                <xsl:with-param name="length">-12</xsl:with-param>
                                <xsl:with-param name="value" select="INN_PL"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS"><xsl:with-param name="name">КПП плательщика</xsl:with-param>
                                <xsl:with-param name="must">0</xsl:with-param>
                                <xsl:with-param name="length">-9</xsl:with-param>
                                <xsl:with-param name="value" select="KPP_PL"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS"><xsl:with-param name="name">Паспортные данные плательщика</xsl:with-param>
                                <xsl:with-param name="must">-1</xsl:with-param>
                                <xsl:with-param name="length">-1000</xsl:with-param>
                                <xsl:with-param name="value" select="PASP"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS"><xsl:with-param name="name">Номер банковского счета плательщика</xsl:with-param>
                                <xsl:with-param name="must">0</xsl:with-param>
                                <xsl:with-param name="length">20</xsl:with-param>
                                <xsl:with-param name="value" select="BS_PL"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS"><xsl:with-param name="name">Должность руководителя</xsl:with-param>
                                <xsl:with-param name="must">0</xsl:with-param>
                                <xsl:with-param name="length">-100</xsl:with-param>
                                <xsl:with-param name="value" select="DOL_RUK"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS">
                                <xsl:with-param name="name">ФИО руководителя</xsl:with-param>
                                <xsl:with-param name="must">0</xsl:with-param>
                                <xsl:with-param name="length">-50</xsl:with-param>
                                <xsl:with-param name="value" select="NAME_RUK"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS">
                                <xsl:with-param name="name">Должность исполнителя</xsl:with-param>
                                <xsl:with-param name="must">1</xsl:with-param>
                                <xsl:with-param name="length">-100</xsl:with-param>
                                <xsl:with-param name="value" select="DOL_ISP"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS">
                                <xsl:with-param name="name">ФИО исполнителя</xsl:with-param>
                                <xsl:with-param name="must">1</xsl:with-param>
                                <xsl:with-param name="length">-50</xsl:with-param>
                                <xsl:with-param name="value" select="NAME_ISP"/>
                        </xsl:call-template>
                        <xsl:call-template name="CheckS">
                                <xsl:with-param name="name">Телефон исполнителя</xsl:with-param>
                                <xsl:with-param name="must">-1</xsl:with-param>
                                <xsl:with-param name="length">-50</xsl:with-param>
                                <xsl:with-param name="value" select="TEL_ISP"/>
                        </xsl:call-template>
                        <!--<xsl:if test="DATE_POD=''">
                                <xsl:element name="error"><xsl:attribute name="must">1</xsl:attribute>Не указана дата подписи Уведомления</xsl:element>
                        </xsl:if>-->
                        <xsl:apply-templates select="UKPP"/>
                        <xsl:apply-templates select="UKPP_N"/>
                </xsl:element>
        </xsl:template>
        <xsl:template match="UKPP">
                <xsl:call-template name="CheckS">
                        <xsl:with-param name="name">Наименование уточняемого документа (строка <xsl:value-of select="position()"/>)</xsl:with-param>
                        <xsl:with-param name="must">-1</xsl:with-param>
                        <xsl:with-param name="length">-160</xsl:with-param>
                        <xsl:with-param name="value" select="NAME_PP"/>
                </xsl:call-template>
                <xsl:call-template name="CheckS">
                        <xsl:with-param name="name">Номер уточняемого документа (строка <xsl:value-of select="position()"/>)</xsl:with-param>
                        <xsl:with-param name="must">-1</xsl:with-param>
                        <xsl:with-param name="length">-15</xsl:with-param>
                        <xsl:with-param name="value" select="NOM_PP"/>
                </xsl:call-template>
                <xsl:call-template name="CheckS">
                        <xsl:with-param name="name">GUID уточняемого документа (строка <xsl:value-of select="position()"/>)</xsl:with-param>
                        <xsl:with-param name="must">-1</xsl:with-param>
                        <xsl:with-param name="length">36</xsl:with-param>
                        <xsl:with-param name="value" select="GUID"/>
                </xsl:call-template>
                <xsl:if test="DATE_PP=''">
                        <xsl:element name="error"><xsl:attribute name="must">-1</xsl:attribute>Не указана дата уточняемого документа (строка <xsl:value-of select="position()"/>)</xsl:element>
                </xsl:if>
                <xsl:call-template name="CheckS"><xsl:with-param name="name">Наименование получателя (строка <xsl:value-of select="position()"/>)</xsl:with-param>
                        <xsl:with-param name="must">-1</xsl:with-param>
                        <xsl:with-param name="length">-160</xsl:with-param>
                        <xsl:with-param name="value" select="CNAME_PP"/>
                </xsl:call-template>
                <xsl:call-template name="CheckS">
                        <xsl:with-param name="name">ИНН получателя (строка <xsl:value-of select="position()"/>)</xsl:with-param>
                        <xsl:with-param name="must">-1</xsl:with-param>
                        <xsl:with-param name="length">-12</xsl:with-param>
                        <xsl:with-param name="value" select="INN_PP"/>
                </xsl:call-template>
                <xsl:call-template name="CheckS">
                        <xsl:with-param name="name">КПП получателя (строка <xsl:value-of select="position()"/>)</xsl:with-param>
                        <xsl:with-param name="must">-1</xsl:with-param>
                        <xsl:with-param name="length">-9</xsl:with-param>
                        <xsl:with-param name="value" select="KPP_PP"/>
                </xsl:call-template>
                <xsl:call-template name="CheckS">
                        <xsl:with-param name="name">Код классификации операции (строка <xsl:value-of select="position()"/>)</xsl:with-param>
                        <xsl:with-param name="must">-1</xsl:with-param>
                        <xsl:with-param name="length">20</xsl:with-param>
                        <xsl:with-param name="value" select="KBK"/>
                </xsl:call-template>
                <xsl:call-template name="CheckS">
                        <xsl:with-param name="name">Код цели (строка <xsl:value-of select="position()"/>)</xsl:with-param>
                        <xsl:with-param name="must">-1</xsl:with-param>
                        <xsl:with-param name="length">-20</xsl:with-param>
                        <xsl:with-param name="value" select="ADD_KLASS"/>
                </xsl:call-template>
                <xsl:call-template name="CheckS">
                        <xsl:with-param name="name">Назначение платежа (строка <xsl:value-of select="position()"/>)</xsl:with-param>
                        <xsl:with-param name="must">-1</xsl:with-param>
                        <xsl:with-param name="length">-210</xsl:with-param>
                        <xsl:with-param name="value" select="PURPOSE"/>
                </xsl:call-template>
                <xsl:call-template name="CheckS">
                        <xsl:with-param name="name">Примечание (строка <xsl:value-of select="position()"/>)</xsl:with-param>
                        <xsl:with-param name="must">-1</xsl:with-param>
                        <xsl:with-param name="length">-254</xsl:with-param>
                        <xsl:with-param name="value" select="NOTE"/>
                </xsl:call-template>
                </xsl:template>
                <xsl:template match="UKPP_N">
                <xsl:call-template name="CheckS"><xsl:with-param name="name">Наименование получателя (строка уточненная <xsl:value-of select="position()"/>)</xsl:with-param>
                        <xsl:with-param name="must">-1</xsl:with-param>
                        <xsl:with-param name="length">-160</xsl:with-param>
                        <xsl:with-param name="value" select="CNAME_PP"/>
                </xsl:call-template>
                <xsl:call-template name="CheckS"><xsl:with-param name="name">ИНН получателя (строка уточненная <xsl:value-of select="position()"/>)</xsl:with-param>
                        <xsl:with-param name="must">-1</xsl:with-param>
                        <xsl:with-param name="length">-12</xsl:with-param>
                        <xsl:with-param name="value" select="INN_PP"/>
                </xsl:call-template>
                <xsl:call-template name="CheckS"><xsl:with-param name="name">КПП получателя (строка уточненная <xsl:value-of select="position()"/>)</xsl:with-param>
                        <xsl:with-param name="must">-1</xsl:with-param>
                        <xsl:with-param name="length">-9</xsl:with-param>
                        <xsl:with-param name="value" select="KPP_PP"/>
                </xsl:call-template>
                <xsl:call-template name="CheckS"><xsl:with-param name="name">Код классификации операции (строка уточненная <xsl:value-of select="position()"/>)</xsl:with-param>
                        <xsl:with-param name="must">-1</xsl:with-param>
                        <xsl:with-param name="length">20</xsl:with-param>
                        <xsl:with-param name="value" select="KBK"/>
                </xsl:call-template>
                <xsl:call-template name="CheckS">
                        <xsl:with-param name="name">Код цели (строка уточненная <xsl:value-of select="position()"/>)</xsl:with-param>
                        <xsl:with-param name="must">-1</xsl:with-param>
                        <xsl:with-param name="length">-20</xsl:with-param>
                        <xsl:with-param name="value" select="ADD_KLASS"/>
                </xsl:call-template>
                <xsl:call-template name="CheckS">
                        <xsl:with-param name="name">Назначение платежа (строка уточненная <xsl:value-of select="position()"/>)</xsl:with-param>
                        <xsl:with-param name="must">-1</xsl:with-param>
                        <xsl:with-param name="length">-210</xsl:with-param>
                        <xsl:with-param name="value" select="PURPOSE"/>
                </xsl:call-template>
                <xsl:call-template name="CheckS">
                        <xsl:with-param name="name">Примечание (строка уточненная <xsl:value-of select="position()"/>)</xsl:with-param>
                        <xsl:with-param name="must">-1</xsl:with-param>
                        <xsl:with-param name="length">-254</xsl:with-param>
                        <xsl:with-param name="value" select="NOTE"/>
                </xsl:call-template>
        </xsl:template>
</xsl:stylesheet>
