赤紫蘇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 リリースノート

C++の組み込み型や、データモデル記述に必要となる特殊なクラス(xs:anyTypeなど)について、(デ)シリアライズが可能なように、赤紫蘇2は、leafクラスの実装を提供しています。また、XMLスキーマの、Schema DataTypesにおいて定義される単純型についても、クラスの宣言とleafクラスの実装を提供しています。これらについて、説明します。

赤紫蘇2の組み込み型

赤紫蘇はライブラリ本体の機能として、以下のC++組み込み型、文字列型のシリアライズを行うことができます。leafクラスは、xiso::leaf<単純型>として使用することができます。

整数 最小値 最大値 XML Schema組み込み型との対応
char -128 127 xs:byte
unsigned char 0 255 xs:unsignedByte
short -32768 32767 xs:short
unsigned short 0 65535 xs:unsigned short
long -2^31 2^31 - 1 xs:int, xs:integer
unsinged long 0 2^32 - 1 xs:unsignedInt
LONGLONG
(long long)
-2^63 2^63 - 1 xs:long
ULONGLONG
(unsigned long long)
0 2^64 - 1 xs:unsignedLong
int *1 *1 対応する型はなし
*1 処理系依存

ブール型 XMLスキーマ組み込み型との対応
bool true
false
0
1
(シリアライズ時にはtrue/falseが使われる。)
xs:boolean

浮動小数点型 XMLスキーマ組み込み型との対応
float xs:float
double xs:double

文字列型 XMLスキーマ組み込み型との対応
std::string xs:string

赤紫蘇では、シリアライザブルなオブジェクトがXMLスキーマにおける型を表現できるように、以下のクラスを定義しています。
以下のクラスもシリアライザブルです。

赤紫蘇組み込み型 XML Schema組み込み型との対応
aka::nill 対応無し。空要素を明示的に指定するために使用
aka::any xs:anyType
aka::any_array xs:anyTypeの配列版
aka::item xs:choiceの子要素を表現するために使用
aka::deep_ptr<> スマートポインタ。
ただし、コピー時には、保持するポインタのコピーも作成する。
minOccurs=0 maxOccurs=1の場合にのみ、使用可。

XMLスキーマの組み込み型

XML Schemaの組み込み型は、xs:QNameを除き、単純に、std::stringのtypedeff名となっています。
また、読み込み、書き出しのロジックは、特別な記述がない限り、xiso::leaf<std::string>を用います。
このため、妥当性検証は、行われません。妥当性検証は、形式や値チェックを妥当性検証機能を持ったleafクラスをユーザが実装することで、可能となります。

XML Schema組み込み型 マップされるC++クラス leafクラス*2
base64Binary std::string
hexBinary std::string
string std::string
normalizedString std::string
token std::string
positiveInteger std::string
negativeInteger std::string
nonPositiveInteger std::string
positiveInteger std::string
nonNegativeInteger std::string
decimal std::string
time std::string
dateTime std::string
duration std::string
time std::string
dateTime std::string
duration std::string
gMonth std::string
gYear std::string
gYearMonth std::string
gDay std::string
gMonthDay std::string
Name std::string
QName aka::qname xs::QNameLeaf,
xs::QNameRefLeaf
NCName std::string
anyURI std::string
language std::string
ID std::string
IDREF std::string
IDREFS std::string
ENTITY std::string
ENTITIES std::string
NOTATION std::string
NMTOKEN std::string
NMTOKENS std::string

*2 : 空欄の場足、xs::leaf<std::string>が用いられる。


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