Shift_JIS切り替え機能は,XML文書のencoding属性にShift_JISが指定されている場合に,XML Processorが適用する文字エンコーディングをSJIS(x-sjis-jdk1.1.7)またはMS932(x-sjis-cp932)に切り替える機能です。XML文書のencoding指定と適用される文字エンコーディングとの対応を次の表に示します。
表3-1 XML文書のencoding指定と適用される文字エンコーディングとの対応
XML文書のencoding指定 | Shift_JIS切り替え機能の指定 | 適用される文字エンコーディング |
---|
Shift_JIS | 指定なし | SJIS(デフォルト) |
SJIS | SJIS |
MS932 | MS932 |
Windows-31J | - | MS932 |
- (凡例)
- -:指定できません。
Shift_JIS切り替え機能の指定は,XMLパーサやXSLTトランスフォーマのインスタンスに特定のプロパティを設定することで行います。プロパティの設定方法については「4.5 Shift_JIS切り替え機能のプロパティの使用方法」を参照してください。
Shift_JIS切り替え機能によるエンコーディング指定は,次のものに対して適用されます。それ以外には適用されません。
- 入力XML文書のencoding属性
- InputSourceオブジェクトに設定されたエンコーディング
- スタイルシート内のxsl:output要素のencoding属性に"Shift_JIS"を指定した場合,または,javax.xml.transform.TransformerクラスのsetOutputProperty,setOutputPropertiesメソッドで"Shift_JIS"エンコーディングを指定した場合の,出力文字ストリーム
ただし,次の場合は注意が必要です。
- DOMパーサ,SAXパーサの入力ソースにInputSourceオブジェクトを指定する場合
InputSourceオブジェクトにShift_JIS以外のエンコーディングを設定したときには,Shift_JIS切り替え機能は無効になります。また,InputSourceオブジェクトにReaderが設定されているときにも,Shift_JIS切り替え機能は無効になり,Readerのエンコーディングが適用されます。
- XSLTまたはXSLTCトランスフォーマの入力ソースにStreamSourceオブジェクトを指定する場合
StreamSourceオブジェクトにReaderが設定されているときには,Shift_JIS切り替え機能は無効になり,Readerのエンコーディングが適用されます。
- XSLTまたはXSLTCトランスフォーマの入力ソースにDOMSourceオブジェクトを指定する場合
DOMSourceが生成された時点でXML文書は文字コード変換済みなので,Shift_JIS切り替え機能は無効になります。
Shift_JIS切り替え機能を有効にするためには,DOMSourceに設定するDOMノードの生成時に利用するパーサに対して,あらかじめShift_JIS切り替え機能を指定しておく必要があります。
- XSLTまたはXSLTCトランスフォーマの入力ソースにSAXSourceオブジェクトを指定する場合
SAXSourceオブジェクトにInputSourceオブジェクトを設定したときには,1.と同じように注意が必要です。また,SAXSourceオブジェクトにXMLReaderオブジェクトを設定したときには,XMLReaderに指定されたShift_JIS切り替え機能が有効になります。
- Shift_JIS切り替え機能を指定したDOMパーサ,またはSAXパーサによって作成されたNode,Source,ResultなどをJAXBのAPIの引数として渡した場合
JAXBは,Shift_JIS切り替え機能をサポートしていません。
- StAXはShift_JIS切り替え機能をサポートしていません。そのため,XSLTまたはXSLTCトランスフォーマの入出力に,次のどちらかを使用した場合の動作は保証しません。