0

次の形式を持つ多くのxmlからテキスト出力を書きたいとしましょう。また、これらの xml ファイルの一部には、ノード [名前、年齢、学校] の値がない場合があります。


<学生>

<name>ディルク</name>

<年齢/>

<学校>abc</学校>

</生徒>


これらの xml ファイルはすべて 1 つのディレクトリにあり、それらを走査して各 xml ごとに出力ファイルを生成します。

したがって、基本的に私は 1 つの xsl ファイルを使用しており、[異なるノード値を持つ] 同様の形式のこれらの xml ファイルを考慮して出力を生成しようとしています。

しかし、特定の条件を持つxmlファイルに対応する出力を書き込むだけで済みます。[一部のxmlファイルには名前の値が含まれていないため、名前があるとしましょう]。

したがって、変換する 5 つの xml ファイルがあり、そのうちの 3 つのファイルだけが空でない名前の値を持っている場合、それらの出力ファイルを 3 つだけ生成したいと考えています。

私は、XSL 側からの解決策を好みますが、これはほとんどありそうにありませんが、出力ファイルの内容を読み取ったり、削除したり、Java 側でサイズ [0kB] に応じて削除したりせずにこれを行うことができれば、それも非常に役立ちます。

前もって感謝します :)

4

1 に答える 1

0

XSLT 1.0では、ベンダー固有の拡張機能がないと、スタイルシートレベルで複数の出力を生成することはできません。使用しているXSLT1.0エンジンに応じて、複数の出力を有効にする拡張機能があります。以下に、これらのいくつかへのリンクをいくつか示します。別の方法として、入力ファイルごとに1回ずつ、クライアントにスタイルシートを複数回呼び出すことを検討することもできます。

XSLT 2.0の場合、私が採用するアプローチは次のとおりです。

  1. 入力ファイル名のスペースで区切られたリストをパラメーターとしてスタイルシートに指定します。
  2. ファイル名については、ドキュメントとして開きます
  3. 名前ノードを持つこれらのそれぞれについて、xsl:result-documentとテンプレートを使用して、ファイル名が入力ファイル名に基づく出力ファイルにコピーします。

たとえば、スタイルシート(XSLT 2.0)については、以下を参照してください。

XSLT 1.0、Microsoftの場合については、以下を参照してください。

XSLT 1.0、XALANの場合については、以下を参照してください。

関連する質問も参照してください。

于 2012-05-31T03:48:48.047 に答える