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>