赤紫蘇2 リファレンス

aka:simplecontent

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

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_);
  }
};


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