赤紫蘇2 リファレンス

XMLスキーマ機能対応表

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

8. データモデルで述べたように、赤紫蘇データモデルは、XMLスキーマのデータモデルを表現できるよう、作成されています。以下の表で、XMLスキーマのデータモデル内の要素と、赤紫蘇データモデルとの対応を示します。

XMLスキーマ要素 値クラス XML型情報(leafクラス)
schema/element インスタンシングできるクラス aka::doctype()を用いて、ドキュメントのトップノードであることを明示。
schema/complexType インスタンシングできるクラス leaf<>クラスが定義されていること。
schema/attribute N.A. 参照するクラスにおいて定義された型を引用
sequence インスタンシングできるクラス。
メンバを要素の値として使用。
leaf<>クラスにおいて、aka::sequence<>を継承する。また、leaf<>クラス内のvoid model()メソッドで内で、要素を定義。
choice aka::itemを値として持つSTLコンテナにより実装。 aka::sequential_choice<>、
aka::associative_choice<>によりleaf<>クラスを定義。
all インスタンシングできるクラス。
クラスのメンバを要素の値として使用。
leaf<>クラスにおいて、aka::all<>を継承する。leaf<>クラス内のvoid model()メソッドで、要素を定義。
simpleContent インスタンシングできるクラス。
メンバを値、属性をとする。
leaf<>クラスにおいて、aka::simplecontent<>を継承し、void model()メソッドで、要素を定義。
attribute
(complexType内)
クラスのメンバを属性値として使用。 sequence、all、simpleContentの場合に定義可能。クラスのメンバとして表現される。
  • attribute@default
    (complexType内)
N.A. voide model()メソッド内、attribute()クラスのset_default()メソッドにて定義。パース時にメンバに設定されたデフォルト値を書き込む。
  • attribute@fixed
    (complexType内)
N.A. void model()メソッド内において、fixed_attribute<>クラスを用いて定義。leaf<>クラス内のみで定義される。
  • attribute@use
    (complexType内)
N.A. voide model()メソッド内の、member()クラスのrequired(bool val)メソッドにて定義。
element
(sequence、all内)
all、sequenceクラス内のメンバが要素値となる。 leafクラス内のvoid model()メソッドで、member()、ptrmember()を用いて定義。
element
(choice内)
aka::itemに格納されるオブジェクト。 leafクラス内のvoid model()メソッドで、item()を用いて定義。

element@default

N.A. void model()メソッド内、member()クラスのset_default()メソッドにて定義。パース時に、設定された値が、自動的に代入される。

element@fixed

N.A. void model()メソッド内において、fixed_attribute<>クラスを用いて定義。xisoクラス内のみで定義される。パース時に指定された値以外が読み込まれた時にパースエラーとする。

element@substitutionGroup

仕様未定 仕様未定
group complexTypeと同様にインスタンシングできるクラスであれば、groupになれる。グループは、all、sequence、choice以下で参照可能。 void model()メソッド内においての要素定義の再、タグ名の頭に"&"をつけることで定義。
choiceであれば、
item("&group名");
sequence、allであれば、
member("&group名")
とする。
any aka::any、aka::any_arrayとして、赤紫蘇が値クラスを定義。 void model()内で、any()を用いて、型情報を定義
"&"ではじめる適当な名前を付ける。(sequence、choiceとも同様)
ただし、namespaceList、processContentsに関しては、サポート無し。
anyType aka::any、aka::any_arrayとして、赤紫蘇が値クラスを定義。 void model()内で、any()を用いて、型情報を定義
タグ名を指定する。(sequence、choiceとも同様)
anyAttribute any_attributesクラスで受ける void model()内で、型情報を定義
ただし、namespaceList、processContentsに関しては、サポート無し。
attributeGroup 引用されるクラスにて、メンバとして属性値を定義 それぞれattributeGroupを参照するクラスにて、タグ名を定義する。
complexContent/restriction クラス/構造体を継承、もしくは、それぞれのクラスにおいて、メンバを定義 それぞれのleaf<>クラスにおいて、void model()内で、必要とされるメンバに対する型情報を定義。
complexContent/extension クラス/構造体を継承、もしくは、それぞれのクラスにおいて、メンバを定義 それぞれのleaf<>クラスにおいて、void model()内で、必要とされるメンバに対する型情報を定義。
simpleType
extension/restriction
ユーザが単純型検証ロジックを書き足すことで対応可能。 ユーザがaka::simpletype<>を使用し、単純型を定義する。
keybase/keyref 対応せず。 対応せず。
element、complexTypeの@abstract, @block, @final N.A. N.A.


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