XSLT - 使用公共元素名称创建递归子元素

时间:2014-10-27 16:57:07

标签: xslt elements nested renaming

我是XSLT的新手,想知道是否有解决方案要求将emements放入recursivce父/子元素

我想要制作的XML:

<NAVs>
 <NAV>
   <ShareClass1>A-USD</ShareClass1>
 </NAV>
 <NAV>
   <ShareClass1>A-SGD</ShareClass1>
</NAV>
<NAV>
   <ShareClass1>A-SGD (H)</ShareClass1>
</NAV>
</NAVs>

我拥有的XML。

<Share_class2_SH_1_NAV_lang_ID>A-USD</Share_class2_SH_1_NAV_lang_ID>
<Share_class2_SH_2_NAV_lang_ID>A-SGD</Share_class2_SH_2_NAV_lang_ID>
<Share_class2_SH_3_NAV_lang_ID>A-SGD (H)</Share_class2_SH_3_NAV_lang_ID>
<Share_class2_SH_4_NAV_lang_ID>A-ACC-AUD (H)</Share_class2_SH_4_NAV_lang_ID>

有关如何布置XSLT模板的任何想法?

1 个答案:

答案 0 :(得分:0)

我猜(!)你想要下面显示的样式表。但是,首先您需要一个格式良好的XML输入 - 一个具有根元素的输入,例如:

<input>
    <Share_class2_SH_1_NAV_lang_ID>A-USD</Share_class2_SH_1_NAV_lang_ID>
    <Share_class2_SH_2_NAV_lang_ID>A-SGD</Share_class2_SH_2_NAV_lang_ID>
    <Share_class2_SH_3_NAV_lang_ID>A-SGD (H)</Share_class2_SH_3_NAV_lang_ID>
    <Share_class2_SH_4_NAV_lang_ID>A-ACC-AUD (H)</Share_class2_SH_4_NAV_lang_ID>
</input>

应用以下样式表:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:template match="/input">
    <NAVs>
        <xsl:for-each select="*">
             <NAV>
                <ShareClass1><xsl:value-of select="."/></ShareClass1>
             </NAV>
        </xsl:for-each>
    </NAVs>
</xsl:template>

</xsl:stylesheet>

将产生:

<?xml version="1.0" encoding="UTF-8"?>
<NAVs>
   <NAV>
      <ShareClass1>A-USD</ShareClass1>
   </NAV>
   <NAV>
      <ShareClass1>A-SGD</ShareClass1>
   </NAV>
   <NAV>
      <ShareClass1>A-SGD (H)</ShareClass1>
   </NAV>
   <NAV>
      <ShareClass1>A-ACC-AUD (H)</ShareClass1>
   </NAV>
</NAVs>

这可能是您正在寻找的结果,也可能不是。