    /* -*- c++ -*- */
    #ifndef element_h__
    #define element_h__

    #include <akaxiso/schema/schema_builtin.h>

    namespace xml {

      void instantiate_xiso();

      /** simpleType definitions */

      typedef ::xs::NCName space;

    }

    namespace xs {

      void instantiate_xiso();

      /** simpleType definitions */

      typedef ::std::string allNNI;

      typedef ::std::string blockSet;

      typedef ::xs::NMTOKEN derivationControl;

      typedef ::std::string derivationSet;

      typedef ::xs::NMTOKEN formChoice;

      typedef ::std::string fullDerivationSet;

      typedef ::std::string namespaceList;

      typedef ::xs::token _public;

      typedef ::xs::derivationControl reducedDerivationControl;

      typedef ::std::string simpleDerivationSet;

      typedef ::xs::derivationControl typeDerivationControl;

      /** complexType definitions */

      struct appinfo_sequence {
        /** members */
        ::aka::any any_;
      };

      typedef std::list< ::xs::appinfo_sequence> appinfo_sequence_holder;

      struct appinfo {
        /** members */
        ::xs::appinfo_sequence_holder s0_;
        /** attributes */
        ::xs::anyURI source_;
        aka::any_attributes attributes_;
      };

      struct documentation_sequence {
        /** members */
        ::aka::any any_;
      };

      typedef std::list< ::xs::documentation_sequence> documentation_sequence_holder;

      struct documentation {
        /** members */
        ::xs::documentation_sequence_holder s0_;
        /** attributes */
        ::xs::anyURI source_;
        ::xs::language lang_;
        aka::any_attributes attributes_;
      };

      typedef std::list<aka::item> annotation_choice;
      struct annotation {
        /** members */
        ::xs::annotation_choice c0_;
        /** attributes */
        ::xs::ID id_;
        aka::any_attributes attributes_;
      };

      struct annotated_sequence {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
      };

      typedef std::list<aka::item> allModel_c0;
      struct allModel {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        ::xs::allModel_c0 c0_;
      };

      struct all {
        /** members */
        ::xs::allModel allModel_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        ::xs::QName ref_;
        ::xs::nonNegativeInteger minOccurs_;
        ::xs::allNNI maxOccurs_;
        aka::any_attributes attributes_;
      };

      struct annotated {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        /** attributes */
        ::xs::ID id_;
        aka::any_attributes attributes_;
      };

      typedef ::xs::NMTOKEN wildcard_processContents;

      struct any {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        /** attributes */
        ::xs::ID id_;
        ::xs::namespaceList namespace_;
        ::xs::wildcard_processContents processContents_;
        ::xs::nonNegativeInteger minOccurs_;
        ::xs::allNNI maxOccurs_;
        aka::any_attributes attributes_;
      };

      struct anyType {
        /** members */
        ::aka::any_array any_;
        /** attributes */
        aka::any_attributes attributes_;
      };

      typedef std::list<aka::item> attrDecls_c0;
      struct wildcard {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        /** attributes */
        ::xs::ID id_;
        ::xs::namespaceList namespace_;
        ::xs::wildcard_processContents processContents_;
        aka::any_attributes attributes_;
      };

      struct attrDecls {
        /** members */
        ::xs::attrDecls_c0 c0_;
        aka::deep_ptr< ::xs::wildcard> anyAttribute_;
      };

      typedef std::list<aka::item> simpleDerivation;
      struct localSimpleType {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        ::xs::simpleDerivation simpleDerivation_;
        /** attributes */
        ::xs::ID id_;
        ::xs::simpleDerivationSet final_;
        ::xs::NCName name_;
        aka::any_attributes attributes_;
      };

      struct attribute_sequence {
        /** members */
        aka::deep_ptr< ::xs::localSimpleType> simpleType_;
      };

      typedef ::xs::NMTOKEN attribute_use;

      struct attribute {
        /** members */
        ::xs::annotated_sequence s0_;
        ::xs::attribute_sequence s1_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        ::xs::QName ref_;
        ::xs::QName type_;
        ::xs::attribute_use use_;
        ::std::string default_;
        ::std::string fixed_;
        ::xs::formChoice form_;
        aka::any_attributes attributes_;
      };

      struct attributeGroup {
        /** members */
        ::xs::annotated_sequence s0_;
        ::xs::attrDecls attrDecls_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        ::xs::QName ref_;
        aka::any_attributes attributes_;
      };

      struct attributeGroupRef {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        ::xs::QName ref_;
        aka::any_attributes attributes_;
      };

      struct groupRef {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        ::xs::QName ref_;
        ::xs::nonNegativeInteger minOccurs_;
        ::xs::allNNI maxOccurs_;
        aka::any_attributes attributes_;
      };

      struct facet {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        /** attributes */
        ::xs::ID id_;
        ::std::string value_;
        bool fixed_;
        aka::any_attributes attributes_;
      };

      struct totalDigits {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        /** attributes */
        ::xs::ID id_;
        ::std::string value_;
        bool fixed_;
        aka::any_attributes attributes_;
      };

      struct numFacet {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        /** attributes */
        ::xs::ID id_;
        ::std::string value_;
        bool fixed_;
        aka::any_attributes attributes_;
      };

      struct noFixedFacet {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        /** attributes */
        ::xs::ID id_;
        ::std::string value_;
        bool fixed_;
        aka::any_attributes attributes_;
      };

      struct whiteSpace {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        /** attributes */
        ::xs::ID id_;
        ::std::string value_;
        bool fixed_;
        aka::any_attributes attributes_;
      };

      struct pattern {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        /** attributes */
        ::xs::ID id_;
        ::std::string value_;
        bool fixed_;
        aka::any_attributes attributes_;
      };

      typedef std::list<aka::item> facets;
      struct simpleRestrictionModel {
        /** members */
        aka::deep_ptr< ::xs::localSimpleType> simpleType_;
        ::xs::facets facets_;
      };

      typedef std::list<aka::item> simpleRestrictionType_sequence_c0;
      struct simpleRestrictionType {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        aka::deep_ptr< ::xs::simpleRestrictionType_sequence_c0> c0_;
        ::xs::attrDecls attrDecls_;
        /** attributes */
        ::xs::ID id_;
        ::xs::QName base_;
        aka::any_attributes attributes_;
      };

      struct simpleExtensionType {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        ::xs::attrDecls attrDecls_;
        /** attributes */
        ::xs::ID id_;
        ::xs::QName base_;
        aka::any_attributes attributes_;
      };

      typedef std::list<aka::item> simpleContent_choice;
      struct simpleContent {
        /** members */
        ::xs::annotated_sequence s0_;
        ::xs::simpleContent_choice c0_;
        /** attributes */
        ::xs::ID id_;
        aka::any_attributes attributes_;
      };

      typedef std::list<aka::item> complexContent_choice;
      struct complexContent {
        /** members */
        ::xs::annotated_sequence s0_;
        ::xs::complexContent_choice c0_;
        /** attributes */
        ::xs::ID id_;
        bool mixed_;
        aka::any_attributes attributes_;
      };

      typedef std::list<aka::item> complexRestrictionType_sequence_c0;
      struct complexRestrictionType {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        aka::deep_ptr< ::xs::complexRestrictionType_sequence_c0> c0_;
        ::xs::attrDecls attrDecls_;
        /** attributes */
        ::xs::ID id_;
        ::xs::QName base_;
        aka::any_attributes attributes_;
      };

      typedef std::list<aka::item> complexTypeModel;
      struct complexType {
        /** members */
        ::xs::annotated_sequence s0_;
        ::xs::complexTypeModel complexTypeModel_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        bool mixed_;
        bool abstract_;
        ::xs::derivationSet final_;
        ::xs::derivationSet block_;
        aka::any_attributes attributes_;
      };

      struct localComplexType {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        ::xs::complexTypeModel complexTypeModel_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        bool mixed_;
        bool abstract_;
        ::xs::derivationSet final_;
        ::xs::derivationSet block_;
        aka::any_attributes attributes_;
      };

      typedef std::list<aka::item> localElement_sequence_c0;
      typedef ::xs::token selector_xpath;

      struct selector {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        /** attributes */
        ::xs::ID id_;
        ::xs::selector_xpath xpath_;
        aka::any_attributes attributes_;
      };

      typedef ::xs::token field_xpath;

      struct field {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        /** attributes */
        ::xs::ID id_;
        ::xs::field_xpath xpath_;
        aka::any_attributes attributes_;
      };

      typedef std::list< ::xs::field> field_array;

      struct keybase_sequence {
        /** members */
        ::xs::selector selector_;
        ::xs::field_array field_;
      };

      struct keybase {
        /** members */
        ::xs::annotated_sequence s0_;
        ::xs::keybase_sequence s1_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        aka::any_attributes attributes_;
      };

      struct keyref {
        /** members */
        ::xs::annotated_sequence s0_;
        ::xs::keybase_sequence s1_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        ::xs::QName refer_;
        aka::any_attributes attributes_;
      };

      typedef std::list<aka::item> identityConstraint;
      struct localElement {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        aka::deep_ptr< ::xs::localElement_sequence_c0> c0_;
        ::xs::identityConstraint identityConstraint_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        ::xs::QName ref_;
        ::xs::QName type_;
        ::xs::QName substitutionGroup_;
        ::xs::nonNegativeInteger minOccurs_;
        ::xs::allNNI maxOccurs_;
        ::std::string default_;
        ::std::string fixed_;
        bool nillable_;
        bool abstract_;
        ::xs::derivationSet final_;
        ::xs::blockSet block_;
        ::xs::formChoice form_;
        aka::any_attributes attributes_;
      };

      typedef std::list<aka::item> typeDefParticle;
      struct complexTypeModel_s0 {
        /** members */
        aka::deep_ptr< ::xs::typeDefParticle> typeDefParticle_;
        ::xs::attrDecls attrDecls_;
      };

      typedef std::list<aka::item> element_sequence_c0;
      struct element_sequence {
        /** members */
        aka::deep_ptr< ::xs::element_sequence_c0> c0_;
        ::xs::identityConstraint identityConstraint_;
      };

      struct element {
        /** members */
        ::xs::annotated_sequence s0_;
        ::xs::element_sequence s1_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        ::xs::QName ref_;
        ::xs::QName type_;
        ::xs::QName substitutionGroup_;
        ::xs::nonNegativeInteger minOccurs_;
        ::xs::allNNI maxOccurs_;
        ::std::string default_;
        ::std::string fixed_;
        bool nillable_;
        bool abstract_;
        ::xs::derivationSet final_;
        ::xs::blockSet block_;
        ::xs::formChoice form_;
        aka::any_attributes attributes_;
      };

      typedef std::list<aka::item> nestedParticle;
      struct explicitGroup {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        ::xs::nestedParticle nestedParticle_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        ::xs::QName ref_;
        ::xs::nonNegativeInteger minOccurs_;
        ::xs::allNNI maxOccurs_;
        aka::any_attributes attributes_;
      };

      struct extensionType_sequence {
        /** members */
        aka::deep_ptr< ::xs::typeDefParticle> typeDefParticle_;
        ::xs::attrDecls attrDecls_;
      };

      struct extensionType {
        /** members */
        ::xs::annotated_sequence s0_;
        ::xs::extensionType_sequence s1_;
        /** attributes */
        ::xs::ID id_;
        ::xs::QName base_;
        aka::any_attributes attributes_;
      };

      typedef std::list<aka::item> particle;
      struct group {
        /** members */
        ::xs::annotated_sequence s0_;
        ::xs::particle particle_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        ::xs::QName ref_;
        ::xs::nonNegativeInteger minOccurs_;
        ::xs::allNNI maxOccurs_;
        aka::any_attributes attributes_;
      };

      struct import {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        /** attributes */
        ::xs::ID id_;
        ::xs::anyURI namespace_;
        ::xs::anyURI schemaLocation_;
        aka::any_attributes attributes_;
      };

      struct include {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        /** attributes */
        ::xs::ID id_;
        ::xs::anyURI schemaLocation_;
        aka::any_attributes attributes_;
      };

      struct list_sequence {
        /** members */
        aka::deep_ptr< ::xs::localSimpleType> simpleType_;
      };

      struct list {
        /** members */
        ::xs::annotated_sequence s0_;
        ::xs::list_sequence s1_;
        /** attributes */
        ::xs::ID id_;
        ::xs::QName itemType_;
        aka::any_attributes attributes_;
      };

      struct namedAttributeGroup {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        ::xs::attrDecls attrDecls_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        ::xs::QName ref_;
        aka::any_attributes attributes_;
      };

      struct namedGroup_sequence_c0_all {
        /** members */
        ::xs::allModel allModel_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        ::xs::QName ref_;
        ::xs::nonNegativeInteger minOccurs_;
        ::xs::allNNI maxOccurs_;
        aka::any_attributes attributes_;
      };

      struct simpleExplicitGroup {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        ::xs::nestedParticle nestedParticle_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        ::xs::QName ref_;
        ::xs::nonNegativeInteger minOccurs_;
        ::xs::allNNI maxOccurs_;
        aka::any_attributes attributes_;
      };

      typedef std::list<aka::item> namedGroup_sequence_c0;
      struct namedGroup {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        ::xs::namedGroup_sequence_c0 c0_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        ::xs::QName ref_;
        ::xs::nonNegativeInteger minOccurs_;
        ::xs::allNNI maxOccurs_;
        aka::any_attributes attributes_;
      };

      typedef std::list<aka::item> narrowMaxMin_sequence_c0;
      struct narrowMaxMin {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        aka::deep_ptr< ::xs::narrowMaxMin_sequence_c0> c0_;
        ::xs::identityConstraint identityConstraint_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        ::xs::QName ref_;
        ::xs::QName type_;
        ::xs::QName substitutionGroup_;
        ::xs::nonNegativeInteger minOccurs_;
        ::xs::allNNI maxOccurs_;
        ::std::string default_;
        ::std::string fixed_;
        bool nillable_;
        bool abstract_;
        ::xs::derivationSet final_;
        ::xs::blockSet block_;
        ::xs::formChoice form_;
        aka::any_attributes attributes_;
      };

      struct notation {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        ::xs::_public public_;
        ::xs::anyURI system_;
        aka::any_attributes attributes_;
      };

      struct openAttrs {
        /** attributes */
        aka::any_attributes attributes_;
      };

      typedef std::list<aka::item> realGroup_sequence_c0;
      struct realGroup {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        aka::deep_ptr< ::xs::realGroup_sequence_c0> c0_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        ::xs::QName ref_;
        ::xs::nonNegativeInteger minOccurs_;
        ::xs::allNNI maxOccurs_;
        aka::any_attributes attributes_;
      };

      struct topLevelSimpleType {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        ::xs::simpleDerivation simpleDerivation_;
        /** attributes */
        ::xs::ID id_;
        ::xs::simpleDerivationSet final_;
        ::xs::NCName name_;
        aka::any_attributes attributes_;
      };

      struct topLevelComplexType {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        ::xs::complexTypeModel complexTypeModel_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        bool mixed_;
        bool abstract_;
        ::xs::derivationSet final_;
        ::xs::derivationSet block_;
        aka::any_attributes attributes_;
      };

      typedef std::list<aka::item> redefinable;
      typedef std::list<aka::item> redefine_choice;
      struct redefine {
        /** members */
        ::xs::redefine_choice c0_;
        /** attributes */
        ::xs::anyURI schemaLocation_;
        ::xs::ID id_;
        aka::any_attributes attributes_;
      };

      struct restriction {
        /** members */
        ::xs::annotated_sequence s0_;
        ::xs::simpleRestrictionModel simpleRestrictionModel_;
        /** attributes */
        ::xs::ID id_;
        ::xs::QName base_;
        aka::any_attributes attributes_;
      };

      typedef std::list<aka::item> restrictionType_sequence_c0;
      struct restrictionType_sequence {
        /** members */
        aka::deep_ptr< ::xs::restrictionType_sequence_c0> c0_;
        ::xs::attrDecls attrDecls_;
      };

      struct restrictionType {
        /** members */
        ::xs::annotated_sequence s0_;
        ::xs::restrictionType_sequence s1_;
        /** attributes */
        ::xs::ID id_;
        ::xs::QName base_;
        aka::any_attributes attributes_;
      };

      typedef std::list<aka::item> schema_sequence_c0;
      typedef std::list<aka::item> topLevelElement_sequence_c0;
      struct topLevelElement {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        aka::deep_ptr< ::xs::topLevelElement_sequence_c0> c0_;
        ::xs::identityConstraint identityConstraint_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        ::xs::QName ref_;
        ::xs::QName type_;
        ::xs::QName substitutionGroup_;
        ::xs::nonNegativeInteger minOccurs_;
        ::xs::allNNI maxOccurs_;
        ::std::string default_;
        ::std::string fixed_;
        bool nillable_;
        bool abstract_;
        ::xs::derivationSet final_;
        ::xs::blockSet block_;
        ::xs::formChoice form_;
        aka::any_attributes attributes_;
      };

      struct topLevelAttribute {
        /** members */
        aka::deep_ptr< ::xs::annotation> annotation_;
        aka::deep_ptr< ::xs::localSimpleType> simpleType_;
        /** attributes */
        ::xs::ID id_;
        ::xs::NCName name_;
        ::xs::QName ref_;
        ::xs::QName type_;
        ::xs::attribute_use use_;
        ::std::string default_;
        ::std::string fixed_;
        ::xs::formChoice form_;
        aka::any_attributes attributes_;
      };

      typedef std::list<aka::item> schemaTop;
      typedef std::list< ::xs::annotation> annotation_array;

      struct schema_sequence_s0 {
        /** members */
        ::xs::schemaTop schemaTop_;
        ::xs::annotation_array annotation_;
      };

      typedef std::list< ::xs::schema_sequence_s0> schema_sequence_s0_holder;

      struct schema {
        /** members */
        ::xs::schema_sequence_c0 c0_;
        ::xs::schema_sequence_s0_holder s0_;
        /** attributes */
        ::xs::anyURI targetNamespace_;
        ::xs::token version_;
        ::xs::fullDerivationSet finalDefault_;
        ::xs::blockSet blockDefault_;
        ::xs::formChoice attributeFormDefault_;
        ::xs::formChoice elementFormDefault_;
        ::xs::ID id_;
        ::xs::language lang_;
        aka::any_attributes attributes_;
      };

      struct simpleType {
        /** members */
        ::xs::annotated_sequence s0_;
        ::xs::simpleDerivation simpleDerivation_;
        /** attributes */
        ::xs::ID id_;
        ::xs::simpleDerivationSet final_;
        ::xs::NCName name_;
        aka::any_attributes attributes_;
      };

      typedef std::list< ::xs::localSimpleType> localSimpleType_array;

      struct union_sequence {
        /** members */
        ::xs::localSimpleType_array simpleType_;
      };

      typedef ::std::string union_memberTypes;

      struct _union {
        /** members */
        ::xs::annotated_sequence s0_;
        ::xs::union_sequence s1_;
        /** attributes */
        ::xs::ID id_;
        ::xs::union_memberTypes memberTypes_;
        aka::any_attributes attributes_;
      };

    }

    /** serialization of "xs:all". */
    void serialize(const ::xs::all &root, std::ostream &ostm);
    /** serialization of "xs:annotation". */
    void serialize(const ::xs::annotation &root, std::ostream &ostm);
    /** serialization of "xs:any". */
    void serialize(const ::xs::any &root, std::ostream &ostm);
    /** serialization of "xs:appinfo". */
    void serialize(const ::xs::appinfo &root, std::ostream &ostm);
    /** serialization of "xs:complexContent". */
    void serialize(const ::xs::complexContent &root, std::ostream &ostm);
    /** serialization of "xs:documentation". */
    void serialize(const ::xs::documentation &root, std::ostream &ostm);
    /** serialization of "xs:choice", "xs:choice", "xs:sequence". */
    void serialize(const ::xs::explicitGroup&root, const std::string &tagname, std::ostream &ostm);
    /** serialization of "xs:maxExclusive", "xs:maxExclusive", "xs:maxInclusive", "xs:minExclusive", "xs:minInclusive". */
    void serialize(const ::xs::facet&root, const std::string &tagname, std::ostream &ostm);
    /** serialization of "xs:field". */
    void serialize(const ::xs::field &root, std::ostream &ostm);
    /** serialization of "xs:import". */
    void serialize(const ::xs::import &root, std::ostream &ostm);
    /** serialization of "xs:include". */
    void serialize(const ::xs::include &root, std::ostream &ostm);
    /** serialization of "xs:key", "xs:key", "xs:unique". */
    void serialize(const ::xs::keybase&root, const std::string &tagname, std::ostream &ostm);
    /** serialization of "xs:keyref". */
    void serialize(const ::xs::keyref &root, std::ostream &ostm);
    /** serialization of "xs:list". */
    void serialize(const ::xs::list &root, std::ostream &ostm);
    /** serialization of "xs:attributeGroup". */
    void serialize(const ::xs::namedAttributeGroup &root, std::ostream &ostm);
    /** serialization of "xs:group". */
    void serialize(const ::xs::namedGroup &root, std::ostream &ostm);
    /** serialization of "xs:enumeration". */
    void serialize(const ::xs::noFixedFacet &root, std::ostream &ostm);
    /** serialization of "xs:notation". */
    void serialize(const ::xs::notation &root, std::ostream &ostm);
    /** serialization of "xs:fractionDigits", "xs:fractionDigits", "xs:length", "xs:maxLength", "xs:minLength". */
    void serialize(const ::xs::numFacet&root, const std::string &tagname, std::ostream &ostm);
    /** serialization of "xs:pattern". */
    void serialize(const ::xs::pattern &root, std::ostream &ostm);
    /** serialization of "xs:redefine". */
    void serialize(const ::xs::redefine &root, std::ostream &ostm);
    /** serialization of "xs:restriction". */
    void serialize(const ::xs::restriction &root, std::ostream &ostm);
    /** serialization of "xs:schema". */
    void serialize(const ::xs::schema &root, std::ostream &ostm);
    /** serialization of "xs:selector". */
    void serialize(const ::xs::selector &root, std::ostream &ostm);
    /** serialization of "xs:simpleContent". */
    void serialize(const ::xs::simpleContent &root, std::ostream &ostm);
    /** serialization of "xs:attribute". */
    void serialize(const ::xs::topLevelAttribute &root, std::ostream &ostm);
    /** serialization of "xs:complexType". */
    void serialize(const ::xs::topLevelComplexType &root, std::ostream &ostm);
    /** serialization of "xs:element". */
    void serialize(const ::xs::topLevelElement &root, std::ostream &ostm);
    /** serialization of "xs:simpleType". */
    void serialize(const ::xs::topLevelSimpleType &root, std::ostream &ostm);
    /** serialization of "xs:totalDigits". */
    void serialize(const ::xs::totalDigits &root, std::ostream &ostm);
    /** serialization of "xs:union". */
    void serialize(const ::xs::_union &root, std::ostream &ostm);
    /** serialization of "xs:whiteSpace". */
    void serialize(const ::xs::whiteSpace &root, std::ostream &ostm);
    /** serialization of "xs:anyAttribute". */
    void serialize(const ::xs::wildcard &root, std::ostream &ostm);

    #endif // #ifndef element_h__