3.1 Shift_JIS切り替え機能
Shift_JIS切り替え機能は,XML文書のencoding属性にShift_JISが指定されている場合に,XML Processorが適用する文字エンコーディングをSJIS(x-sjis-jdk1.1.7)またはMS932(x-sjis-cp932)に切り替える機能です。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トランスフォーマの入出力に,次のどちらかを使用した場合の動作は保証しません。
-
StAXSource
-
StAXResult
-