我有一个这样的 xml 文档:
<Catalogs>
<Catalog>
<Code>x</Code>
<Name>Ox</Name>
<Categories>
<Category>
<Id>9245</Id>
<Name>a</Name>
<Category>
<Id>9247</Id>
<Name>x</Name>
</Category>
</Category>
<Category>
<Id>9250</Id>
<Name>x</Name>
<Category>
<Id>9252</Id>
<Name>x</Name>
</Category>
<Category>
<Id>9258</Id>
<Name>x</Name>
<Category>
<Id>9260</Id>
<Name>x</Name>
</Category>
<Category>
<Id>9261</Id>
<Name>x</Name>
</Category>
<Category>
<Id>9261</Id>
<Name>x</Name>
</Category>
</Category>
</Category>
<Category>
<Id>9251</Id>
<Name>x</Name>
<Category>
<Id>9253</Id>
<Name>x</Name>
</Category>
</Category>
</Categories>
</Catalog>
</Catalogs>
我想将类别标签的每个子集包装成一个集合标签(类别)。这里的问题是这是一棵递归树,树的深度是未知的。
我尝试为此使用 xslt 转换,但尚未成功。我的尝试
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Category">
<Categories><xsl:apply-templates select="Category"/></Categories>
</xsl:template>
</xsl:stylesheet>
只是用一个空的类别标签替换所有孩子。
示例输出应该是这样的:
<Catalogs>
<Catalog>
<Code>x</Code>
<Name>Ox</Name>
<Categories>
<Category>
<Id>9245</Id>
<Name>a</Name>
<Categories>
<Category>
<Id>9247</Id>
<Name>x</Name>
</Category>
</Categories>
</Category>
<Category>
<Id>9250</Id>
<Name>x</Name>
<Categories>
<Category>
<Id>9252</Id>
<Name>x</Name>
</Category>
<Category>
<Id>9258</Id>
<Name>x</Name>
<Categories>
<Category>
<Id>9260</Id>
<Name>x</Name>
</Category>
<Category>
<Id>9261</Id>
<Name>x</Name>
</Category>
<Category>
<Id>9261</Id>
<Name>x</Name>
</Category>
</Categories>
</Category>
</Categories>
</Category>
<Category>
<Id>9251</Id>
<Name>x</Name>
<Categories>
<Category>
<Id>9253</Id>
<Name>x</Name>
</Category>
</Categories>
</Category>
</Categories>
</Catalog>
</Catalogs>
任何指针(或完整的解决方案)将不胜感激。