XSLT для каждого (группа?) С двумя отсортированными элементами, названными Code и Value

Мне нужно передать файл XML в XFDF. И у меня есть группа с двумя типами элементов кода и значения. Код определяет имя поля, а значение - значение поля. Источник XML выглядит так:

 <urn:identifications>
  <urn:identificationCode>dateOfBirth</urn:identificationCode>
  <urn:identificationValue>25021965</urn:identificationValue>
  <urn:identificationCode>ičdph</urn:identificationCode>     <!-- IC DPH -->
  <urn:identificationValue>1234567890</urn:identificationValue>
  <urn:identificationCode>ičo_sk</urn:identificationCode>      <!-- ICO (SK) -->
  <urn:identificationValue>0987654333</urn:identificationValue>
  <urn:identificationCode>ic</urn:identificationCode>      <!-- ICO (CZ) -->
  <urn:identificationValue>0987654321</urn:identificationValue>
  ...
</urn:identifications>

И мне нужно что-то вроде этого от XSLT до XFDF.

<identifications>
 <field name="dateOfBirth">
   <value>25021965</value>
 </field>
 <field name="ičdph">
   <value>1234567890</value>
 </field>
 <field name="ičo_sk">
   <value>0987654333</value>
 </field>
 <field name="ic">
   <value>0987654321</value>
 </field>
  ...
</identifications>

Что мне нужно использовать? Как? в-каждой группе? или сом устанавливает? Большое спасибо.

1 ответ

Решение

Если они всегда идут упорядоченными парами, как показано в вашем примере, то вы можете сделать просто:

<xsl:template match="urn:identifications">
    <identifications>
        <xsl:for-each select="urn:identificationCode">
            <field name="{.}">
                <value>
                    <xsl:value-of select="following-sibling::urn:identificationValue[1]"/>
                </value>
            </field>
        </xsl:for-each>
    </identifications>
</xsl:template>
Другие вопросы по тегам