私はいくつかの XSLT 変換に取り組んでいます。これらの変換は、自動化された方法で毎日何千もの XML ドキュメントに適用する必要があります。結果のファイルは、ターゲット ディレクトリに出力する必要があります。
XML を生成する変換もあれば、プレーン テキストを生成する変換もあることに注意してください。
入力 XML に特定の値が含まれている場合、特定の XSLT 変換では出力がまったく生成されず、ファイルが書き込まれないという新しい要件があります。
XSLT からの出力を .net で処理しているため、テキストを生成する XSLT については、結果の出力が空白か空白のみかを確認するだけです。その場合、ファイルを書き込まず、すべてが完璧です。
XML を生成する XSLT からの空白の出力を認識しようとすると問題が発生します。これは、ブロックに何も出力しないように指定した場合でも、ドキュメントが空白であってもxsl:template
出力に XML Doctype が含まれるためです。<?xml version="1.0" encoding="UTF-8"?>
この問題の解決策の 1 つは、XML doctype のみを含むドキュメントを .net コードで除外することですが、それを行う最善の方法が何であるかはわかりません。これまでのところ、私は と を試しxml.Trim().StartsWith("<?xml") && xml.Trim().EndsWith("?>")
ましたが、それがどれほど防弾かはわかりません。
出力するデータがある場合にのみ、何らかの方法で XSLT 出力を doctype にすることができれば、おそらくより良いでしょう。<xsl:output>
ノードをノード内に配置しようとしまし<xsl:if>
たが、うまくいきません。
必要な結果を得るための良い方法は何ですか?