Добрый день!
Мне необходимо разработать XSLT преобразование, которое будет обновлять данные в файле formats.xml (узлы name, shortName, type, knd, version) в соответствии с данными в файле classification.xml. При этом в качестве входного файла для преобразования пусть выступает файл formats.xml, а файл classification.xml пусть подгружается с помощью функции document().
Пытался реализовать это через choose, но не получается - зацикливается и копирует все без остановки.
Делаю так:
<xsl:template name="format">
<xsl:for-each select="format">
<xsl:call-template name="replace" />
</xsl:for-each>
</xsl:template>
<xsl:template name="replace" match="/formats/format">
<xsl:param name="name" />
<xsl:choose>
<xsl:when test="name!=document('classification.xml')/classification/group/format/@name">
<xsl:copy-of select="../format" />
</xsl:when>
</xsl:choose>
</xsl:template>
Может быть я вообще не так делаю?
Подскажите, как лучше всего реализовать такую функцию?
Вот отрывки из файлов.
Файл formats:<formats>
<format gfv="105702" fileName="new_105702_4.00001">
<name>2-НДФЛ</name>
<shortName>2 НДФЛ</shortName>
<periodBegin>01.01.2006</periodBegin>
<periodEnd>31.12.2009</periodEnd>
<type>1</type>
<knd>1151078</knd>
<version>4.00001</version>
<isStoredInDataTree>true</isStoredInDataTree>
<isCheckedByDom>false</isCheckedByDom>
<orgTypes>1111</orgTypes>
</format>
<format gfv="101508" fileName="new_1151020_5.05">
<name>Налоговая декларация по налогу на доходы физических лиц (форма 3-НДФЛ)</name>
<shortName>3-НДФЛ</shortName>
<periodBegin>01.01.2009</periodBegin>
<periodEnd>31.12.2009</periodEnd>
<type>1</type>
<knd>1151020</knd>
<version>5.05</version>
<isStoredInDataTree>false</isStoredInDataTree>
<isCheckedByDom>false</isCheckedByDom>
<orgTypes>1111</orgTypes>
</format>
</formats>
И файл classification:<classification xmlns:fp="format-properties">
<group id="1" name="Налоговая отчетность">
<format id="1" fp:КНД="1110005" shortName="Сбор за пользование объектами водных биологических ресурсов" name="Сведения о полученной лицензии на пользование объектами водных биологических ресурсов, суммах сбора за пользование объектами водных биологических ресурсов, подлежащих уплате в виде разового и регулярных взносов" periods="1" form-modifiers="1">
<variant id="1" fp:ВерФОтч="3.00000" contentType="Plain866" fp:ТипИнф="ОТЧЕТНОСТЬНП" />
</format>
<format id="2" fp:КНД="1110006" shortName="Сбор за пользование объектами животного мира" name="Сведения о полученной лицензии (разрешении) на пользование объектами животного мира, суммах сбора за пользование объектами животного мира, подлежащих уплате, и суммах фактического сбора" periods="1" form-modifiers="1">
<variant id="1" fp:ВерФОтч="3.00000" contentType="Plain866" fp:ТипИнф="ОТЧЕТНОСТЬНП" />
</format>
<format id="3" fp:КНД="1110011" shortName="Сбор за пользование объектами водных биологических ресурсов" name="Сведения о полученных лицензиях (разрешениях) на пользование объектами водных биологических ресурсов, суммах сбора за пользование объектами водных биологических ресурсов, подлежащих уплате в виде разового и регулярных взносов" periods="1" form-modifiers="1">
<variant id="1" fp:ВерФОтч="3.00001" contentType="Plain866" fp:ТипИнф="ОТЧЕТНОСТЬНП" />
</format>
<format id="4" fp:КНД="1110012" shortName="Сбор за пользование объектами животного мира" name="Сведения о полученных лицензиях (разрешениях) на пользование объектами животного мира, суммах сбора за пользование объектами животного мира, подлежащих уплате, и суммах фактически уплаченного сбора" periods="1" form-modifiers="1">
<variant id="1" fp:ВерФОтч="3.00001" contentType="Plain866" fp:ТипИнф="ОТЧЕТНОСТЬНП" />
</format>