我正在尝试向选定节点添加新父级,同时保留所有其他结构和属性。
原始结构(从样本中删除的属性和其他子项)
<document>
<pages>
<page>
<stream>
<block>
<table/> <!-- any number or tables or groups can exist in a block -->
<group/>
</block>
</stream>
</page>
</pages>
</document>
请求结果:
<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>
这似乎是一个微不足道的问题,但我似乎无法弄明白或在网上找到解决方案。
由于
答案 0 :(得分:1)
一个Identity Transform,其中一个额外的模板与block/*
匹配,然后在<category></category>
中包装每个匹配。
<?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>