Xml 将新父节点添加到选定节点xslt

Xml 将新父节点添加到选定节点xslt,xml,xslt,Xml,Xslt,我正在尝试向选定节点添加新的父节点,同时保留所有其他结构和属性 原始结构(从样本中删除属性和其他子项) 要求的结果: <document> <pages> <page> <stream> <block> <category> <!-- NEW PARENT, only 1 table per category-->

我正在尝试向选定节点添加新的父节点,同时保留所有其他结构和属性

原始结构(从样本中删除属性和其他子项)


要求的结果:

<document>
<pages>
    <page>
        <stream>
            <block>
                <category> <!-- NEW PARENT, only 1 table per category-->
                    <table/> 
                </category>
                <category> <!-- NEW PARENT, only 1 group per category -->
                    <group/>
                </category>
            </block>
        </stream>
    </page>
</pages>
</document>

这似乎是一个微不足道的问题,但我似乎无法在网上找到解决方案

感谢An,它有一个额外的模板匹配
block/*
,然后将每个匹配项包装在


谢谢。这就行了。它对我的真实文档不起作用,我意识到这是一个名称空间问题。再次感谢。
<document>
<pages>
    <page>
        <stream>
            <block>
                <category> <!-- NEW PARENT, only 1 table per category-->
                    <table/> 
                </category>
                <category> <!-- NEW PARENT, only 1 group per category -->
                    <group/>
                </category>
            </block>
        </stream>
    </page>
</pages>
</document>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="block/*">
        <category>
            <xsl:copy>
                <xsl:apply-templates select="@*|node()"/>
            </xsl:copy>
        </category>
    </xsl:template>
</xsl:stylesheet>