XSLT:深层子复制

时间:2009-11-20 09:00:51

标签: xslt xpath

我的需求:我想深度复制单个选定节点的所有子节点而不实际复制它。示例:来自

<father><son i="1" /><son i="2" /><son i="0"><lastNode /></son></father>

我希望摘录

<son i="1" /><son i="2" /><son i="0"><lastNode /></son>

我知道我可以通过循环for-each然后xsl:copy-of来完成此操作。我想知道是否有一个更简单的表达式来实现相同的结果。有些想法?

后续。我的问题遗漏了几点。我应该说所有的孩子都意味着“所有可能的孩子”,包括文本节点;另一个验证,一个更好的问题已经包含答案。其次,我从你那里学到的东西 - 社区 - 是我愚蠢到试图通过XSL解决事实上更多的是XPATH问题。感谢所有人的见解

干杯。

3 个答案:

答案 0 :(得分:3)

尝试选择所有孩子..

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <xsl:copy-of select="father/*"/>
</xsl:template>
</xsl:stylesheet>

E.G。 给定输入

<father><son i="1" /><son i="2" /><niceSon /><son i="0"><lastNode /></son></father>

输出

<son i="1" /><son i="2" /><niceSon /><son i="0"><lastNode /></son>

答案 1 :(得分:3)

<xsl:copy-of select="father/node()" />

答案 2 :(得分:0)

使用例如<xsl:copy-of select="father/son"/>