2009-09-03 3 views
0

私は別のソースから情報を返す必要があり、その間に変換を行うことができますが、ソース文書にXML処理命令があるかどうかによって、渡す必要があります。ソース文書にXML処理命令が含まれているかどうかに基づいてXML処理命令を含める/除外することはできますか?

Input 
<?xml version="1.0" encoding="UTF-8"?> 
<Source/> 

Output  
<?xml version="1.0" encoding="UTF-8"?> 
<Source/> 

それが処理命令を持っているdoesntの場合は、私が(当たり前!)主にそれらを理解していない他のいくつかのレガシープログラムをサポートするために、出力に含めるはずの

私は動的にスタイルシートと使用を切り替えることができます入力が命令を持っているかどうかに基づいてomit-xml-declarationがありますが、単一のスタイルシートでそれを行う方法はありますか?

編集:データを返す前に存在する変換を削除できません。

EDIT:処理命令のように見えますが、<?xml version.. ?>は、実際にはそうではありませんので、それが一致するかどうかわかりません。

答えて

2

XML宣言は処理命令のように見えますが、そうではありません。

XMLパーサに、それが読み取ろうとしているドキュメント(XMLバージョン、文字エンコーディング)について通知するために存在します。

結果のDOM/infosetには存在しないため、XSLTで一致させることはできません。

さらに、<xsl:output>ディレクティブを動的に変更することはできません。<xsl:if>または<xsl:choose>構造の異なる出力要素のようなものは機能しません。

私の提案は次のとおりです。

<xsl:output omit-xml-declaration="yes" /> 
:下流のアプリケーションの一部は、その後、使用してすべての時間をそれらをオフのままに(実際に私は私の頭に傷を付けます WTF 事実である)XML宣言を理解していない場合
+0

私は、スタイルシート自体を動的に切り替えることができたことを意味しました.1つはomit-xml-declarationと1つではありません。ご回答有難うございます。 – Thiyagaraj

+0

ソースドキュメントで文字列 '' <?xml ''を検索し、実行するスタイルシートを決めることができます。私はあなたが* XSLTの中から*決定することはできないと思います。 – Tomalak

関連する問題