2011-12-10 20 views
2

XSLTでは、変数のすべてを簡単に出力できますか?ノード名、属性、テキストを含むすべてのXSL出力

私の変数のようなものである:それはタグ名を含めているように、私は出力にそれをしたい、属性、テキストなど

おかげ

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

AND:

は、いくつかのタグを出力することが可能ではないでしょうか?

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

出力からbタグを避けたいが、出力したいのですか?ありがとう!

+0

「出力」とはどういう意味ですか?あなたは「結果文書に含める」という意味ですか? –

+0

はい、申し訳ありませんが、私は間違った単語を使用する可能性があります関数プログラミングに慣れていません:) – Ataman

答えて

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

いくつかのタグを出力することは可能ですか? aa bb ccなどです。私はbタグフォームの出力を避けたいのですが、出力したいのですか?ありがとう! – 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ドキュメント(2つの変数が "ロードされ" であるから)に適用される:

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

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

希望の正しい結果が生成されます(最初の変数の内容はそのまま "そのまま"出力されますが、bとそのテキストノードの子は、第2変数の内容から出力されるものから「削除」されます)。

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

    <a>aa 
    <c>cc</c> 
</a> 
関連する問題