Мой XSLT-fu не для этого, но да, вы можете сделать это с помощью XSLT.
На самом деле вы всего лишь пытаетесь сделать одну умную вещь - преобразовать теги кода страны в теги.
Легко перебирать список дочерних элементов конкретного узла, вы можете получить имя тега текущего узла и вывести более или менее все, что захотите ... где я не уверен (это не то, что я когда-либо приходилось делать) - это точное заклинание для извлечения имени узла.
Изменить: слишком хороший вопрос, чтобы отпустить его (возможность обучения)
Недостающий бит ответа, конечно же, находится в stackoverflow < / а>
Итак, это дает вам следующее (на основе того, что я знаю ... я уверен, что копию регионов можно упростить, но я не знаю, как!):
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="countries" />
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="countries">
<countries>
<xsl:for-each select="child::*">
<country code="{local-name()}">
<xsl:apply-templates select="region" />
</country>
</xsl:for-each>
</countries>
</xsl:template>
<xsl:template match="region">
<region>
<xsl:value-of select="."/>
</region>
</xsl:template>
</xsl:stylesheet>
Предложения по улучшению приветствуются - при необходимости внесу поправки!
person
Murph
schedule
01.12.2010