|  |  | 赤紫蘇２．リファレンス
|  | aka:simplecontent
| akaxiso2.0-beta2 |
| 赤紫蘇２リファレンス はじめに 1. 概要 2. ライブラリAPI 3.名前空間とQName 4.単純型 5. 組み込み型 6. 配列 7. ポインタ 8. データモデル 9. aka:sequence 9.1 メンバ定義(単純型) 9.2 メンバ定義(複雑型) 9.3 出現頻度定義 10. aka:all 11 aka:choice 11.1 要素の定義 11.2 固定値の定義 11.3 binderクラス 11.4 itemの扱い 11.5 出現頻度定義 12 aka:simplecontent 13 属性 14 シリアライズ 15 デシリアライズ 16 XMLスキーマ機能対応表 |  | aka:simplecontentは、xs:simpleContentに対応する赤紫蘇データモデルの要素です。 単純型を値として持つXML要素に対応します。また、単純型を拡張し、属性を持たせる用途にも使います。以下に例を示します。
    <?xml version="1.0"?>
    <example attribute="test">value</example>
<example>要素が、aka:simplecontentの例となります。単純型の値が、"value"となりますが、これに属性、@attributeを与えています。 aka:simplecontent<>クラスの宣言は、以下のとおりです。
    namespace aka {
      template<class T, class L=xiso::leaf<V> > class simlecontent;
    }
class Tは値クラスの型です。Lはleafクラスであり、デフォルトとして、xiso::leaf<T>が割り当てられています。aka:simplecontent内で、単純型の値を定義するには、value()メソッドを用います。
    template<class V, class P>
    static void value(V P::* m);
属性の宣言については、13 属性をご参照ください。 例に示したXML文書に対応するaka:simplecontentの実装は、以下のとおりとなります。
    struct example {
      std::string value_;
      std::string attribute_;
    };

    struct example_leaf : aka::simplecontent<example, example_leaf> {
      void model() {
        value(&example::value_);
        attribute("attribute", &example::attribute_);
      }
    };
単純型の値として、固定値(fixed)を指定することもできます。 固定値を用いる場合には、value()メソッドの変わりに、以下のstruct fixed_value<>テンプレートクラスを用います。
    template<class V>
    struct fixed_value {
      fixed_value(const std::string &fixed);
      template<class VL>
      fixed_value(const std::string &fixed, const VL &);
    };
はじめに挙げたXML文書例の、"value"が、固定値となる場合、実装例は以下のとおりです。
    struct example {
      std::string attribute_;
    };

    struct example_leaf : aka::simplecontent<example, example_leaf> {
      void model() {
        fixed_value<std::string>("value");
        attribute("attribute", &example::attribute_);
      }
    };

リファレンストップへ 赤紫蘇２トップへ sourceforgeプロジェクトページへ