Cosminexus XML Processor ユーザーズガイド

[目次][用語][索引][前へ][次へ]

付録A.5 XSLTの動作の差異

XSLTの動作の差異を次の表に示します。

表A-5 XSLTの動作の差異(バージョン06-00とバージョン07-00の比較)

項番 条件 Cosminexus XML Processorの動作
バージョン06-00の場合 バージョン07-00以降の場合
1 TransformクラスおよびTransformerFactoryクラスのデフォルトのエラーリスナーを使用する場合 エラー時に例外をスローします。 エラー時に例外をスローしません。
2 TransformerFactoryクラスのnewTransformer(Source source)メソッド, newTemplatesメソッドを実行した場合 バージョン間の差異はありません。
これらのメソッドの入力であるスタイルシートに誤りがあると,ErrorListenerのfatalErrorメソッドにエラーが報告されます。このとき,ErrorListenerのfatalErrorメソッドの実装がTransformerExceptionをスローしない場合は,newTransformer(Source source)メソッド,newTemplatesメソッドの戻り値がnullになることがありますのでご注意ください。
デフォルトの ErrorListenerは,TransformerExceptionをスローしません。したがって,回復できないエラー発生時の正常な動作を確保するため,ErrorListenerを登録してfatalErrorメソッドの中からTransformerException例外をスローすることを強くお勧めします。
3 XMLをファイルに出力する際,xsl:output要素にindent="yes"が指定されていないか,または,TransformクラスのsetOutputProperty(OutputKeys.INDENT, "yes")メソッドが実行されていない場合 XML宣言の直後に改行が出力されます。 改行は出力されません。
4 変換結果をHTML形式で出力した場合 要素間の改行出力に差異がありますが,HTML文書では,要素間の改行は意味を持たないため,問題ありません。
5 system-property('xsl:version')関数を実行した場合 結果は"1"になります。 結果は"1.0"になります。
6 xsl:attribute要素の内容がタブを含む文字列の場合 変換結果の属性値がタブ文字そのものになります。 変換結果の属性値が文字参照(	)になります。
7 xsl:number要素のvalue属性にgenerate-id()関数を使用した場合 "0"が出力されます。 "NaN"が出力されます。
8 xsl:stylesheet要素の名前空間宣言で定義した接頭辞が,xsl:element要素によって作成された要素の中で使われない場合 その名前空間宣言がxsl:element要素に出力されます。 その名前空間宣言はxsl:element要素には出力されません。
9 xsl:version属性に"1.1"を指定した簡略化スタイルシートの中にトップレベル要素を記述した場合 前方互換処理で,トップレベル要素がインスタンス化されて変換が実行されます。 トップレベル要素前方互換処理が無視されます。
10 xsl:attribute-set要素のuse-attribute-sets属性に「存在しない属性セット名」を指定した場合 エラーになりません。 属性セットが存在しない旨のエラーになります。
11 xsl:template要素にname属性,match属性のどちらも指定されていない場合 エラーになりません。 name属性かmatch属性のどちらかが必要な旨のエラーになります。
12 exclude-result-prefixes属性で指定された「除外する名前空間の接頭辞」が,xsl:stylesheet要素の名前空間宣言で定義されていない場合 エラーになりません。 エラーになります。
13 xsl:stylesheet要素のversion属性に数値以外を指定した場合 エラーになりません。 エラーになります。
14 xsl:output要素のmethod属性に"xml"を指定し,かつ,xsl:output要素のversion属性に"1.0","1.1"以外を指定した場合 警告は発生しません。 "1.0"を仮定する旨の警告が発生します。
15 テキスト出力で,出力時のエンコーディングでは表現できない文字を出力する場合 文字化けとなります。 標準エラー出力に警告が出力され,該当の文字は文字参照として出力されます。
16 Transformクラスのtransform(Source xmlSource, Result outputTarget)メソッドの引数xmlSourceに空のSourceを指定した場合 エラーになります。 DocumentBuilderクラスのnewDocumentメソッドで生成された空のドキュメントが使われます。
17 TransformerFactoryクラスのgetFeatureメソッドの引数にnullを指定した場合 falseが戻ります。 NullPointerException例外が発生します。
18 名前空間宣言のない接頭辞がある場合 TransformerException例外が発生します。 XPathStylesheetDOM3Exception例外が発生することがあります。この例外はTransformerException例外のサブクラスなので,TransformerExceptionによってキャッチできます。
19 StreamResultクラスのStreamResult(File f)コンストラクタ,および,setSystemId(File f) メソッドの引数fにnullを指定した場合 NullPointerException例外が発生します。 RuntimeException例外が発生します。
ただし,Java SE 6の場合はNullPointerException例外が発生します。
20 xsl:call-template要素のname属性で指定した名前付きテンプレートが存在しない場合
(メッセージの詳細については,マニュアル「Cosminexus アプリケーションサーバ メッセージ 3」の「2. KECX(Cosminexus XML Processorが出力するメッセージ)」を参照してください)
KECX02019-Eのエラーを通知します。 KECX02019-EおよびKECX02015-Eのエラーを通知します。
21 「namespace::局所名」を含むXPath式の評価結果 局所名を接頭辞と見なして名前空間URIを解決し,その名前空間URIに一致する文字列値を持つ名前空間ノードが評価結果になります。 指定した局所名を持つ名前空間ノードが評価結果になります。

表A-6 XSLTの動作の差異(バージョン08-50とバージョン08-70の比較)

項番 条件 Cosminexus XML Processorの動作
バージョン08-50の場合 バージョン08-70の場合
1 XMLInputFactory.createXMLEventReader()メソッドで取得したXMLEventReaderをStAXSourceのコンストラクタ引数に指定して,Transformer.transform()メソッドの入力ソースとした場合 入力XML文書のルート要素の外側にある処理命令は無視されます。 入力XML文書のルート要素の外側にある処理命令も変換対象となります。
2 次の両方の条件に該当する場合
  • トランスフォーマの入力XML文書内の要素がXSLT以外の名前空間に属している
  • XMLEventWriterから作成したStAXResultを使用して変換している
変換中にエラーが発生するか,変換結果が不正になります。 正常に処理されます。