@darkmayers

Как обновить данные в файле xml на основе другого xml?

Добрый день!
Мне необходимо разработать 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>
  • Вопрос задан
  • 481 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы