我有一個XML文檔,像這樣:XSLT來包裝所有CHID元素的父標記
<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>
任何指針(或完整解決方案),將不勝感激。
感謝不僅2(!)工作解決方案,但也有一些額外的解釋。似乎我需要更多地瞭解xslt –