2011-12-10 55 views
2

在XSLT上,是否有简单的方法输出变量的所有内容?XSL输出everythin包括节点名称,属性,文本

我的变量是这样的:

<node a="a"> 
    a 
    <node> 
    b 
    </node> 
</node> 

所以我想输出它,因为它包括标签名称,属性,文本等

谢谢!

AND:

是有可能不输出一些标签吗?如

<a>aa 
<b>bb 
<c>cc</c></b></a> 

我想避免输出b标签,但想输出c?谢谢!

+0

你是什么意思的“输出”?你的意思是“包含在结果文件中”? –

+0

是的,对不起,我不习惯功能性编程可能会用错词:) – Ataman

回答

3
<xsl:copy-of select="$variable"/> 
+0

有可能不输出一些标签吗?如 aa bb cc。我想避免b标签形式的输出,但想输出c?谢谢! – Ataman

+0

@ user446141:请参阅我的答案解决您的两个问题。 :) –

1

好问题,+1。

这种转变提供了答案到这两个问题

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:variable name="vVarNode" select="/*/node"/> 

<xsl:variable name="vVarA" select="/*/a"/> 

<xsl:template match="node()|@*"> 
    <xsl:copy> 
    <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="/"> 
    <xsl:copy-of select="$vVarNode"/> 
    =========== 

    <xsl:apply-templates select="$vVarA"/> 
</xsl:template> 

<xsl:template match="b"> 
    <xsl:apply-templates select="*"/> 
</xsl:template> 
</xsl:stylesheet> 

当此XML文档的应用(从两个变量是 “装”):

<doc> 
<node a="a"> 
    a 
    <node> 
    b 
    </node> 
</node> 

<a>aa 
    <b>bb 
    <c>cc</c> 
    </b> 
</a> 
</doc> 

想要的,正确的结果产生(第一个变量的内容是“原样”输出,而b及其文本节点子节点从第二个变量的输出内容中删除):

<node a="a"> 
    a 
    <node> 
    b 
    </node> 
</node> 
    =========== 

    <a>aa 
    <c>cc</c> 
</a>