D
D
Denis2015-06-21 20:33:52
XSL & XSLT
Denis, 2015-06-21 20:33:52

How to update data in xml file based on another xml?

Good afternoon!
I need to develop an XSLT transformation that will update the data in the formats.xml file (nodes name, shortName, type, knd, version) according to the data in the classification.xml file. In this case, let the formats.xml file act as the input file for the transformation, and let the classification.xml file be loaded using the document() function.
I tried to implement it through choose, but it doesn't work - it loops and copies everything without stopping.
I do it like this:

<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>

Maybe I'm not doing it right at all?
What is the best way to implement such a function?
Here are excerpts from the files.
file 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>

And the classification file:
<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>

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question