内部にコメントがあるXMLセクションをコメントアウトするにはどうすればよいですか?
以下は機能しません。コメントアウトするだけですstuff0
:
<!--
stuff0
<!-- stuff1 -->
stuff2
<!-- stuff3 -->
stuff4
<!-- stuff5 -->
stuff6
-->
--
はXMLコメントでは許可されていません。 2つの間にスペースを追加できます-
。プログラムでそれを行う場合は、XSLTが代わりに機能します。たとえば、次のXSLT:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="/">
<a>
<xsl:comment select="'a -- b -- c'"/>
</a>
</xsl:template>
</xsl:stylesheet>
次の出力が得られます。
<a><!--a - - b - - c--></a>
ただし、XSLTプロセッサもエラーを出力する場合があります。仕様を考えると、スペースを追加するかエラーを発生させるかは実装次第です。
あなたはしません。 specification によるXMLは、ネストされたコメントをサポートしていません。
あなたはそれをすべきではありません、私は知っています。つまり、XML仕様によれば、あなたはそうするべきではありません。この答えを読むのをやめなさい。それはハックです! (まあ...多分良いもの)。
そうは言っても...私は本当にそれをひどく必要としていたので、ここに トリック があります。コメントするセクションを未使用の処理命令で囲みます。
<some-tags />
<?comment
<!-- traditional comment 1 -->
<badtag prop1="123">
<!-- traditional comment 2 -->
</badtag>
<!-- traditional comment 3 -->
?>
<rest-of-my-tags />
使用されていない処理命令を使用できます。未使用の処理命令として「コメント」を選択したので、大きなコメントを<?comment
で開始し、?>
で終了しました。
ほとんどの場合、実際には使用されないため、ほとんどすべてのWordが処理命令として機能します。つまり、何か使ったことがありますか?
次の2つのオプションがあります。
--
のすべてのインスタンスを別のものに置き換えます。別のアプローチは次のとおりです。XMLでサポートされているかのようにネストされたコメントを使用できます。
<!-- Outer comment
<SomeXML> ... </SomeXML>
<!-- Inner comment
<SomeXML> ... </SomeXML>
-->
-->
次に、テキストエディタ内でthis XMLのみを使用します。実際にプロセスにフィードするXMLは、nested-comment-XMLを読み取り、unnested-comment-XMLを吐き出す単純なプログラムの出力です。
もう1つの同様のトリックは、Cコンパイラのプリプロセッサを使用することです。私はこの数年前にMicrosoftのC++コンパイラーを使用しました。コンパイラーcl.exeは、実際には2つの別個のプログラムcl1.exeとcl2.exeを呼び出しました。 Cl1.exeはプリプロセッサです。そのため、XMLやnmakeスクリプトなど、何でもフィードでき、それを前処理します。したがって、このようなものが機能します:
<SomeXML> ... </SomeXML>
#ifdef PRODUCE_THIS
<SomeMoreXML> ... </SomeMoreXML>
#endif