在XSLT中动态创建元素 [英] Create elements dynamically in XSLT

查看:80
本文介绍了在XSLT中动态创建元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用XSLT动态创建与Main xml中的< Group> 元素一样多的< Group文件夹=新Xml中的Group1> 。另外,添加为最后一个子元素的< Data> 元素仅应在内部添加一次。

I want to create as many <Group> elements as they are in the Main xml dynamically using XSLT as <Group folder ="Group1"> in the new Xml. Also, the <Data> element added as the last child should be added only once inside.

Main Xml

<Root>
    <ClassA>
    <Groups>
    <Group1>
        <Group2>
            <Group3>
             ............
            </Group3>
        </Group2>
    </Group1>
    </Groups>
    <Data>
        <Name>George</Name>
        <Class>A</Class>
    </Data>
    </ClassA> 
</Root>

我需要这样的Xml

<Data>
    <ClassA>
    <Group folder = "Group1">
        <Group folder = "Group2">
            <Group folder = "Group3">
             ............

            <Data>
                <Name>George</Name>
                <Class>A</Class>
            </Data>
            </Group>
        </Group>
    </Group>

    </ClassA> 
</Data>


推荐答案

 <xsl:output method="xml" indent="yes"/>
    <xsl:template match="Root">
        <xsl:element name="Data">
            <xsl:apply-templates/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="ClassA">
        <xsl:element name="ClassA">
            <group floder="{Groups/Group1/name()}">
                <group floder="{Groups/Group1/Group2/name()}">
                    <group floder="{Groups/Group1/Group2/Group3/name()}">
                        <xsl:value-of select="Groups/Group1/Group2/Group3"/>
                        <xsl:copy-of select="Data"/>
            </group>
                </group>
            </group>
        </xsl:element>
    </xsl:template>

尝试对您是否有益。

这篇关于在XSLT中动态创建元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆