我在文档中使用XML代码:
<root>
<a id="att_1">
<a id="att_2"/>
<a id="att_3">
<a id="att_4">
<a id="att_5"/>
</a>
<a id="att_6"/>
</a>
</a>
</root>
我需要out-document,其中带有id="att_6"
的节点包含在b
节点中:
<root>
<a id="att_1">
<a id="att_2"/>
<a id="att_3">
<a id="att_4">
<a id="att_5"/>
</a>
<b>
<a id="att_6"/>
</b>
</a>
</a>
</root>
我首先尝试将所有节点从文档中复制到out-doc。其次,我需要用一定的id包装一个节点。这是我的样式表:
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="a">
<b>
<xsl:copy>
<xsl:apply-templates select=".[@id = 'att_6']"/>
</xsl:copy>
</b>
</xsl:template>
我该怎么做?
答案 0 :(得分:1)
你走在正确的轨道上:
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="a[@id='att_6']">
<b>
<xsl:copy-of select="."/>
</b>
</xsl:template>
您只需要匹配要包装的节点并处理它们,如上所示。 xsl:copy-of
执行上下文节点及其所有包含节点的深层副本。
其他所有内容都由身份转换处理。