based on XML::Struct 0.10
documentation