それは、ソース文書でその存在に基づいてXML処理命令を包含/除外することは可能ですか?

StackOverflow https://stackoverflow.com/questions/1372086

  •  21-09-2019
  •  | 
  •  

質問

Iは、異なるソースからのバック情報を渡す必要があるとの間で変換を有することができるが、ソース文書は、XML処理命令を有する場合に応じて、私は上に渡す必要があり、それはdoesntの場合、私はそれを通過するはずのます。

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

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

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

私は動的にスタイルシートを切り替え、入力指示があった場合に基づいてオミット-XML宣言を使用しますが、単一のスタイルシートでそれを行う方法があることができますか?

編集:私は前にデータを返すに存在する変換を削除カント

編集:?Iちょうど、それは処理命令のように見えるにもかかわらず、それを読んで、<?xml version.. ?>、それはないですInfactはそうではないことを確認、それはそれに一致させることができるならば、任意の提案

役に立ちましたか?

解決

処理命令のようなXML宣言のルックスは、それはありません。

(XMLのバージョン、文字エンコーディング)を読み取るしようとしていることを文書についてXMLパーサを知らせるために存在しています。

これは、得られたDOM /情報セットには存在しないので、それは、XSLTに一致させることができない。

また、あなたが動的に<xsl:output>ディレクティブを変更することはできません、<xsl:if>または<xsl:choose>構築物中の異なる出力要素のようなものになるではない仕事ます。

私の提案は次のとおりです。下流のアプリケーションの一部は(実際に私は私の頭に傷作ること<ストライキ> WTF 事実である)XML宣言を理解していない場合は、使用してすべての時間をそれらをオフのままに:

<xsl:output omit-xml-declaration="yes" />
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top