赤紫蘇2 リファレンス

ライブラリの構成と機能

akaxiso2.0-beta3


赤紫蘇2リファレンス

1.概要
1.1 赤紫蘇2の構成
1.2 プログラムの
開始から終了まで
1.3 文字コードと
文字コード変換エンジン
1.4 名前空間とQName
1.5 マルチスレッディング

2. 赤紫蘇2データモデル
2.1 チュートリアル
2.2 パーティクル
2.3 aka:sequence
2.3.1 単純型の子要素
2.3.2 複合型の子要素
2.3.1 配列型
2.4 aka::all
2.5 aka:choice
2.5.1 複雑型の子要素
2.5.2 単純型の子要素
2.5.3 バインダクラス
2.5.4 子要素オブジェクト
(aka::item)の扱い
2.5.5 子要素の出現頻度
2.6 属性
2.7 aka:simpleContent
2.8 単純型(aka:simleType)
2.8.1

組み込み型

2.9

配列とポインタ

2.,10 ワイルドカード

3 XMLによる永続化
3.1 シリアライズ
3.2 デシリアライズ

付表
A ライブラリ主要API
B XML Schemaとの
機能対応表
C リリースノート

赤紫蘇2の構成図を以下に示します。

青背景の部分が、XML文書(入力・出力)、赤い斜線の背景部分は赤紫蘇2ライブラリ本体が持つ機能であり、緑色の背景の部分が、ユーザによる実装となります。ユーザは、ユーザ定義ドキュメントに対応するシリアライザブルなオブジェクト(C++クラス)と、XML型情報クラス(leafクラス)を定義することで、XML文書のデシリアライズ・シリアライズを行うことができます。

構成図に現れるブロックは、以下の機能を持ちます。それぞれのブロックの詳細については、文中のリンクをご参照ください。

・シリアライザブルオブジェクト(C++クラス)

シリアライズされる、もしくは、デシリアライズ時に構築されるC++のオブジェクトです。XML文書として書き出される、または、XML文書から読み込まれた値を持ちます。ユーザが必要に応じて定義します。

・leafクラス(XML型情報クラス)

シリアライザブルなC++オブジェクトのクラスに対して定義されるXML型情報を保持するクラスです。

構造体のメンバとXMLのタグ名との対応付けや、単純型のテキストの読み込み、書き出しの方法などが定義され、C++クラスのデシリアライズ、シリアライズを行う際に、XML文書の型情報を提供します。

赤紫蘇2は、固有のデータモデルを持ち、XMLスキーマにより定義されるデータモデルに準じた構造を構築することができます。定義は、leafクラスを用いて定義されます。leafクラスの定義については、「第2章 赤紫蘇2データモデル」をご参照ください。

・XMLパーサ

XML文書の構文解析を行います。赤紫蘇2の実装では、SAXパーサを必要とします。デフォルトでは、C言語で実装された、高速、軽量なXMLパーサであるexpatが使用されるようになっています。XMLパーサは、常に、Unicode(UCS-2、もしくは、UTF-8)の文書をパースするため、文字コード変換に対する責任を一切持ちません。

XMLスキーマによる妥当性検証が必要な場合には、妥当性検証機能つきのXMLパーサであるXerces-C++のSAX2パーサを用いることもできます。

それぞれのXMLパーサの使用、不使用は、UNIX環境では、configureスクリプトにより設定可能です。また、Windows環境では、マクロ定義により切り替えることが可能です。Getting Startedドキュメント中の「ダウンロードとビルド」をご参照ください。

・文字コード変換

XML文書の文字コードをUnicodeに変換し、XMLパーサに渡したり、UnicodeをOSで使われるローカルなエンコーディング(WindowsではShift_JIS、Unix環境ではeucJPなど)に変換するなどの、文字コード変換を行います。

文字コード変換は、外部のライブラリに依存します。使用可能なライブラリは、UNIX環境では、iconv、ICUの二つから選択可能です。また、Windowsでは、通常のWIN32の文字コード変換関数(WideCharToMutiByte()など)を用いた変換、MLangを用いた変換、ICUを用いた変換から選択可能です。

それぞれの文字コード変換エンジンの選択は、UNIX環境では、configureスクリプトにより設定可能です。また、Windows環境では、マクロの定義により切り替えることが可能です。詳細については、1.3 文字コードと文字コード変換エンジンをご参照ください。

・シリアライザ

C++オブジェクトと、対応するleafクラスを参照し、XML文書を生成します。シリアライズ時のコード例については、3.1 シリアライズをご参照ください。

・デシリアライザ

XML文書に対応するC++オブジェクトを、leafクラスを参照しながら構築します。この際のXML文書 -> C++オブジェクトのマッピングを行うためのエンジンとなります。また、デシリアライズ時に、赤紫蘇データモデルによる妥当性検証を行います。機能的には、XMLスキーマによる妥当性検証のサブセットとなります。デシリアライズ時のコード例については、3.2 デシリアライズをご参照ください。


赤紫蘇2トップへ sourceforgeプロジェクトページへ