Мне интересно, каким самым простым (и наиболее дружественным к ресурсам) способом было бы преобразовать следующий пример XML
<index>
<element_1>
<local xml:lang="en">Something in English</local>
<local xml:lang="bg">Something in Bulgarian</local>
<local xml:lang="cs">Something in Czech</local>
<!-- more locales from here -->
</element_1>
<element_2>
<local xml:lang="en">Something else in English</local>
<local xml:lang="bg">Something else in Bulgarian</local>
<local xml:lang="cs">Something else in Czech</local>
<!-- more locales from here -->
</element_2>
<!-- more elements from here -->
</index>
В следующий XML, чтобы я мог сохранить его в параметре
<index>
<element_1>Something in English</element_1>
<element_2>Something else in English</element_2>
<!-- more elements from here -->
</index>
Я знаю, что приведенный ниже xslt справляется с задачей, но поскольку мои фактические файлы намного больше и сложнее, как в примере выше, мне было интересно, есть ли более простые способы добиться этого. Таким образом, используя XPath вместо шаблона, например. Любая рекомендация?
<xsl:param name="indexNode" select="/index"/>
<xsl:param name="language">en</xsl:param>
<xsl:template match="/">
<xsl:for-each select="$indexNode">
<xsl:copy>
<!-- index node -->
<xsl:for-each select="node()">
<!-- element node -->
<xsl:copy>
<!-- locale node -->
<xsl:value-of select="local[lang($language)]"/>
</xsl:copy>
</xsl:for-each>
</xsl:copy>
</xsl:for-each>
</xsl:template>
Заранее спасибо!