6.2.4 その他の注意事項

JAXP1.4について,これまで説明したもの以外の注意事項を次に示します。

参考
関連する注意事項があるため,必要に応じて「6.5 StAXに関する注意事項」も参照してください。

 

表6-5 JAXP1.4使用時の注意事項

項番注意事項
1[条件]
ValidatorHandlerに設定したContentHandlerのendElementイベントでjavax.xml.validation. TypeInfoProviderクラスのgetElementTypeInfo()メソッドを実行する場合です。
 
[Cosminexus XML Processorの動作]
IllegalStateException例外がスローされます。TypeInfoオブジェクトは返されません。
2[条件]
次のすべての条件に該当する場合です。
  1. XMLOutputFactoryのjavax.xml.stream.isRepairingNamespacesプロパティにBoolean.FALSEを設定する。
  2. 1.のXMLOutputFactoryから,XMLStreamWriterまたはXMLEventWriterを作成する。
  3. 2.のXMLStreamWriterまたはXMLEventWriterからStAXResultを作成する。
 
[Cosminexus XML Processorの動作]
上記の条件で作成したStAXResultを次に示すメソッドのどちらかの引数に指定して,名前空間宣言を含むXML文書を処理すると,XMLStreamException例外が発生します。
  • javax.xml.validation.Validatorクラスのvalidate(Source source, Result result)メソッド
  • javax.xml.transform.Transformerクラスのtransform(Source source, Result result)メソッド
    注※ ただし,このメソッドはスタイルシートを使わない恒等変換の場合だけ該当します。
 
[回避策]
XMLOutputFactoryのjavax.xml.stream.isRepairingNamespacesプロパティにはBoolean.TRUEを設定してください。
3[条件]
次のすべての条件に該当する場合です。
  1. トランスフォーマとして,XSLTCではなくXSLTを使っている。
  2. XMLInputFactoryクラスのcreateXMLStreamReaderメソッドまたはcreateXMLEventReaderメソッドの引数にシステム識別子を指定しないで呼び出して,XMLStreamReaderまたはXMLEventReaderを作成する。
  3. StAXSourceのコンストラクタ引数に2.で作成したXMLStreamReaderまたはXMLEventReaderを指定する。
  4. TransformerFactoryクラスのnewTemplatesメソッドまたはnewTransformerメソッドの引数に,3.で作成したStAXSourceを指定する。
 
[Cosminexus XML Processorの動作]
TransformerFactoryクラスのnewTemplatesメソッドまたはnewTransformerメソッドを呼び出すときにfatalErrorイベントが発生します。メソッドの戻り値はnullとなります。
 
[回避策]
次の回避策の中から選択してください。
  • XSLTの代わりにXSLTCを使用する。
  • createXMLStreamReaderメソッドまたはcreateXMLEventReaderメソッドの引数に,システム識別子を指定する。
  • StAXSource以外のSourceを使用する。
4[条件]
次の条件に該当する場合です。
  1. トランスフォーマの出力にStAXResultを指定する。
  2. XSLTスタイルシートまたはトランスフォーマの出力プロパティの設定で,出力メソッドに「xml」を指定している。
  3. 1.のStAXResultにXMLStreamWriterまたはUTF-8以外の出力エンコーディングを指定したXMLEventWriterを指定する。
 
[Cosminexus XML Processorの動作]
  • 上記すべての条件に該当する場合は,トランスフォーマの出力結果のXML宣言にencoding擬似属性が出力されません。
  • 上記のうち,1.および2.の条件だけが該当する場合は,standalone擬似属性が出力されません。
5[条件]
次のすべての条件に該当する場合です。
  • トランスフォーマの入力XML文書をStAXSourceで与える。
  • 入力XML文書のプロローグ部分またはエピローグ部分に処理命令が書かれている。
 
[Cosminexus XML Processorの動作]
入力XML文書のプロローグ部分およびエピローグ部分の処理命令は無視します。
6[条件]
次のすべての条件に該当する場合です。
  • トランスフォーマの出力にStAXResultを指定する。
  • XSLTスタイルシートまたはトランスフォーマの出力プロパティの設定で,出力メソッドに「xml」を指定する。
  • XSLTスタイルシートのテンプレートにマッチするノードが,入力XML文書内に存在しない。
 
[Cosminexus XML Processorの動作]
トランスフォーマの出力結果にXML宣言を出力しません。
7[条件]
次のすべての条件に該当する場合です。
  • トランスフォーマの出力にStAXResultを指定する。
  • XSLTスタイルシートまたはトランスフォーマの出力プロパティの設定で,出力メソッドを指定していない。
 
[Cosminexus XML Processorの動作]
トランスフォーマの出力結果の内容に関係なく,出力メソッドとして「xml」を仮定します。
8[条件]
次のすべての条件に該当する場合です。
  • トランスフォーマの出力にStAXResultを指定する。
  • XSLTスタイルシートまたはトランスフォーマの出力プロパティに,次に示すプロパティのうち,どれかを指定する。
  omit-xml-declaration
  doctype-system
  doctype-public
  cdata-section-elements
 
[Cosminexus XML Processorの動作]
プロパティは無効になります。
9[条件]
次のすべての条件に該当する場合です。
  • トランスフォーマの出力にStAXResultを指定する。
  • XSLTスタイルシートまたはトランスフォーマの出力プロパティに,次に示すプロパティのうち,どちらかに不当な値を指定する。
  version
  encoding
 
[Cosminexus XML Processorの動作]
指定は無効になります。エラーは通知されません。
10[条件]
次のすべての条件に該当する場合です。
  • トランスフォーマの出力にStAXResultを指定する。
  • XSLTスタイルシート内のxsl:text要素のdisable-output-escaping属性に「yes」を指定する。
 
[Cosminexus XML Processorの動作]
disable-output-escaping属性に「yes」を指定したxsl:text要素の内容はエスケープされません。そのままトランスフォーマの出力結果に出力されます。また,出力する文字列の前後には,次のような処理命令が追加されます。
(例)
<?javax.xml.transform.disable-output-escaping ?>&lt;<?javax.xml.transform.enable-output-escaping ?>
11[条件]
次のすべての条件に該当する場合です。
  • トランスフォーマの出力にStAXResultを指定する。
  • XSLTスタイルシートまたはトランスフォーマの出力プロパティの設定で,出力メソッドに「xml」を指定する。
  • 出力ツリーのルート要素の前(プロローグ部分)に文字を出力する。
 
[Cosminexus XML Processorの動作]
トランスフォーマの出力結果のXML宣言より前に文字を出力します。
12StAXはShift_JIS 切り替え機能をサポートしていません。
Shift_JIS 切り替え機能を指定したDOM パーサ,またはSAX パーサによって作成されたNode,Source,Result などをStAXのAPIの引数として渡した場合の動作は保証しません。
13StAXはShift_JIS 切り替え機能をサポートしていません。
XSLTまたはXSLTCトランスフォーマの入出力に,StAXSourceまたはStAXResultを使用した場合の動作は保証しません。
14Validatorクラスのvalidate(Source, Result)メソッドの引数に,StAXSourceとStAXResultを指定する場合,StAXSourceとStAXResultには同じエンコーディングを指定してください。
15XSLTに次のフィーチャーが追加されましたが,Cosminexus XML Processorは常にfalseを返します。
  • http://javax.xml.transform.stax.StAXSource/feature
  • http://javax.xml.transform.stax.StAXResult/feature