| 赤紫蘇２．リファレンス
| aka:sequence 複雑型メンバ
目次 1. 概要 2. ライブラリAPI 3. 組み込み型 4. 配列 5. ポインタ 6. データモデル 7. aka:sequence 7.1 メンバ定義(単純型) 7.2 メンバ定義(複雑型) 7.3 出現頻度定義 8. aka:all 9 aka:choice 10 属性 | 前節では、単純型のメンバに関する定義について、説明をしました。 本節では、クラス型のメンバに関する定義、グループ参照について、説明を加えます。 クラスをメンバとして持つ場合 クラスをメンバとして持つ場合にも、単純型と同様の定義を使用します。 ただし、グループ参照、xs:anyTypeの使用などの特別な用法がいくつかあります。 以下の拡張、制限が適用されます。 拡張 タグ名の頭に'&'を使用することで、そのタグは不可視となる。 すでにleafクラスを定義したクラスをメンバに持つ場合、タグ名を与えずに、定義済みクラスの内容を(デ)シリアライズすることができる。(xs:groupと等価な機能) 定義済みクラスとしてaka::any、aka::any_arrayを用いることができ、ワイルドカード要素の処理を可能とする。 制限 set_default()を使用の使用は、単純型のみに制限されており、クラスで定義される複合型には適用されない。 aka::any、aka::any_array型の使用 上記の拡張のうち、aka::any、aka::any_arrayについて、説明を加えます。 aka::any型を使用する場合には、any()を用います。
    template<class P>
    any(const std::string &tagname, aka::any P::* m);
aka::any型の配列であるaka::any_arrayを使用する場合、出現頻度指定つきのanyを使用します。
    template<class P>
    any(const std::string &tagname, aka::any_array P::* m, int minOccurs, int maxOccurs)
タグ名として、頭に'&'をつけた名前を与えた場合、<xs:any>と同様の機能となり、どのような要素が現れても、aka::any、aka::any_arrayに、書き込まれます。 また、頭に'&'をつけない場合、型として、xs:anyTypeを定義したことになり、名前を与えた要素の内容モデルがワイルドカードとなります。

ホームに戻る 赤紫蘇２プロジェクトページへ