パッケージ org.opengion.fukurou.xml

クラス XSLT


  • public class XSLT
    extends Object
    XML 入力ファイルに、XSL 入力ファイルを適用して、 XSLT変換を行います。 結果は、XML 出力ファイルにセーブします。 各ファイルの代わりに、Writer,Reader を設定することも可能です。 このパーサーでは、内部で実行中の入力ファイル情報を パラメータとして設定できます。 useFileInfo( true ) とセットすると、以下の4項目が内部的にセットされます。 ただし、この設定が可能なのは、XML 入力ファイルに、Reader ではなく、ファイル名を 渡した場合のみです。ストリームの場合は、各種情報は取れません。 入力ファイル(inXMLのフルパス) : FILEPATH (例: G:\webapps\gf\jsp\DOC10\query.jsp) 入力親フォルダ(inXMLの親フォルダ) : ADDRESS (例: DOC10) 入力ファイル(inXMLのファイル名) : FILENAME (例: query.jsp) 入力ファイル(inXMLの更新日付 ) : MODIFIED (例: yyyyMMddHHmmss形式) xsl ファイルでは、パラメータ は、xsl:param で宣言し、xsl:value-of で取り出します。 <xsl:param name="ADDRESS" select="" /> と宣言しておき、必要な箇所で <xsl:value-of select="$ADDRESS" /> とすれば、取得できます。 String inXSTL = "inXSLfile.xsl" ; // 入力XSLファイル String outFile = "outXMLfile.xml" ; // 出力XMLファイル String inXML = "inXMLfile.xml" ; // 入力XMLファイル XSLT xslt = new XSLT(); xslt.setXslFile( inXSTL ); xslt.setOutFile( outFile,false ); xslt.transform( inXML );
    バージョン
    4.0
    作成者
    Kazuhiko Hasegawa
    導入されたバージョン:
    JDK5.0,
    • フィールドの概要

      フィールド 
      修飾子とタイプ フィールド 説明
      static String ENCODE
      初期 ENCODE 名 "UTF-8"
    • コンストラクタの概要

      コンストラクタ 
      コンストラクタ 説明
      XSLT()  
    • メソッドの概要

      すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド 
      修飾子とタイプ メソッド 説明
      void close()
      入力XSLファイルのストリームを閉じます。
      void errClose​(boolean flag)
      transform 処理中にエラーが発生した場合に、出力ファイルを閉じるかどうかを指定します。
      void jspInclude​(boolean flag)
      jsp:directive.include 発見時に、そのファイルを INCLUDE するかを指定するかどうかを指定します(初期値:true:使用する) 引数の処理対象ファイル(transformの引数ファイル)が、『.jsp』の場合、 jsp:directive.include 発見時に、そのファイルを INCLUDE するかを指定するか どうかを指定します。
      static void main​(String[] args)
      テスト用のメインメソッド。
      void setOutData​(String outData)
      結果XML ライターに、指定のデータを書き出します。
      void setOutFile​(Writer writer)
      結果XML データを出力する、Writer を指定します。
      void setOutFile​(String file, boolean append)
      結果XML ファイル名と、そのオープン方法を指定します。
      void setParamEntry​(HybsEntry... entry)
      Transformer オブジェクトに対して、Parameter を設定します。
      void setRealPath​(String path)
      jspInclude=true 時に、/jsp/common/** 等の include ファイルが存在しない場合の共有取得場所を指定します。
      void setXslFile​(Reader reader)
      入力XSLリーダーを、指定します。
      void setXslFile​(String file)
      入力XSLファイルを、指定します。
      String toString()
      このオブジェクトの内部文字列表現を返します。
      void transform​(Reader xmlReader)
      XML ファイルをXSLT変換します。
      void transform​(String file)
      XML ファイルをXSLT変換します。
      void useEncode​(String encode)
      ファイル名指定で XML,XSL,OUTファイルを指定する場合のエンコードを指定します。
      void useErrXmlIn​(boolean flag)
      transform 処理中エラーを、出力ファイルに、XML形式でエラーを追記するかどうかを指定します。
      void useFileInfo​(boolean flag)
      実行中の入力ファイル名などの属性情報を パラメータとして設定するかどうかを指定します。
    • コンストラクタの詳細

      • XSLT

        public XSLT()
    • メソッドの詳細

      • setXslFile

        public void setXslFile​(String file)
        入力XSLファイルを、指定します。
        パラメータ:
        file - 入力XSLファイル
        関連項目:
        setXslFile( Reader )
      • setXslFile

        public void setXslFile​(Reader reader)
        入力XSLリーダーを、指定します。
        パラメータ:
        reader - 入力XSLリーダー
        関連項目:
        setXslFile( String )
      • setOutFile

        public void setOutFile​(String file,
                               boolean append)
        結果XML ファイル名と、そのオープン方法を指定します。 結果XML ファイルを、追記する(append=true)か新規作成する(append=false)か指定します。 なお、結果XML ファイル(outFile) を指定しない(=null)か、特別な名称 "System.out" 文字列を渡すと、標準出力に 結果を出力します。
        パラメータ:
        file - 出力ファイル名(null または、"System.out" 文字列時は、標準出力)
        append - [true]追記する/false:新規作成する]
      • setOutFile

        public void setOutFile​(Writer writer)
        結果XML データを出力する、Writer を指定します。 ファイル、標準出力、JSPWriter など、必要に応じて Writer を作成してください。 標準出力(System.out)の場合は、NonClosePrintWriter クラスなどの非close()処理系を、 JSPWriterの場合は、NonFlushPrintWriter クラスなどの非flush()、close()処理系を、 使用してください。
        パラメータ:
        writer - 出力するWriter
      • setOutData

        public void setOutData​(String outData)
        結果XML ライターに、指定のデータを書き出します。
        パラメータ:
        outData - 書き出すデータ
        変更履歴:
        6.3.9.0 (2015/11/06) コンストラクタで初期化されていないフィールドを null チェックなしで利用している(findbugs)
      • transform

        public void transform​(String file)
        XML ファイルをXSLT変換します。 XML 入力ファイルに、XSL 入力ファイルを適用して、 XSLT変換を行います。 結果は、XML ファイルにセーブします。 拡張子が『.jsp』で、かつ、isInclude=true の場合、jsp:directive.include 処理を行います。
        パラメータ:
        file - 入力XMLファイル
        変更履歴:
        4.2.3.0 (2008/05/26) jsp:directive.include 処理の実施可否を引数指定します。, 5.2.1.0 (2010/10/01) JspIncludeReader#getString の第3引数を廃止, 5.6.7.1 (2013/08/09) デバッグ用に、ファイルリストを取得しておきます。, 5.7.6.2 (2014/05/16) #transform( String , boolean ) 廃止。realPath 追加
      • transform

        public void transform​(Reader xmlReader)
        XML ファイルをXSLT変換します。 XML 入力リーダーに、XSL 入力リーダーを適用して、 XSLT変換を行います。 結果は、XML ライターに書き出します。 この処理の終了後に、入力XML リーダー は、close() されます。
        パラメータ:
        xmlReader - 入力XML リーダー
        関連項目:
        transform( String )
        変更履歴:
        5.6.5.2 (2013/06/21) エラーメッセージが判りにくいので、追記します。, 5.6.7.1 (2013/08/09) デバッグ用に、ファイルリストを出力します。, 6.4.0.2 (2015/12/11) Transformer のエラーを、より詳細に出力します。
      • setParamEntry

        public void setParamEntry​(HybsEntry... entry)
        Transformer オブジェクトに対して、Parameter を設定します。 指定されたパラメーターキーは、xsl ファイルでは、xsl:param で宣言し、 xsl:value-of で取り出します。 <xsl:param name="ADDRESS" select="" /> と宣言しておき、必要な箇所で <xsl:value-of select="$ADDRESS" /> とすれば、取得できます。
        パラメータ:
        entry - HybsEntry配列(可変長引数)
      • errClose

        public void errClose​(boolean flag)
        transform 処理中にエラーが発生した場合に、出力ファイルを閉じるかどうかを指定します。 処理途中でエラーが発生した場合に、そこで処理を中断するか、それとも、 無視して、さらに処理を進めるかを指定することが可能です。 継続して処理を進めたい場合は、出力ファイルを閉じないため、false を 設定します。ただし、エラー時には、RuntimeException は throw されます。 初期値は、true(閉じる)です。
        パラメータ:
        flag - エラー時クローズ [true:閉じる/false:閉じない]
      • useErrXmlIn

        public void useErrXmlIn​(boolean flag)
        transform 処理中エラーを、出力ファイルに、XML形式でエラーを追記するかどうかを指定します。 処理途中でエラーが発生した場合に、ログだけではなく、結果XMLファイルに、 エラー内容や、エラーファイルなどを埋め込むと、XMLファイルとしてDB登録や、 その他集計等に使えます。 今は、GE70 スキーマ形式のファイルしか作成できません。 これは、#errClose( boolean ) メソッドと共に使用すると効果的です。 つまり、errClose = false; にして、エラー時でも出力ファイルを閉じずに、 処理を続ける事で、エラーメッセージもXMLファイルとして蓄積できます。 初期値は、false(使用しない)です。
        パラメータ:
        flag - エラー時XML形式 [false:使用しない/true:使用する]
      • jspInclude

        public void jspInclude​(boolean flag)
        jsp:directive.include 発見時に、そのファイルを INCLUDE するかを指定するかどうかを指定します(初期値:true:使用する) 引数の処理対象ファイル(transformの引数ファイル)が、『.jsp』の場合、 jsp:directive.include 発見時に、そのファイルを INCLUDE するかを指定するか どうかを指定します。 インクルードされたファイルとあわせて、正規のXML にならないと、パーサー エラーが発生します。 JSPソース解析を行うには、INCLUDE ファイルも考慮しないと正確な結果を 得られませんが、INCLUDE 先のファイルまで合わせる必要があるため、 場合によっては、INCLUDEファイルを無視しなければならないケースがあります。 初期値は、true(使用する)です。
        パラメータ:
        flag - エラー時XML形式 [false:使用しない/true:使用する]
      • setRealPath

        public void setRealPath​(String path)
        jspInclude=true 時に、/jsp/common/** 等の include ファイルが存在しない場合の共有取得場所を指定します。 引数の処理対象ファイル(transformの引数ファイル)が、『.jsp』で、かつ、jspInclude=true の場合、 そのファイルを INCLUDE するのですが、/jsp/common/** 等の include ファイルは、 エンジン共通として、jspCommon6.x.x.x.jar で提供しています。 従来は、処理対象jspの相対パスで、../../../gf/jsp/commom/** を取り込んでいましたが、 Tomcat起動フォルダ以外のシステムのJSPチェックなどを行う場合は、gf フォルダが存在しない ケースがあります。 そこで、確実にgf が存在する、処理をキックしている環境の gf を使用するように変更します。 その環境とは、つまり、エンジン内部変数の REAL_PATH ですが、jsp などが実行していないと取得できません。
        パラメータ:
        path - /jsp/common/** 等の include ファイルの共有取得場所
      • close

        public void close()
        入力XSLファイルのストリームを閉じます。
        変更履歴:
        5.6.7.1 (2013/08/09) includeしたファイルのキャッシュをクリアします。
      • useFileInfo

        public void useFileInfo​(boolean flag)
        実行中の入力ファイル名などの属性情報を パラメータとして設定するかどうかを指定します。 このパーサーでは、内部で実行中の入力ファイル情報を パラメータとして設定できます。 useFileInfo( true ) とセットすると、以下の4項目が内部的にセットされます。 入力ファイル(inXMLのフルパス) : FILEPATH (例: G:\webapps\gf\jsp\DOC10\query.jsp) 入力親フォルダ(inXMLの親フォルダ) : ADDRESS (例: DOC10) 入力ファイル(inXMLのファイル名) : FILENAME (例: query.jsp) 入力ファイル(inXMLの更新日付 ) : MODIFIED (例: yyyyMMddHHmmss形式)
        パラメータ:
        flag - セットする:true/セットしない:false
        変更履歴:
        4.0.0.0 (2007/09/25) ParameterMetaData を使用したパラメータ設定追加。, 5.5.7.2 (2012/10/09) HybsDateUtil を利用するように修正します。 xsl ファイルでは、xsl:param で宣言し、xsl:value-of で取り出します。 <xsl:param name="ADDRESS" select="" /> と宣言しておき、必要な箇所で <xsl:value-of select="$ADDRESS" /> とすれば、取得できます。 初期値は、false(セットしない) です。
      • useEncode

        public void useEncode​(String encode)
        ファイル名指定で XML,XSL,OUTファイルを指定する場合のエンコードを指定します。 初期値は、UTF-8 です。
        パラメータ:
        encode - エンコード
      • toString

        public String toString()
        このオブジェクトの内部文字列表現を返します。 接続URL + "," + 接続ユーザー + " (" + 作成日付 + ")" です。
        オーバーライド:
        toString クラス内 Object
        戻り値:
        内部文字列表現
        このメソッドは、nullを返しません
      • main

        public static void main​(String[] args)
                         throws IOException
        テスト用のメインメソッド。 java org.opengion.fukurou.xml.XSLT in_xml in_xsl out_xml
        パラメータ:
        args - コマンド引数配列
        例外:
        IOException - 入出力エラーが発生した場合