0

別のソースから情報を返す必要があり、その間で変換を行うことができますが、ソース ドキュメントに xml 処理命令があるかどうかによっては、それを渡す必要があり、そうでない場合は渡す必要はありません。

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

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

処理命令がない場合は、出力に含めるべきではありません。主に、それらを理解しない他のレガシープログラムをサポートするためです (当たり前!)

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

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

編集:処理命令のように見えますが<?xml version.. ?>、実際にはそうではないことを読んだだけなので、一致させることができるかどうかわかりません。何か提案はありますか?

4

1 に答える 1

2

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

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

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

<xsl:output>さらに、ディレクティブを動的に変更することはできません。<xsl:if>または<xsl:choose>コンストラクト内の異なる出力要素などは機能しません。

私の提案は次のとおりです。ダウンストリーム アプリケーションの一部が XML 宣言を理解しない場合 (これは、本当に頭を悩ませているWTFの事実です)、次のようにして常にそれらを除外します。

<xsl:output omit-xml-declaration="yes" />
于 2009-09-03T09:42:54.847 に答える