2010-12-10 10 views

答えて

81

あなたは、標準のXMLコメントを使用します。

<!-- Comment --> 

これらはXSLTトランスによって処理されません。

+0

+1正解です。 –

+0

パーフェクト!ありがとうございました。 –

-1

http://www.w3.org/TR/xslt#built-in-ruleを読み、このシンプルなスタイルシートは(も、必要があります)あなたがやりたいだろう、なぜそれが明らかであるべきである:

<?xml version="1.0"?> 
<xsl:stylesheet xmlns="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

<xsl:template match="comment()"> 
    <xsl:copy/> 
</xsl:template> 

<xsl:template match="text()|@*"/> 

</xsl:stylesheet> 

は試してみてください。

<xsl:template match="/"> 
    <xsl:for-each select="//comment()"> 
    <SRC_COMMENT> 
    <xsl:value-of select="."/> 
    </SRC_COMMENT> 
    </xsl:for-each> 
</xsl:template> 
or use a <xsl:comment ...> instruction for a more literal duplication of the source  document content in place of my <SRC_COMMENT> tag. 
11

ちょうどあなたが後に<!-- comments -->を入れていることを確認してくださいオープニングXML宣言(あなたが本当に必要としないものを、使用している場合):

BREAKS:

<!-- a comment --> 
<?xml version="1.0"?> 

WORKS:

<?xml version="1.0"?> 
<!-- a comment --> 

誰か他の人のXSLTのデバッグ中に、私は少しのために、この同じ問題に私の頭に傷...明白なようだが、簡単に見落とさ。

2

コメントの両側の空白は、XSLTプロセッサと空白を処理するための設定に応じて、出力ストリームで終了することに注意してください。これが出力に問題がある場合は、コメントがxsltタグで囲まれていることを確認してください。

EG

<xsl:for-each select="someTag"> 
    <xsl:text>"</xsl:text> 
    <!-- output the id --> 
<xsl:value-of select="@id"/> 
<xsl:text>"</xsl:text> 
</xsl:for-each> 

ウィル出力 "someTagID"(コメントタグの前にあるインデントタブ/スペースが出力されます)。 削除するには、左余白と一致するようにインデントしないか、またはかっこで囲みます。

<xsl:text>"</xsl:text><!-- output the id --><xsl:value-of select="@id"/>