struct XMLtree_t
{
string name;
children_t* children;
attribute_t* attributes;
}

struct children_t
{
std::vector X;
}

struct attribute_t
{
std::map Y
}

みたいなのを書いてみました。XとYはどんな名前がいいでしょうか?
ちなみにXとYをわざわざ別の構造体にしてるのは「存在しないとき」の方が多そうだから
NULLポインタ1個で済ませられればという理由です