18 Oracle XML Developer's Kit for Cの開始

Oracle XML Developer's Kit (XDK) for Cを使用するための準備について説明します。

トピック:

18.1 XDK for Cコンポーネントのインストール

XDK for Cコンポーネントは、Extensible Markup Language (XML)の読取り、操作、変換および検証を行うための基本コンポーネントです。XDK for Cコンポーネントは、Oracle Databaseに付属しています。

この章では、Oracle DatabaseとともにXDKをインストールし、Oracle Database Examplesメディアのデモ・プログラムもインストールしたと想定します。インストールの手順およびXDKディレクトリ構造の説明は、「XDKのインストールについて」を参照してください。

次の一連の例は、XDKデモとXDKコンポーネントで使用されるライブラリのUNIXディレクトリ構造を示しています。サブディレクトリには、XDK for Cコンポーネントのサンプル・プログラムとデータ・ファイルが入っています。

例18-1に、CのOracleホーム・ディレクトリの下のメイン・ディレクトリを示します。

このメイン・ディレクトリの下に、各サブディレクトリの内容が個別に表示されます。

binディレクトリには、次のコンポーネントが含まれます。

         schema
         xml
         xmlcg
         xsl
         xvm

libディレクトリには、次のコンポーネントが含まれます。

         libcore11.a
         libcoresh11.so
         libnls11.a
         libunls11.a
         libxml11.a
         libxmlsh10.a

xdkディレクトリには、次のdemoサブディレクトリが含まれます。

         | demo/
            | - c/
                 | - dom/
                 | - parser/
                 | - sax/
                 | - schema/
                 | - webdav/
                 | - xslt/
                 | - xsltvm/

/xdk/demo/cサブディレクトリには、XDK for Cコンポーネントのサンプル・プログラムとデータ・ファイルが含まれます。「Oracle XML Developer's Kit for C」の章で、これらのプログラムを使用して最も重要なC言語の機能を理解する方法について説明しています。

xdkディレクトリには、次のincludeサブディレクトリも含まれます。

         | include/
            oratypes.h
            oraxml.h
            oraxmlcg.h
            oraxsd.h
            xml.h
            xmlerr.h
            xmlotn.h
            xmlproc.h
            xmlsch.h
            xmlxptr.h
            xmlxsl.h
            xmlxvm.h

「UNIXでのXDK Cコンパイル時環境の設定とテスト」表18-4に、Cのヘッダー・ファイルを示しています。

例18-1 Oracle XML Developer's Kit for Cのライブラリ、ヘッダー・ファイル、ユーティリティおよびデモ

- $ORACLE_HOME
    | - bin/
    | - lib/
    | - xdk/

関連項目

18.2 XDK for Cコンポーネント用のUNIX環境の構成

このトピックでは、コンポーネントの依存性、環境変数、実行時環境とコンパイル時環境およびコンポーネント・バージョンについて説明します。

トピック:

18.2.1 UNIXでのXDK for Cコンポーネントの依存性

この項で説明するCライブラリは、$ORACLE_HOME/libにあります。

XDK for CおよびXDK for C++コンポーネントは、次のライブラリに含まれます。

libxml11.a

このライブラリに含まれるXKDコンポーネントは次のとおりです。

  • XMLパーサー: XML文書が整形式であるか、Document Type Definition (DTD)またはXML Schemaに対して妥当であるかどうか(オプション)を確認します。プログラム・アクセス用のDocument Object Model (DOM)およびSimple API for XML (SAX)インタフェースをサポートします。

  • Extensible Stylesheet Language Transformation (XSLT)プロセッサ: XML文書を別のXML文書に変換します。

  • XSLTコンパイラ: XSLTスタイルシートをコンパイルして、XSLT Virtual Machine (XSLT VM)によって使用されるバイトコードを生成します

  • XSLTVM: XSLT変換エンジンです。

  • XMLスキーマ・プロセッサ: XMLファイルをXMLスキーマに対して検証します。

表18-1に、XDK for Cコンポーネント(UNIX)が依存するCommon Oracle Runtime Environment (CORE)ライブラリおよびGlobalization Supportライブラリを示します。

表18-1 Oracle XML Developer's Kit for Cコンポーネントの依存ライブラリ(UNIX)

コンポーネント ライブラリ 説明

COREライブラリ

libcore11.a

複数プラットフォームにわたる移植性を実現するCランタイム関数を含みます。

CORE動的リンク・ライブラリ

libcoresh11.so

UNIXプラットフォームでの動的リンクをサポートするCランタイム・ライブラリ。

Globalization Support共通ライブラリ

libnls11.a

8ビット・エンコーディングのUnicode (UTF-8)、16ビット・エンコーディングのUnicode (UTF-16)およびISO-8859-1キャラクタ・セットがサポートされます。このライブラリは、エンコーディング・ファイルおよびメッセージ・ファイルの場所を特定する際に環境に依存します。

Unicode用のGlobalization Supportライブラリ

libunls11.a

『Oracle Databaseグローバリゼーション・サポート・ガイド』で説明しているキャラクタ・セットをサポートします。このライブラリは、エンコーディング・ファイルおよびメッセージ・ファイルの場所を特定する際に環境に依存します。

18.2.2 UNIXでのXDK for C環境変数の設定

XDK for Cコンポーネントを使用するときに必要なUNIX環境変数について説明します。

表18-2 Oracle XML Developer's Kit for CコンポーネントのUNIXでの環境設定

変数 説明 設定

$ORA_NLS10

グローバリゼーション・サポート・キャラクタ・エンコーディング定義ファイルの場所を設定します。エンコーディング・ファイルは、Oracle Databaseで使用可能なキャラクタ・セットのサブセットを表します。

グローバリゼーション・サポート・データ・ファイルの場所を設定します。次のように変数を設定します。

setenv ORA_NLS10 $ORACLE_HOME/nls/data

$ORA_XML_MESG

XMLエラー・メッセージ・ファイルの場所を設定します。.msbで終わるファイルは、マシンで読取り可能な形式で、実行時に必要とされます。.msgで終わるファイルは、ユーザーが読取り可能な形式で、各エラーの原因および処理に関する説明が含まれます。

mesgディレクトリのパスを設定します。次に例を示します。

setenv ORA_XML_MESG $ORACLE_HOME/xdk/mesg

$PATH

XDK for C実行可能ファイルの場所を設定します。

次のようにPATHを設定します。

setenv PATH ${PATH}:${ORACLE_HOME}/bin

18.2.3 UNIXでのXDK for C実行時環境のテスト

いくつかのユーティリティを実行して、UNIX実行時環境でXDK for Cをテストできます。

これらのユーティリティを表18-3に示します。

表18-3 Oracle XML Developer's Kit for C/C++ユーティリティ(UNIX)

実行可能ファイル ディレクトリ 説明

schema

$ORACLE_HOME/bin

C XMLスキーマ・バリデータ

xml

$ORACLE_HOME/bin

C XMLパーサー

xmlcg

$ORACLE_HOME/bin

C++ Class Generator

xvm

$ORACLE_HOME/bin

C XVMプロセッサ

オプションを付けないでこれらのユーティリティを実行すると、使用方法のヘルプが表示されます。詳細な使用方法の情報を表示するには、-hhフラグを付けてユーティリティを実行します。

18.2.4 UNIXでのXDK Cコンパイル時環境の設定とテスト

XDK Cコンパイル時UNIX環境を設定およびテストする方法について説明します。

表18-4 に、XDK for Cコンポーネントのコンパイルに必要なヘッダー・ファイルを示します。これらのファイルは、$ORACLE_HOME/xdk/includeにあります。コードをコンパイルする前に、実行時環境を設定する必要があります。

表18-4 Oracle XML Developer's Kit for Cコンパイル時環境のヘッダー・ファイル

ヘッダー・ファイル 説明

oratypes.h

Oracle Cプライベート・データ型をインクルードします。

oraxml.h

Oracle9i XML Open Reporting Application (ORA)データ型およびlibxml.aに含まれるパブリックなORA APIをインクルードします(下位互換性のみを目的としています)。かわりにxml.hを使用してください。

oraxmlcg.h

C++ Class Generator用のC APIをインクルードします(下位互換性のみを目的としています)。

oraxsd.h

Oracle9i XMLスキーマ定義(XSD)バリデータのデータ型およびアプリケーション・プログラミング・インタフェース(API)をインクルードします(下位互換性のみを目的としています)。

xml.h

Oracle Call Interface (OCI)経由で使用するか単独で使用するかにかかわらず、統合されたDOM APIを透過的に処理します。非推奨となったoraxml.hに置き換わります。

xmlerr.h

XMLエラーとエラーの番号をインクルードします。

xmlotn.h

単独でコンパイルするか、OCIを使用するかに応じて、その他のヘッダーをインクルードします。

xmlproc.h

libxml11.aのOracle XMLデータ型とXMLパブリック・パーサーのAPIをインクルードします。

xmlsch.h

Oracle XSDバリデータのパブリックAPIをインクルードします。

xmlptr.h

現在はマニュアルでの説明もサポートもされていない、XPointerのデータ型とAPIをインクルードします。

xmlxsl.h

XSLTプロセッサのデータ型とパブリックAPIをインクルードします。

xmlxvm.h

XSLTコンパイラとVMのデータ型とパブリックAPIをインクルードします。

トピック:

18.2.4.1 UNIXでのXDK for Cコンパイル時環境のテスト

コンパイル時環境でXDK for Cをテストする最も簡単な方法は、Oracle Database CDではなくExamplesメディアにあるサンプル・プログラムに対して、makeユーティリティを実行することです。

デモをインストールすると、$ORACLE_HOME/xdk/demo/cに配置されます。同じディレクトリにあるREADMEに、コンパイルの手順と使用上の注意が示されています。

サンプル・プログラムをビルドし、実行します。そのためには、システム・プロンプトで次のコマンドを実行します。

cd $ORACLE_HOME/xdk/demo/c
make

18.2.5 UNIXでのXDK for Cコンポーネントのバージョンの検証

所有しているXDKのバージョンを確認する方法について説明します。

使用しているXDKのバージョンを取得するには、ディレクトリを$ORACLE_HOME/libに移動し、次のコマンドを実行します。

strings libxml11.a | grep -i developers

18.3 XDK Cコンポーネント用のWindows環境の構成

このトピックでは、コンポーネントの依存性、環境変数の設定、実行時環境のテスト、コンパイル時環境の設定とテストおよびMicrosoft Visual StudioのVisual C++について説明します。

トピック:

18.3.1 WindowsでのXDK for Cコンポーネントの依存性

この項で説明するCライブラリは、%ORACLE_HOME%\libにあります。

XDK for Cコンポーネントは、次のライブラリに含まれます。

libxml11.dll

このライブラリに含まれるXDKコンポーネントは次のとおりです。

  • XMLパーサー

  • XSLTプロセッサ

  • XSLTコンパイラ

  • XSLT VM

  • XML Schema Processor

表18-5に、XDK for Cコンポーネント(Windows)が依存するOracleのCOREライブラリおよびGlobalization Supportライブラリを示します。

表18-5 Oracle XML Developer's Kit for Cコンポーネントの依存ライブラリ(Windows)

コンポーネント ライブラリ 説明

COREライブラリ

libcore11.dll

複数プラットフォームにわたる移植性を実現するランタイム関数を含みます。

Globalization Support共通ライブラリ

libnls11.dll

UTF-8、UTF-16およびISO-8859-1のキャラクタ・セットをサポートします。このライブラリは、エンコーディング・ファイルおよびメッセージ・ファイルを見つける際に環境に依存します。

Unicode用のGlobalization Supportライブラリ

libunls11.dll

『Oracle Databaseグローバリゼーション・サポート・ガイド』で説明しているキャラクタ・セットをサポートします。このライブラリは、エンコーディング・ファイルおよびメッセージ・ファイルを見つける際に環境に依存します。

18.3.2 WindowsでのXDK for C環境変数の設定

XDK for Cコンポーネントを使用するときに必要なWindows環境変数について説明します。

表18-6 Oracle XML Developer's Kit for CコンポーネントのWindowsでの環境設定

変数 説明 設定

%ORA_NLS10%

グローバリゼーション・サポート・キャラクタ・エンコーディング定義ファイルの場所を設定します。エンコーディング・ファイルは、Oracle Databaseで使用可能なキャラクタ・セットのサブセットを表します。

この変数には、グローバリゼーション・サポート・データ・ファイルの場所を設定します。次のように変数を設定します。

set ORA_NLS10=%ORACLE_HOME%\nls\data

%ORA_XML_MESG%

XMLエラー・メッセージ・ファイルの場所を設定します。.msbで終わるファイルは、マシンで読取り可能な形式で、実行時に必要とされます。.msgで終わるファイルは、ユーザーが読取り可能な形式で、各エラーの原因および処理に関する説明が含まれます。

mesgディレクトリのパスを設定します。次に例を示します。

set ORA_XML_MESG=%ORACLE_HOME%\xdk\mesg 

%PATH%

XDK for Cのデータ定義言語(DLL)および実行可能ファイルの場所を設定します。

次のようにPATHを設定します。

path %path%;%ORACLE_HOME%\bin

18.3.3 WindowsでのXDK for C実行時環境のテスト

いくつかのユーティリティを実行して、Microsoft Windows実行時環境でXDKをテストできます。

これらを表18-7に示します。

例18-7 Oracle XML Developer's Kit for C/C++ユーティリティ(Windows)

実行可能ファイル ディレクトリ 説明

schema.exe

%ORACLE_HOME%\bin

C XMLスキーマ・バリデータ

「C XML Schema Processorコマンドライン・ユーティリティの使用」も参照してください

xml.exe

%ORACLE_HOME%\bin

C XMLパーサー

「C XML Parserコマンドライン・ユーティリティの使用」も参照してください

xmlcg.exe

%ORACLE_HOME%\bin

C++ Class Generator

「XML C++ Class Generatorコマンドライン・ユーティリティの使用」も参照してください

xvm.exe

%ORACLE_HOME%\bin

C XVMプロセッサ

「XVM Processorコマンドライン・ユーティリティの使用」も参照してください

オプションを付けないでこれらのユーティリティを実行すると、使用方法のヘルプが表示されます。詳細な使用方法の情報を表示するには、-hhフラグを付けてユーティリティを実行します。

18.3.4 WindowsでのXDK for Cコンパイル時環境の設定とテスト

コードをコンパイルする前に、実行時環境を設定する必要があります。

「UNIXでのXDK Cコンパイル時環境の設定とテスト」表18-4に、WindowsでのCコンポーネントのコンパイルに必要なヘッダー・ファイルを示しています。UNIXのインストールとWindowsのインストールの両方で、相対ファイル名は同じです。

Windowsでは、ヘッダー・ファイルは%ORACLE_HOME%\xdk\includeにあります。

トピック:

18.3.4.1 WindowsでのXDK for Cコンパイル時環境のテスト

デモ・プログラムをコンパイルすることにより、コンパイル時環境でXDK for Cをテストできます。

これらは、Oracle Database Examplesメディアからインストールした後は%ORACLE_HOME%\xdk\demo\cにあります。同じディレクトリにあるREADMEファイルに、コンパイルの手順と使用上の注意が示されています。デモ・プログラムをコンパイルする前に、「WindowsでのMake.batファイルの編集」の説明に従ってMake.batファイルを編集してください。

トピック:

18.3.4.1.1 WindowsでのMake.batファイルの編集

フォルダ%ORACLE_HOME%\xdk\demo\cの各サブフォルダに、Make.batファイルがあります。ライブラリおよびヘッダー・ファイルのパスをCOMPILEコマンドに追加して、各フォルダのMake.batファイルを更新する必要があります。/libpath:%ORACLE_HOME%\libですでにCライブラリが指定されているので、:LINKセクションのパスを編集する必要はありません。

例18-2Make.batファイルのセクションでは、追加する必要があるパスを太字のテキストで示しています。

例18-2 Oracle XML Developer's Kit for CのMake.batファイルの編集(Windows)

:COMPILE
set filename=%1
cl -c -Fo%filename%.obj %opt_flg%  /DCRTAPI1=_cdecl /DCRTAPI2=_cdecl /nologo /Zl
/Gy /DWIN32 /D_WIN32 /DWIN_NT /DWIN32COMMON /D_DLL /D_MT /D_X86_=1 
/Doratext=OraText -I. -I..\..\..\include -I%ORACLE_HOME%\xdk\include %filename%.c
goto :EOF
 
:LINK 
set filename=%1
link %link_dbg% /out:..\..\..\..\bin\%filename%.exe 
/libpath:%ORACLE_HOME%\lib /libpath:..\..\..\..\lib 
%filename%.obj oraxml10.lib user32.lib kernel32.lib msvcrt.lib ADVAPI32.lib 
oldnames.lib winmm.lib
18.3.4.1.2 WindowsでのXDK for Cコンパイラ・パスの設定

Microsoft Windowsでcl.exeコンパイラのパスを設定する方法について説明します。

デモ・ファイルmake.batでは、Microsoft .NET Framework Software Development Kit (SDK)に含まれている無償のcl.exeコンパイラの使用を想定しています。

Microsoft Windowsでcl.exeコンパイラのパスを設定するには、次の手順を実行します。

  1. 「スタート」メニュー→「設定」「コントロール パネル」を選択します。
  2. 「システム」をダブルクリックします。
  3. 「システムのプロパティ」ダイアログ・ボックスで、「詳細」タブを選択し、「環境変数」をクリックします。
  4. 「システム環境変数」リストで「Path」を選択し、「編集」をクリックします。
  5. cl.exe のパスを%PATH%変数に追加し、「OK」をクリックします。

サンプル・プログラムをビルドし、実行します。そのためには、システム・プロンプトで次のコマンドを実行します。

cd $ORACLE_HOME/xdk/demo/c
make

18.3.5 Microsoft Visual StudioでのXDK for CコンポーネントとVisual C++の使用

Visual C++テンプレートでプロジェクトを設定し、XDKに付属しているデモに使用できます。

トピック:

18.3.5.1 Visual C++でのプロジェクト・パスの設定(Windows)

プロジェクトのパスを設定するには、次の手順を実行します。

  1. Visual C++でプロジェクトをオープンし、プロジェクト用の*.cファイルをインクルードします。
  2. 「Project」メニューに移動して「Properties」を選択します。
  3. Propertyページが表示されたら、「Configuration Properties」を展開して「VC++ Directories」を選択します。
  4. 右側の「General」の下で「Include Directories」を選択します。

    図18-1 プロパティ・ページ

    図18-1の説明が続きます
    「図18-1 プロパティ・ページ」の説明
  5. 行の末尾の矢印をクリックして、<Edit...>を示す2番目の行を選択します。
  6. Include Directoriesウィンドウが表示されたら、ツール・バーから「New Line」をクリックして図18-2の例に示すようにインクルード・パス%ORACLE_HOME%\xdk\includeを入力し、「OK」をクリックします。

図18-2 Visual C++でのインクルード・パスの設定

図18-2の説明が続きます
「図18-2 Visual C++でのインクルード・パスの設定」の説明
18.3.5.2 Visual C++でのライブラリ・パスの設定(Windows)

プロジェクトのライブラリ・パスを設定するには、次の手順を実行します。

  1. Visual C++でプロジェクトをオープンし、プロジェクト用の*.cファイルをインクルードします。
  2. 「Project」メニューに移動して「Properties」を選択します。
  3. Propertyページが表示されたら、「Configuration Properties」を展開して「VC++ Directories」を選択します。
  4. 右側の「General」の下で「Library Directories」を選択します。
  5. 行の末尾の矢印をクリックして、<Edit...>を示す2番目の行を選択します。
  6. Library Directoriesウィンドウが表示されたら、ツール・バーから「New Line」をクリックして図18-3の例に示すようにライブラリ・パス%ORACLE_HOME%\libを入力し、「OK」をクリックします。

    図18-3 Visual C++での静的ライブラリ・パスの設定

    図18-3の説明が続きます
    「図18-3 Visual C++での静的ライブラリ・パスの設定」の説明
  7. %ORACLE_HOME%\lib内の静的ライブラリのパスを設定した後、「Project」メニューに移動して「Properties」を選択します。
  8. Propertyページで、「Configuration Properties」の下で「Linker」を選択して展開し、「Input」を選択します。
  9. 「Additional Dependencies」を選択して、行の末尾の矢印をクリックします。<Edit...>を示す2番目の行を選択します。
  10. 追加の依存ファイル、oraxml9.liboraxmlg9.libおよびoraxsd9.lib図18-4に示すように入力して、「OK」をクリックします。

    図18-4 Visual C/C++プロジェクトでのライブラリ名の設定

    図18-4の説明が続きます
    「図18-4 Visual C/C++プロジェクトでのライブラリ名の設定」の説明

18.4 統合C APIの概要

統合C APIは、XDK for CおよびOracle XML DBの両方で必要とされる機能を統合したプログラム・インタフェースです。このAPIは、主にXSLTおよびXMLスキーマで使用されます。

表18-4に示すように、統合C APIはxml.hヘッダー・ファイルで宣言します。表18-8に、XDK for C APIの概要を示します。詳細は、『Oracle Database XML C APIリファレンス』を参照してください。

表18-8 Oracle XML Developer's Kit for C APIの概要

パッケージ 用途

コールバックAPI

XMLコールバックの関数(または関数ポインタ)を宣言するマクロを定義します。

DOM API

DOMを使用してXML文書を解析および操作します。このAPIはDOM 2.0仕様にできるだけ準拠していますが、オブジェクト指向のDOM仕様からフラットなCの名前空間へマッピングする際に、一部の名前を変更します。たとえば、オーバーロードされたgetName()メソッドをgetAttrName()に変更します。

範囲API

Rangeオブジェクトを作成および操作します。

SAX API

SAXを使用したイベントベースのXML解析を有効にします。

スキーマAPI

複数のXMLスキーマ文書から、特定のインスタンス・ドキュメントを検証するために使用できる単一のスキーマを作成します。

横断API

DOMツリーの文書の検索とナビゲーションを有効にします。

XML API

XMLデータの読取り方法およびアプリケーションに提供する必要がある情報について、XMLプロセッサを定義します。

XPath API

XPathに関連するタイプおよびインタフェースを処理します。

XPointer API

XML文書内のノードの場所を特定します。

XSLT API

XSL処理を実行します。

XSLTVM API

コンパイル済のXSLTコードを実行できる仮想マシンを実装します。

このAPIは、準拠するコンテキストによって関数の統合を実現します。最上位のXMLコンテキスト(xmlctx)は、連動するXMLコンポーネント間で共通の情報を共有します。このコンテキストは次のような情報を定義します。

  • データのエンコーディング

  • エラー・メッセージ言語

  • 下位の割当てコールバック

アプリケーションでは、DOMまたはSAXインタフェースを使用して文書を解析し、プログラム・アクセスを提供する前に、この情報が必要です。

XDK for CおよびOracle XML DBのどちらにおいても、最上位コンテキストおよびサービス・コンテキストに対し、異なる起動およびメモリー解放関数が必要です。初期化関数は実装固有の引数を取り、準拠するコンテキストを戻します。

準拠するコンテキストを使用すると、統合が可能です。準拠するコンテキストとは、戻されたコンテキストがxmlctxで始まる必要があることを意味します。この標準ヘッダーの後に、実装固有の追加部分が続く場合があります。

アプリケーションでは、xmlctxを取得した後は、統合されたDOMの起動を使用し、すべての起動においてxmlctxを最初の引数として使用します。

18.5 XDK for Cコンポーネントのグローバリゼーション・サポート

XDK for C Parserでは、300を超えるIANAキャラクタ・セットがサポートされています。

これらのキャラクタ・セットには、「XDK for Cがサポートするキャラクタ・セット」に示されているものが含まれます。

キャラクタ・セットを使用する場合の考慮事項を次に示します。

  • 他のXMLパーサーとの相互運用性を考慮し、Internet Assigned Numbers Authority (IANA)キャラクタ・セット名を使用することをお薦めします。

  • XMLパーサーでサポートが必須とされているのはUTF-8とUTF-16のみであるため、これらのキャラクタ・セットを使用することをお薦めします。

  • デフォルトの入力エンコーディング(インコーディング)はUTF-8です。入力文書のエンコーディングが(HTTPキャラクタ・セット、バイト・オーダー・マーク(BOM)、XMLDeclなどによって)自明ではない場合は、デフォルトの入力エンコーディングが想定されます。シングルバイト文字セット(US-ASCII、ISO 8859文字セットのいずれか)のみを使用している場合、シングルバイトのパフォーマンスが最もよいため、明示的にデフォルトのエンコーディングを設定することをお薦めします。フラグXML_FLAG_FORCE_INCODINGは、入力文書には常にデフォルトの入力エンコーディングを適用することを指定します。この場合、BOMまたはXMLDeclは無視されます。ただし、プロトコル宣言(HTTP文字セットなど)は常にサポートされます。

  • DOMおよびSAXのデータ・エンコーディング(アウトコーディング)は、慎重に選択してください。シングルバイト・エンコーディングは最速ですが、表示できる文字のセットは非常に限られています。次に高速なのはUnicode (UTF-16)で、最も遅いのは、UTF-8などのマルチバイト・エンコーディングです。入力データのアウトコーディングへの変換によりデータが失われると、エラーが発生します。最大限の効用を得るには、Unicodeベースのアウトコーディングを使用してください。アウトコーディングを指定しないと、デフォルトは、解析された最初のドキュメントのインコーディングに設定されます。