[xsd-users] Error report for XSD-4.0

alexander.gosling at kongsberg.com alexander.gosling at kongsberg.com
Fri Aug 15 03:18:58 EDT 2014


Hello Boris,
We like to report 2 errors observed using XSD 4.0

The environment is Visual Studio 2012 on Windows 7.

1. libxsd\xsd\cxx\tree\serialization.txx does not compile in our environment.
I had to change line 104 from
          DOMDocument& doc (*e.getOwnerDocument ());
to
          ::xercesc::DOMDocument& doc (*e.getOwnerDocument ());
which I suppose is exactly the same declaration, only a little bit more specific.


2. For a number of schemas from opengis.org, the include statement to xml.h is wrong in the generated code
The include statement generated with 4.0 is:
        #include <Jade/OpenGIS/regrep/3.0/e:\work\jsmoms\jade\jadeopengis\schemas\xml\xml.h>
while generated with 3.3.0 it is:
        #include <Jade/OpenGIS/xml/xml.h>
The generation is done with exactly the same command line. Only difference is the version of xsd.exe

The code generated with 4.0 has no chance of compiling, while the code generated with 3.3.0 is correct.

This is the command line used to generate code:
E:\Tools\CodeSynthesis_r\xsd-4.0-i686-windows\bin\xsd.exe cxx-tree --proprietary-license --options-file E:/Work/jsmoms/Jade/JadeOpenGIS/res/JadeOpenGIS/JadeOpenGIS-include.opts --options-file E:/Work/jsmoms/Jade/JadeOpenGIS/cpp/src/JadeOpenGIS-RegRep/3.0/JadeOpenGIS-RegRep.opts --location-map http://schemas.opengis.net/csw/2.0.2/rec-dcterms.xsd=E:/Work/jsmoms/Jade/JadeOpenGIS/schemas/csw/2.0.2/rec-dcterms.xsd --location-map http://schemas.opengis.net/csw/2.0.2/rec-dcmes.xsd=E:/Work/jsmoms/Jade/JadeOpenGIS/schemas/csw/2.0.2/rec-dcmes.xsd --location-map http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd=E:/Work/jsmoms/Jade/JadeOpenGIS/schemas/csw/2.0.2/CSW-publication.xsd --location-map http://www.w3.org/2001/xml.xsd=E:/Work/jsmoms/Jade/JadeOpenGIS/schemas/xml/xml.xsd --location-map http://www.w3.org/2001/03/xml.xsd=E:/Work/jsmoms/Jade/JadeOpenGIS/schemas/xml/xml.xsd --location-map http://schemas.opengis.net/gml/3.1.1/smil/xml-mod.xsd=E:/Work/jsmoms/Jade/JadeOpenGIS/schemas/xml/xml.xsd --location-map http://schemas.opengis.net/ows/1.0.0/owsAll.xsd=E:/Work/jsmoms/Jade/JadeOpenGIS/schemas/ows/1.0.0/owsAll.xsd --location-map http://schemas.opengis.net/ows/1.1.0/owsAll.xsd=E:/Work/jsmoms/Jade/JadeOpenGIS/schemas/ows/1.1.0/owsAll.xsd --location-map http://schemas.opengis.net/filter/1.1.0/filter.xsd=E:/Work/jsmoms/Jade/JadeOpenGIS/schemas/filter/1.1.0/filter.xsd --location-map http://schemas.opengis.net/xlink/1.0.0/xlinks.xsd=E:/Work/jsmoms/Jade/JadeOpenGIS/schemas/xlink/1.0.0/xlinks.xsd --location-map xlinks.xsd=E:/Work/jsmoms/Jade/JadeOpenGIS/schemas/xlink/1.0.0/xlinks.xsd --location-map http://schemas.opengis.net/gml/3.1.1/base/geometryAggregates.xsd=E:/Work/jsmoms/Jade/JadeOpenGIS/schemas/gml/3.1.1/base/geometryAggregates.xsd --location-map http://schemas.opengis.net/gml/3.1.1/base/gml.xsd=E:/Work/jsmoms/Jade/JadeOpenGIS/schemas/gml/3.1.1/base/gml.xsd --location-map http://schemas.opengis.net/gml/3.1.1/smil/smil20.xsd=E:/Work/jsmoms/Jade/JadeOpenGIS/schemas/gml/3.1.1/smil/smil20.xsd --location-map http://www.w3.org/2005/Atom/atom.xsd=E:/Work/jsmoms/Jade/JadeOpenGIS/schemas/atom/1.0/atom.xsd --location-map http://docs.oasis-open.org/regrep/v3.0/schema/rim.xsd=E:/Work/jsmoms/Jade/JadeOpenGIS/schemas/regrep/3.0/rim.xsd --include-prefix Jade/OpenGIS/regrep/3.0/ --cxx-suffix .cpp --hxx-suffix .h --ixx-suffix .ipp --output-dir E:/Work/jsmoms_RelWithDebInfo/Jade/JadeOpenGIS/include/Jade/OpenGIS/regrep/3.0 E:/Work/jsmoms/Jade/JadeOpenGIS/schemas/regrep/3.0/rim.xsd

You will probably need to edit all the paths of the command line to reproduce the generated files.
Attached are the following files:
        - Generated header file with 3.3.0
        - Generated header file with 4.0
        - source xsd (rim.xsd)
        - xml.xsd

--
alex

________________________________

CONFIDENTIALITY
This e-mail and any attachment contain KONGSBERG information which may be proprietary, confidential or subject to export regulations, and is only meant for the intended recipient(s). Any disclosure, copying, distribution or use is prohibited, if not otherwise explicitly agreed with KONGSBERG. If received in error, please delete it immediately from your system and notify the sender properly.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: rim.xsd
Type: text/xml
Size: 25574 bytes
Desc: rim.xsd
Url : http://codesynthesis.com/pipermail/xsd-users/attachments/20140815/2cee3a8a/rim-0001.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: xml.xsd
Type: text/xml
Size: 5712 bytes
Desc: xml.xsd
Url : http://codesynthesis.com/pipermail/xsd-users/attachments/20140815/2cee3a8a/xml-0001.bin
-------------- next part --------------
// Copyright (c) 2005-2014 Code Synthesis Tools CC
//
// This program was generated by CodeSynthesis XSD, an XML Schema
// to C++ data binding compiler, in the Proprietary License mode.
// You should have received a proprietary license from Code Synthesis
// Tools CC prior to generating this code. See the license text for
// conditions.
//

/**
 * @file
 * @brief Generated from rim.xsd.
 */

#ifndef E__WORK_JSMOMS_JADE_JADE_OPEN_GIS_SCHEMAS_REGREP_3_0_RIM_H
#define E__WORK_JSMOMS_JADE_JADE_OPEN_GIS_SCHEMAS_REGREP_3_0_RIM_H

#ifndef XSD_USE_CHAR
#define XSD_USE_CHAR
#endif

#ifndef XSD_CXX_TREE_USE_CHAR
#define XSD_CXX_TREE_USE_CHAR
#endif

// Begin prologue.
//
#include <Jade/OpenGIS/regrep/3.0/Config/Platform.h>
//
// End prologue.

#include <xsd/cxx/config.hxx>

#if (XSD_INT_VERSION != 4000000L)
#error XSD runtime version mismatch
#endif

#include <xsd/cxx/pre.hxx>

#include <Jade/OpenGIS/Common/xml-schema.h>

// Forward declarations.
//
namespace Jade
{
  namespace OpenGIS
  {
    namespace regrep_3_0
    {
      class referenceURI;
      class String4;
      class String8;
      class String16;
      class String32;
      class ShortName;
      class LongName;
      class FreeFormText;
      class InternationalStringType;
      class LocalizedStringType;
      class SlotType1;
      class ValueListType;
      class SlotListType;
      class IdentifiableType;
      class ObjectRefType;
      class ObjectRefListType;
      class RegistryObjectType;
      class RegistryObjectListType;
      class AssociationType1;
      class AuditableEventType;
      class ClassificationType;
      class ClassificationNodeType;
      class ClassificationSchemeType;
      class ExternalIdentifierType;
      class ExternalLinkType;
      class ExtrinsicObjectType;
      class OrganizationType;
      class PersonNameType;
      class EmailAddressType;
      class PostalAddressType;
      class VersionInfoType;
      class RegistryPackageType;
      class ServiceType;
      class ServiceBindingType;
      class SpecificationLinkType;
      class TelephoneNumberType;
      class TelephoneNumberListType;
      class PersonType;
      class UserType;
      class RegistryType;
      class FederationType;
      class AdhocQueryType;
      class QueryExpressionType;
      class NotificationType;
      class SubscriptionType;
      class ActionType;
      class NotifyActionType;
      class conformanceProfile;
    }
  }
}


#include <memory>    // ::std::auto_ptr
#include <limits>    // std::numeric_limits
#include <algorithm> // std::binary_search

#include <xsd/cxx/xml/char-utf8.hxx>

#include <xsd/cxx/tree/exceptions.hxx>
#include <xsd/cxx/tree/elements.hxx>
#include <xsd/cxx/tree/containers.hxx>
#include <xsd/cxx/tree/list.hxx>

#include <xsd/cxx/xml/dom/parsing-header.hxx>

#include <xsd/cxx/tree/containers-wildcard.hxx>

#include <Jade/OpenGIS/regrep/3.0/e:\work\jsmoms\jade\jadeopengis\schemas\xml\xml.h>

namespace Jade
{
  namespace OpenGIS
  {
    /**
     * @brief C++ namespace for the %urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0
     * schema namespace.
     */
    namespace regrep_3_0
    {
      /**
       * @brief Class corresponding to the %referenceURI schema type.
       *
       * referenceURI is used by reference attributes within RIM.
       * Each attribute of type referenceURI references a RegistryObject with
       * specified URI as id.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED referenceURI: public ::xml_schema::uri
      {
        public:
        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        referenceURI (const ::xml_schema::uri&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        referenceURI (const ::xercesc::DOMElement& e,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a DOM attribute.
         *
         * @param a A DOM attribute to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        referenceURI (const ::xercesc::DOMAttr& a,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a string fragment.
         *
         * @param s A string fragment to extract the data from.
         * @param e A pointer to DOM element containing the string fragment.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        referenceURI (const ::std::string& s,
                      const ::xercesc::DOMElement* e,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        referenceURI (const referenceURI& x,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual referenceURI*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~referenceURI ();
      };

      /**
       * @brief Class corresponding to the %String4 schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED String4: public ::xml_schema::string
      {
        public:
        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from initializers for required 
         * elements and attributes.
         */
        String4 ();

        /**
         * @brief Create an instance from a C string and initializers
         * for required elements and attributes.
         */
        String4 (const char*);

        /**
         * @brief Create an instance from a string andinitializers
         * for required elements and attributes.
         */
        String4 (const ::std::string&);

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        String4 (const ::xml_schema::string&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String4 (const ::xercesc::DOMElement& e,
                 ::xml_schema::flags f = 0,
                 ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a DOM attribute.
         *
         * @param a A DOM attribute to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String4 (const ::xercesc::DOMAttr& a,
                 ::xml_schema::flags f = 0,
                 ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a string fragment.
         *
         * @param s A string fragment to extract the data from.
         * @param e A pointer to DOM element containing the string fragment.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String4 (const ::std::string& s,
                 const ::xercesc::DOMElement* e,
                 ::xml_schema::flags f = 0,
                 ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        String4 (const String4& x,
                 ::xml_schema::flags f = 0,
                 ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual String4*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~String4 ();
      };

      /**
       * @brief Class corresponding to the %String8 schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED String8: public ::xml_schema::string
      {
        public:
        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from initializers for required 
         * elements and attributes.
         */
        String8 ();

        /**
         * @brief Create an instance from a C string and initializers
         * for required elements and attributes.
         */
        String8 (const char*);

        /**
         * @brief Create an instance from a string andinitializers
         * for required elements and attributes.
         */
        String8 (const ::std::string&);

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        String8 (const ::xml_schema::string&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String8 (const ::xercesc::DOMElement& e,
                 ::xml_schema::flags f = 0,
                 ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a DOM attribute.
         *
         * @param a A DOM attribute to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String8 (const ::xercesc::DOMAttr& a,
                 ::xml_schema::flags f = 0,
                 ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a string fragment.
         *
         * @param s A string fragment to extract the data from.
         * @param e A pointer to DOM element containing the string fragment.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String8 (const ::std::string& s,
                 const ::xercesc::DOMElement* e,
                 ::xml_schema::flags f = 0,
                 ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        String8 (const String8& x,
                 ::xml_schema::flags f = 0,
                 ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual String8*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~String8 ();
      };

      /**
       * @brief Class corresponding to the %String16 schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED String16: public ::xml_schema::string
      {
        public:
        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from initializers for required 
         * elements and attributes.
         */
        String16 ();

        /**
         * @brief Create an instance from a C string and initializers
         * for required elements and attributes.
         */
        String16 (const char*);

        /**
         * @brief Create an instance from a string andinitializers
         * for required elements and attributes.
         */
        String16 (const ::std::string&);

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        String16 (const ::xml_schema::string&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String16 (const ::xercesc::DOMElement& e,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a DOM attribute.
         *
         * @param a A DOM attribute to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String16 (const ::xercesc::DOMAttr& a,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a string fragment.
         *
         * @param s A string fragment to extract the data from.
         * @param e A pointer to DOM element containing the string fragment.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String16 (const ::std::string& s,
                  const ::xercesc::DOMElement* e,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        String16 (const String16& x,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual String16*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~String16 ();
      };

      /**
       * @brief Class corresponding to the %String32 schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED String32: public ::xml_schema::string
      {
        public:
        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from initializers for required 
         * elements and attributes.
         */
        String32 ();

        /**
         * @brief Create an instance from a C string and initializers
         * for required elements and attributes.
         */
        String32 (const char*);

        /**
         * @brief Create an instance from a string andinitializers
         * for required elements and attributes.
         */
        String32 (const ::std::string&);

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        String32 (const ::xml_schema::string&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String32 (const ::xercesc::DOMElement& e,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a DOM attribute.
         *
         * @param a A DOM attribute to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String32 (const ::xercesc::DOMAttr& a,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a string fragment.
         *
         * @param s A string fragment to extract the data from.
         * @param e A pointer to DOM element containing the string fragment.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String32 (const ::std::string& s,
                  const ::xercesc::DOMElement* e,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        String32 (const String32& x,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual String32*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~String32 ();
      };

      /**
       * @brief Class corresponding to the %ShortName schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ShortName: public ::xml_schema::string
      {
        public:
        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from initializers for required 
         * elements and attributes.
         */
        ShortName ();

        /**
         * @brief Create an instance from a C string and initializers
         * for required elements and attributes.
         */
        ShortName (const char*);

        /**
         * @brief Create an instance from a string andinitializers
         * for required elements and attributes.
         */
        ShortName (const ::std::string&);

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ShortName (const ::xml_schema::string&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ShortName (const ::xercesc::DOMElement& e,
                   ::xml_schema::flags f = 0,
                   ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a DOM attribute.
         *
         * @param a A DOM attribute to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ShortName (const ::xercesc::DOMAttr& a,
                   ::xml_schema::flags f = 0,
                   ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a string fragment.
         *
         * @param s A string fragment to extract the data from.
         * @param e A pointer to DOM element containing the string fragment.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ShortName (const ::std::string& s,
                   const ::xercesc::DOMElement* e,
                   ::xml_schema::flags f = 0,
                   ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ShortName (const ShortName& x,
                   ::xml_schema::flags f = 0,
                   ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ShortName*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ShortName ();
      };

      /**
       * @brief Class corresponding to the %LongName schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED LongName: public ::xml_schema::string
      {
        public:
        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from initializers for required 
         * elements and attributes.
         */
        LongName ();

        /**
         * @brief Create an instance from a C string and initializers
         * for required elements and attributes.
         */
        LongName (const char*);

        /**
         * @brief Create an instance from a string andinitializers
         * for required elements and attributes.
         */
        LongName (const ::std::string&);

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        LongName (const ::xml_schema::string&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        LongName (const ::xercesc::DOMElement& e,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a DOM attribute.
         *
         * @param a A DOM attribute to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        LongName (const ::xercesc::DOMAttr& a,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a string fragment.
         *
         * @param s A string fragment to extract the data from.
         * @param e A pointer to DOM element containing the string fragment.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        LongName (const ::std::string& s,
                  const ::xercesc::DOMElement* e,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        LongName (const LongName& x,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual LongName*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~LongName ();
      };

      /**
       * @brief Class corresponding to the %FreeFormText schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED FreeFormText: public ::xml_schema::string
      {
        public:
        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from initializers for required 
         * elements and attributes.
         */
        FreeFormText ();

        /**
         * @brief Create an instance from a C string and initializers
         * for required elements and attributes.
         */
        FreeFormText (const char*);

        /**
         * @brief Create an instance from a string andinitializers
         * for required elements and attributes.
         */
        FreeFormText (const ::std::string&);

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        FreeFormText (const ::xml_schema::string&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        FreeFormText (const ::xercesc::DOMElement& e,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a DOM attribute.
         *
         * @param a A DOM attribute to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        FreeFormText (const ::xercesc::DOMAttr& a,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a string fragment.
         *
         * @param s A string fragment to extract the data from.
         * @param e A pointer to DOM element containing the string fragment.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        FreeFormText (const ::std::string& s,
                      const ::xercesc::DOMElement* e,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        FreeFormText (const FreeFormText& x,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual FreeFormText*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~FreeFormText ();
      };

      /**
       * @brief Class corresponding to the %InternationalStringType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED InternationalStringType: public ::xml_schema::type
      {
        public:
        /**
         * @name LocalizedString
         *
         * @brief Accessor and modifier functions for the %LocalizedString
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::LocalizedStringType LocalizedString_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< LocalizedString_type > LocalizedString_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef LocalizedString_sequence::iterator LocalizedString_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef LocalizedString_sequence::const_iterator LocalizedString_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< LocalizedString_type, char > LocalizedString_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const LocalizedString_sequence&
        LocalizedString () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        LocalizedString_sequence&
        LocalizedString ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        LocalizedString (const LocalizedString_sequence& s);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        InternationalStringType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        InternationalStringType (const ::xercesc::DOMElement& e,
                                 ::xml_schema::flags f = 0,
                                 ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        InternationalStringType (const InternationalStringType& x,
                                 ::xml_schema::flags f = 0,
                                 ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual InternationalStringType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        InternationalStringType&
        operator= (const InternationalStringType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~InternationalStringType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        LocalizedString_sequence LocalizedString_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %LocalizedStringType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED LocalizedStringType: public ::xml_schema::type
      {
        public:
        /**
         * @name lang
         *
         * @brief Accessor and modifier functions for the %lang
         * optional attribute with a default value.
         *
         * Attempting to install the relevant ISO 2- and 3-letter
         * codes as the enumerated possible values is probably never
         * going to be a realistic possibility.  See
         * RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry
         * at http://www.iana.org/assignments/lang-tag-apps.htm for
         * further information.
         * 
         * The union allows for the 'un-declaration' of xml:lang with
         * the empty string.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::xml::lang lang_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< lang_type, char > lang_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const lang_type&
        lang () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        lang_type&
        lang ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        lang (const lang_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        lang (::std::auto_ptr< lang_type > p);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return A read-only (constant) reference to the attribute's
         * default value.
         */
        static const lang_type&
        lang_default_value ();

        //@}

        /**
         * @name charset
         *
         * @brief Accessor and modifier functions for the %charset
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::simple_type charset_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< charset_type, char > charset_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const charset_type&
        charset () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        charset_type&
        charset ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        charset (const charset_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        charset (::std::auto_ptr< charset_type > p);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return A read-only (constant) reference to the attribute's
         * default value.
         */
        static const charset_type&
        charset_default_value ();

        //@}

        /**
         * @name value
         *
         * @brief Accessor and modifier functions for the %value
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::FreeFormText value_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< value_type, char > value_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const value_type&
        value () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        value_type&
        value ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        value (const value_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        value (::std::auto_ptr< value_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        LocalizedStringType (const value_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        LocalizedStringType (const ::xercesc::DOMElement& e,
                             ::xml_schema::flags f = 0,
                             ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        LocalizedStringType (const LocalizedStringType& x,
                             ::xml_schema::flags f = 0,
                             ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual LocalizedStringType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        LocalizedStringType&
        operator= (const LocalizedStringType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~LocalizedStringType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< lang_type > lang_;
        static const lang_type lang_default_value_;
        ::xsd::cxx::tree::one< charset_type > charset_;
        static const charset_type charset_default_value_;
        ::xsd::cxx::tree::one< value_type > value_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %SlotType1 schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED SlotType1: public ::xml_schema::type
      {
        public:
        /**
         * @name ValueList
         *
         * @brief Accessor and modifier functions for the %ValueList
         * required element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ValueListType ValueList_type;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< ValueList_type, char > ValueList_traits;

        /**
         * @brief Return a read-only (constant) reference to the element.
         *
         * @return A constant reference to the element.
         */
        const ValueList_type&
        ValueList () const;

        /**
         * @brief Return a read-write reference to the element.
         *
         * @return A reference to the element.
         */
        ValueList_type&
        ValueList ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        ValueList (const ValueList_type& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        ValueList (::std::auto_ptr< ValueList_type > p);

        //@}

        /**
         * @name name
         *
         * @brief Accessor and modifier functions for the %name
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::LongName name_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< name_type, char > name_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const name_type&
        name () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        name_type&
        name ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        name (const name_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        name (::std::auto_ptr< name_type > p);

        //@}

        /**
         * @name slotType
         *
         * @brief Accessor and modifier functions for the %slotType
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI slotType_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< slotType_type > slotType_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< slotType_type, char > slotType_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const slotType_optional&
        slotType () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        slotType_optional&
        slotType ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        slotType (const slotType_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        slotType (const slotType_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        slotType (::std::auto_ptr< slotType_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        SlotType1 (const ValueList_type&,
                   const name_type&);

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes
         * (::std::auto_ptr version).
         *
         * This constructor will try to use the passed values directly
         * instead of making copies.
         */
        SlotType1 (::std::auto_ptr< ValueList_type >,
                   const name_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        SlotType1 (const ::xercesc::DOMElement& e,
                   ::xml_schema::flags f = 0,
                   ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        SlotType1 (const SlotType1& x,
                   ::xml_schema::flags f = 0,
                   ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual SlotType1*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        SlotType1&
        operator= (const SlotType1& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~SlotType1 ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< ValueList_type > ValueList_;
        ::xsd::cxx::tree::one< name_type > name_;
        slotType_optional slotType_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ValueListType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ValueListType: public ::xml_schema::type
      {
        public:
        /**
         * @name Value
         *
         * @brief Accessor and modifier functions for the %Value
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::LongName Value_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< Value_type > Value_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef Value_sequence::iterator Value_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef Value_sequence::const_iterator Value_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< Value_type, char > Value_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const Value_sequence&
        Value () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        Value_sequence&
        Value ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        Value (const Value_sequence& s);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ValueListType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ValueListType (const ::xercesc::DOMElement& e,
                       ::xml_schema::flags f = 0,
                       ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ValueListType (const ValueListType& x,
                       ::xml_schema::flags f = 0,
                       ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ValueListType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ValueListType&
        operator= (const ValueListType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ValueListType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        Value_sequence Value_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %SlotListType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED SlotListType: public ::xml_schema::type
      {
        public:
        /**
         * @name Slot
         *
         * @brief Accessor and modifier functions for the %Slot
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::SlotType1 Slot_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< Slot_type > Slot_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef Slot_sequence::iterator Slot_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef Slot_sequence::const_iterator Slot_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< Slot_type, char > Slot_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const Slot_sequence&
        Slot () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        Slot_sequence&
        Slot ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        Slot (const Slot_sequence& s);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        SlotListType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        SlotListType (const ::xercesc::DOMElement& e,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        SlotListType (const SlotListType& x,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual SlotListType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        SlotListType&
        operator= (const SlotListType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~SlotListType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        Slot_sequence Slot_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %IdentifiableType schema type.
       *
       * Common base type for all types that have unique identity.     
       * If id is provided and is not in proper URN syntax then it is used for
       * linkage within document and is ignored by the registry. In this case
       * the
       * registry generates a UUID URN for id attribute.
       * id must not be null when object is retrieved from the registry.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED IdentifiableType: public ::xml_schema::type
      {
        public:
        /**
         * @name Slot
         *
         * @brief Accessor and modifier functions for the %Slot
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::SlotType1 Slot_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< Slot_type > Slot_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef Slot_sequence::iterator Slot_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef Slot_sequence::const_iterator Slot_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< Slot_type, char > Slot_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const Slot_sequence&
        Slot () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        Slot_sequence&
        Slot ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        Slot (const Slot_sequence& s);

        //@}

        /**
         * @name id
         *
         * @brief Accessor and modifier functions for the %id
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::uri id_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< id_type, char > id_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const id_type&
        id () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        id_type&
        id ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        id (const id_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        id (::std::auto_ptr< id_type > p);

        //@}

        /**
         * @name home
         *
         * @brief Accessor and modifier functions for the %home
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::uri home_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< home_type > home_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< home_type, char > home_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const home_optional&
        home () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        home_optional&
        home ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        home (const home_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        home (const home_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        home (::std::auto_ptr< home_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        IdentifiableType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        IdentifiableType (const ::xercesc::DOMElement& e,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        IdentifiableType (const IdentifiableType& x,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual IdentifiableType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        IdentifiableType&
        operator= (const IdentifiableType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~IdentifiableType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        Slot_sequence Slot_;
        ::xsd::cxx::tree::one< id_type > id_;
        home_optional home_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ObjectRefType schema type.
       *
       * Use to reference an Object by its id.
       * Specifies the id attribute of the object as its id attribute.
       * id attribute in ObjectAttributes is exactly the same syntax and
       * semantics as
       * id attribute in RegistryObject.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ObjectRefType: public ::Jade::OpenGIS::regrep_3_0::IdentifiableType
      {
        public:
        /**
         * @name createReplica
         *
         * @brief Accessor and modifier functions for the %createReplica
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::boolean createReplica_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< createReplica_type, char > createReplica_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const createReplica_type&
        createReplica () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        createReplica_type&
        createReplica ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        createReplica (const createReplica_type& x);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return The attribute's default value.
         */
        static createReplica_type
        createReplica_default_value ();

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ObjectRefType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ObjectRefType (const ::xercesc::DOMElement& e,
                       ::xml_schema::flags f = 0,
                       ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ObjectRefType (const ObjectRefType& x,
                       ::xml_schema::flags f = 0,
                       ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ObjectRefType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ObjectRefType&
        operator= (const ObjectRefType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ObjectRefType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< createReplica_type > createReplica_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ObjectRefListType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ObjectRefListType: public ::xml_schema::type
      {
        public:
        /**
         * @name ObjectRef
         *
         * @brief Accessor and modifier functions for the %ObjectRef
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ObjectRefType ObjectRef_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< ObjectRef_type > ObjectRef_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef ObjectRef_sequence::iterator ObjectRef_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef ObjectRef_sequence::const_iterator ObjectRef_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< ObjectRef_type, char > ObjectRef_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const ObjectRef_sequence&
        ObjectRef () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        ObjectRef_sequence&
        ObjectRef ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        ObjectRef (const ObjectRef_sequence& s);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ObjectRefListType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ObjectRefListType (const ::xercesc::DOMElement& e,
                           ::xml_schema::flags f = 0,
                           ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ObjectRefListType (const ObjectRefListType& x,
                           ::xml_schema::flags f = 0,
                           ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ObjectRefListType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ObjectRefListType&
        operator= (const ObjectRefListType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ObjectRefListType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ObjectRef_sequence ObjectRef_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %RegistryObjectType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED RegistryObjectType: public ::Jade::OpenGIS::regrep_3_0::IdentifiableType
      {
        public:
        /**
         * @name Name
         *
         * @brief Accessor and modifier functions for the %Name
         * optional element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::InternationalStringType Name_type;

        /**
         * @brief Element optional container type.
         */
        typedef ::xsd::cxx::tree::optional< Name_type > Name_optional;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< Name_type, char > Name_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const Name_optional&
        Name () const;

        /**
         * @brief Return a read-write reference to the element container.
         *
         * @return A reference to the optional container.
         */
        Name_optional&
        Name ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        Name (const Name_type& x);

        /**
         * @brief Set the element value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the element.
         * Otherwise the element container is set the 'not present' state.
         */
        void
        Name (const Name_optional& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        Name (::std::auto_ptr< Name_type > p);

        //@}

        /**
         * @name Description
         *
         * @brief Accessor and modifier functions for the %Description
         * optional element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::InternationalStringType Description_type;

        /**
         * @brief Element optional container type.
         */
        typedef ::xsd::cxx::tree::optional< Description_type > Description_optional;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< Description_type, char > Description_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const Description_optional&
        Description () const;

        /**
         * @brief Return a read-write reference to the element container.
         *
         * @return A reference to the optional container.
         */
        Description_optional&
        Description ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        Description (const Description_type& x);

        /**
         * @brief Set the element value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the element.
         * Otherwise the element container is set the 'not present' state.
         */
        void
        Description (const Description_optional& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        Description (::std::auto_ptr< Description_type > p);

        //@}

        /**
         * @name VersionInfo
         *
         * @brief Accessor and modifier functions for the %VersionInfo
         * optional element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::VersionInfoType VersionInfo_type;

        /**
         * @brief Element optional container type.
         */
        typedef ::xsd::cxx::tree::optional< VersionInfo_type > VersionInfo_optional;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< VersionInfo_type, char > VersionInfo_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const VersionInfo_optional&
        VersionInfo () const;

        /**
         * @brief Return a read-write reference to the element container.
         *
         * @return A reference to the optional container.
         */
        VersionInfo_optional&
        VersionInfo ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        VersionInfo (const VersionInfo_type& x);

        /**
         * @brief Set the element value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the element.
         * Otherwise the element container is set the 'not present' state.
         */
        void
        VersionInfo (const VersionInfo_optional& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        VersionInfo (::std::auto_ptr< VersionInfo_type > p);

        //@}

        /**
         * @name Classification
         *
         * @brief Accessor and modifier functions for the %Classification
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ClassificationType Classification_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< Classification_type > Classification_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef Classification_sequence::iterator Classification_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef Classification_sequence::const_iterator Classification_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< Classification_type, char > Classification_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const Classification_sequence&
        Classification () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        Classification_sequence&
        Classification ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        Classification (const Classification_sequence& s);

        //@}

        /**
         * @name ExternalIdentifier
         *
         * @brief Accessor and modifier functions for the %ExternalIdentifier
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ExternalIdentifierType ExternalIdentifier_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< ExternalIdentifier_type > ExternalIdentifier_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef ExternalIdentifier_sequence::iterator ExternalIdentifier_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef ExternalIdentifier_sequence::const_iterator ExternalIdentifier_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< ExternalIdentifier_type, char > ExternalIdentifier_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const ExternalIdentifier_sequence&
        ExternalIdentifier () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        ExternalIdentifier_sequence&
        ExternalIdentifier ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        ExternalIdentifier (const ExternalIdentifier_sequence& s);

        //@}

        /**
         * @name lid
         *
         * @brief Accessor and modifier functions for the %lid
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::uri lid_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< lid_type > lid_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< lid_type, char > lid_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const lid_optional&
        lid () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        lid_optional&
        lid ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        lid (const lid_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        lid (const lid_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        lid (::std::auto_ptr< lid_type > p);

        //@}

        /**
         * @name objectType
         *
         * @brief Accessor and modifier functions for the %objectType
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI objectType_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< objectType_type > objectType_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< objectType_type, char > objectType_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const objectType_optional&
        objectType () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        objectType_optional&
        objectType ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        objectType (const objectType_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        objectType (const objectType_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        objectType (::std::auto_ptr< objectType_type > p);

        //@}

        /**
         * @name status
         *
         * @brief Accessor and modifier functions for the %status
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI status_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< status_type > status_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< status_type, char > status_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const status_optional&
        status () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        status_optional&
        status ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        status (const status_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        status (const status_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        status (::std::auto_ptr< status_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        RegistryObjectType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        RegistryObjectType (const ::xercesc::DOMElement& e,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        RegistryObjectType (const RegistryObjectType& x,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual RegistryObjectType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        RegistryObjectType&
        operator= (const RegistryObjectType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~RegistryObjectType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        Name_optional Name_;
        Description_optional Description_;
        VersionInfo_optional VersionInfo_;
        Classification_sequence Classification_;
        ExternalIdentifier_sequence ExternalIdentifier_;
        lid_optional lid_;
        objectType_optional objectType_;
        status_optional status_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %RegistryObjectListType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED RegistryObjectListType: public ::xml_schema::type
      {
        public:
        /**
         * @name Identifiable
         *
         * @brief Accessor and modifier functions for the %Identifiable
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::IdentifiableType Identifiable_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< Identifiable_type > Identifiable_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef Identifiable_sequence::iterator Identifiable_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef Identifiable_sequence::const_iterator Identifiable_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< Identifiable_type, char > Identifiable_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const Identifiable_sequence&
        Identifiable () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        Identifiable_sequence&
        Identifiable ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        Identifiable (const Identifiable_sequence& s);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        RegistryObjectListType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        RegistryObjectListType (const ::xercesc::DOMElement& e,
                                ::xml_schema::flags f = 0,
                                ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        RegistryObjectListType (const RegistryObjectListType& x,
                                ::xml_schema::flags f = 0,
                                ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual RegistryObjectListType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        RegistryObjectListType&
        operator= (const RegistryObjectListType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~RegistryObjectListType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        Identifiable_sequence Identifiable_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %AssociationType1 schema type.
       *
       * Association is the mapping of the same named interface in ebRIM.
       * It extends RegistryObject.
       * An Association specifies references to two previously submitted
       * registry entrys.
       * The sourceObject is id of the sourceObject in association
       * The targetObject is id of the targetObject in association
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED AssociationType1: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name associationType
         *
         * @brief Accessor and modifier functions for the %associationType
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI associationType_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< associationType_type, char > associationType_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const associationType_type&
        associationType () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        associationType_type&
        associationType ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        associationType (const associationType_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        associationType (::std::auto_ptr< associationType_type > p);

        //@}

        /**
         * @name sourceObject
         *
         * @brief Accessor and modifier functions for the %sourceObject
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI sourceObject_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< sourceObject_type, char > sourceObject_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const sourceObject_type&
        sourceObject () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        sourceObject_type&
        sourceObject ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        sourceObject (const sourceObject_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        sourceObject (::std::auto_ptr< sourceObject_type > p);

        //@}

        /**
         * @name targetObject
         *
         * @brief Accessor and modifier functions for the %targetObject
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI targetObject_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< targetObject_type, char > targetObject_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const targetObject_type&
        targetObject () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        targetObject_type&
        targetObject ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        targetObject (const targetObject_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        targetObject (::std::auto_ptr< targetObject_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        AssociationType1 (const id_type&,
                          const associationType_type&,
                          const sourceObject_type&,
                          const targetObject_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        AssociationType1 (const ::xercesc::DOMElement& e,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        AssociationType1 (const AssociationType1& x,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual AssociationType1*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        AssociationType1&
        operator= (const AssociationType1& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~AssociationType1 ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< associationType_type > associationType_;
        ::xsd::cxx::tree::one< sourceObject_type > sourceObject_;
        ::xsd::cxx::tree::one< targetObject_type > targetObject_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %AuditableEventType schema type.
       *
       * An Event that forms an audit trail in ebXML Registry.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED AuditableEventType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name affectedObjects
         *
         * @brief Accessor and modifier functions for the %affectedObjects
         * required element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ObjectRefListType affectedObjects_type;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< affectedObjects_type, char > affectedObjects_traits;

        /**
         * @brief Return a read-only (constant) reference to the element.
         *
         * @return A constant reference to the element.
         */
        const affectedObjects_type&
        affectedObjects () const;

        /**
         * @brief Return a read-write reference to the element.
         *
         * @return A reference to the element.
         */
        affectedObjects_type&
        affectedObjects ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        affectedObjects (const affectedObjects_type& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        affectedObjects (::std::auto_ptr< affectedObjects_type > p);

        //@}

        /**
         * @name eventType
         *
         * @brief Accessor and modifier functions for the %eventType
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI eventType_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< eventType_type, char > eventType_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const eventType_type&
        eventType () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        eventType_type&
        eventType ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        eventType (const eventType_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        eventType (::std::auto_ptr< eventType_type > p);

        //@}

        /**
         * @name timestamp
         *
         * @brief Accessor and modifier functions for the %timestamp
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::date_time timestamp_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< timestamp_type, char > timestamp_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const timestamp_type&
        timestamp () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        timestamp_type&
        timestamp ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        timestamp (const timestamp_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        timestamp (::std::auto_ptr< timestamp_type > p);

        //@}

        /**
         * @name user
         *
         * @brief Accessor and modifier functions for the %user
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI user_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< user_type, char > user_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const user_type&
        user () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        user_type&
        user ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        user (const user_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        user (::std::auto_ptr< user_type > p);

        //@}

        /**
         * @name requestId
         *
         * @brief Accessor and modifier functions for the %requestId
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI requestId_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< requestId_type, char > requestId_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const requestId_type&
        requestId () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        requestId_type&
        requestId ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        requestId (const requestId_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        requestId (::std::auto_ptr< requestId_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        AuditableEventType (const id_type&,
                            const affectedObjects_type&,
                            const eventType_type&,
                            const timestamp_type&,
                            const user_type&,
                            const requestId_type&);

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes
         * (::std::auto_ptr version).
         *
         * This constructor will try to use the passed values directly
         * instead of making copies.
         */
        AuditableEventType (const id_type&,
                            ::std::auto_ptr< affectedObjects_type >,
                            const eventType_type&,
                            const timestamp_type&,
                            const user_type&,
                            const requestId_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        AuditableEventType (const ::xercesc::DOMElement& e,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        AuditableEventType (const AuditableEventType& x,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual AuditableEventType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        AuditableEventType&
        operator= (const AuditableEventType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~AuditableEventType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< affectedObjects_type > affectedObjects_;
        ::xsd::cxx::tree::one< eventType_type > eventType_;
        ::xsd::cxx::tree::one< timestamp_type > timestamp_;
        ::xsd::cxx::tree::one< user_type > user_;
        ::xsd::cxx::tree::one< requestId_type > requestId_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ClassificationType schema type.
       *
       * Classification is the mapping of the same named interface in ebRIM.
       * It extends RegistryObject.
       * A Classification specifies references to two registry entrys.
       * The classifiedObject is id of the Object being classified.
       * The classificationNode is id of the ClassificationNode classying the
       * object
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ClassificationType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name classificationScheme
         *
         * @brief Accessor and modifier functions for the %classificationScheme
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI classificationScheme_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< classificationScheme_type > classificationScheme_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< classificationScheme_type, char > classificationScheme_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const classificationScheme_optional&
        classificationScheme () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        classificationScheme_optional&
        classificationScheme ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        classificationScheme (const classificationScheme_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        classificationScheme (const classificationScheme_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        classificationScheme (::std::auto_ptr< classificationScheme_type > p);

        //@}

        /**
         * @name classifiedObject
         *
         * @brief Accessor and modifier functions for the %classifiedObject
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI classifiedObject_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< classifiedObject_type, char > classifiedObject_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const classifiedObject_type&
        classifiedObject () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        classifiedObject_type&
        classifiedObject ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        classifiedObject (const classifiedObject_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        classifiedObject (::std::auto_ptr< classifiedObject_type > p);

        //@}

        /**
         * @name classificationNode
         *
         * @brief Accessor and modifier functions for the %classificationNode
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI classificationNode_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< classificationNode_type > classificationNode_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< classificationNode_type, char > classificationNode_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const classificationNode_optional&
        classificationNode () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        classificationNode_optional&
        classificationNode ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        classificationNode (const classificationNode_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        classificationNode (const classificationNode_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        classificationNode (::std::auto_ptr< classificationNode_type > p);

        //@}

        /**
         * @name nodeRepresentation
         *
         * @brief Accessor and modifier functions for the %nodeRepresentation
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::LongName nodeRepresentation_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< nodeRepresentation_type > nodeRepresentation_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< nodeRepresentation_type, char > nodeRepresentation_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const nodeRepresentation_optional&
        nodeRepresentation () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        nodeRepresentation_optional&
        nodeRepresentation ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        nodeRepresentation (const nodeRepresentation_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        nodeRepresentation (const nodeRepresentation_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        nodeRepresentation (::std::auto_ptr< nodeRepresentation_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ClassificationType (const id_type&,
                            const classifiedObject_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ClassificationType (const ::xercesc::DOMElement& e,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ClassificationType (const ClassificationType& x,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ClassificationType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ClassificationType&
        operator= (const ClassificationType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ClassificationType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        classificationScheme_optional classificationScheme_;
        ::xsd::cxx::tree::one< classifiedObject_type > classifiedObject_;
        classificationNode_optional classificationNode_;
        nodeRepresentation_optional nodeRepresentation_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ClassificationNodeType schema type.
       *
       * ClassificationNode is the mapping of the same named interface in
       * ebRIM.
       * It extends RegistryObject.
       * ClassificationNode is used to submit a Classification tree to the
       * Registry.
       * The parent attribute is the id to the parent node. code is an optional
       * code value for a ClassificationNode
       * often defined by an external taxonomy (e.g. NAICS)
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ClassificationNodeType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name ClassificationNode
         *
         * @brief Accessor and modifier functions for the %ClassificationNode
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ClassificationNodeType ClassificationNode_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< ClassificationNode_type > ClassificationNode_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef ClassificationNode_sequence::iterator ClassificationNode_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef ClassificationNode_sequence::const_iterator ClassificationNode_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< ClassificationNode_type, char > ClassificationNode_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const ClassificationNode_sequence&
        ClassificationNode () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        ClassificationNode_sequence&
        ClassificationNode ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        ClassificationNode (const ClassificationNode_sequence& s);

        //@}

        /**
         * @name parent
         *
         * @brief Accessor and modifier functions for the %parent
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI parent_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< parent_type > parent_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< parent_type, char > parent_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const parent_optional&
        parent () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        parent_optional&
        parent ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        parent (const parent_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        parent (const parent_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        parent (::std::auto_ptr< parent_type > p);

        //@}

        /**
         * @name code
         *
         * @brief Accessor and modifier functions for the %code
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::LongName code_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< code_type > code_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< code_type, char > code_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const code_optional&
        code () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        code_optional&
        code ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        code (const code_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        code (const code_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        code (::std::auto_ptr< code_type > p);

        //@}

        /**
         * @name path
         *
         * @brief Accessor and modifier functions for the %path
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::string path_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< path_type > path_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< path_type, char > path_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const path_optional&
        path () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        path_optional&
        path ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        path (const path_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        path (const path_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        path (::std::auto_ptr< path_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ClassificationNodeType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ClassificationNodeType (const ::xercesc::DOMElement& e,
                                ::xml_schema::flags f = 0,
                                ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ClassificationNodeType (const ClassificationNodeType& x,
                                ::xml_schema::flags f = 0,
                                ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ClassificationNodeType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ClassificationNodeType&
        operator= (const ClassificationNodeType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ClassificationNodeType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ClassificationNode_sequence ClassificationNode_;
        parent_optional parent_;
        code_optional code_;
        path_optional path_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ClassificationSchemeType schema type.
       *
       * ClassificationScheme is the mapping of the same named interface in
       * ebRIM.
       * It extends RegistryObject.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ClassificationSchemeType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name ClassificationNode
         *
         * @brief Accessor and modifier functions for the %ClassificationNode
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ClassificationNodeType ClassificationNode_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< ClassificationNode_type > ClassificationNode_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef ClassificationNode_sequence::iterator ClassificationNode_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef ClassificationNode_sequence::const_iterator ClassificationNode_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< ClassificationNode_type, char > ClassificationNode_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const ClassificationNode_sequence&
        ClassificationNode () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        ClassificationNode_sequence&
        ClassificationNode ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        ClassificationNode (const ClassificationNode_sequence& s);

        //@}

        /**
         * @name isInternal
         *
         * @brief Accessor and modifier functions for the %isInternal
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::boolean isInternal_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< isInternal_type, char > isInternal_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const isInternal_type&
        isInternal () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        isInternal_type&
        isInternal ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        isInternal (const isInternal_type& x);

        //@}

        /**
         * @name nodeType
         *
         * @brief Accessor and modifier functions for the %nodeType
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI nodeType_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< nodeType_type, char > nodeType_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const nodeType_type&
        nodeType () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        nodeType_type&
        nodeType ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        nodeType (const nodeType_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        nodeType (::std::auto_ptr< nodeType_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ClassificationSchemeType (const id_type&,
                                  const isInternal_type&,
                                  const nodeType_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ClassificationSchemeType (const ::xercesc::DOMElement& e,
                                  ::xml_schema::flags f = 0,
                                  ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ClassificationSchemeType (const ClassificationSchemeType& x,
                                  ::xml_schema::flags f = 0,
                                  ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ClassificationSchemeType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ClassificationSchemeType&
        operator= (const ClassificationSchemeType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ClassificationSchemeType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ClassificationNode_sequence ClassificationNode_;
        ::xsd::cxx::tree::one< isInternal_type > isInternal_;
        ::xsd::cxx::tree::one< nodeType_type > nodeType_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ExternalIdentifierType schema type.
       *
       * ExternalIdentifier is the mapping of the same named interface in
       * ebRIM.
       * It extends RegistryObject.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ExternalIdentifierType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name registryObject
         *
         * @brief Accessor and modifier functions for the %registryObject
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI registryObject_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< registryObject_type, char > registryObject_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const registryObject_type&
        registryObject () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        registryObject_type&
        registryObject ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        registryObject (const registryObject_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        registryObject (::std::auto_ptr< registryObject_type > p);

        //@}

        /**
         * @name identificationScheme
         *
         * @brief Accessor and modifier functions for the %identificationScheme
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI identificationScheme_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< identificationScheme_type, char > identificationScheme_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const identificationScheme_type&
        identificationScheme () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        identificationScheme_type&
        identificationScheme ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        identificationScheme (const identificationScheme_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        identificationScheme (::std::auto_ptr< identificationScheme_type > p);

        //@}

        /**
         * @name value
         *
         * @brief Accessor and modifier functions for the %value
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::LongName value_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< value_type, char > value_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const value_type&
        value () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        value_type&
        value ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        value (const value_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        value (::std::auto_ptr< value_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ExternalIdentifierType (const id_type&,
                                const registryObject_type&,
                                const identificationScheme_type&,
                                const value_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ExternalIdentifierType (const ::xercesc::DOMElement& e,
                                ::xml_schema::flags f = 0,
                                ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ExternalIdentifierType (const ExternalIdentifierType& x,
                                ::xml_schema::flags f = 0,
                                ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ExternalIdentifierType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ExternalIdentifierType&
        operator= (const ExternalIdentifierType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ExternalIdentifierType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< registryObject_type > registryObject_;
        ::xsd::cxx::tree::one< identificationScheme_type > identificationScheme_;
        ::xsd::cxx::tree::one< value_type > value_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ExternalLinkType schema type.
       *
       * ExternalLink is the mapping of the same named interface in ebRIM.
       * It extends RegistryObject.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ExternalLinkType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name externalURI
         *
         * @brief Accessor and modifier functions for the %externalURI
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::uri externalURI_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< externalURI_type, char > externalURI_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const externalURI_type&
        externalURI () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        externalURI_type&
        externalURI ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        externalURI (const externalURI_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        externalURI (::std::auto_ptr< externalURI_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ExternalLinkType (const id_type&,
                          const externalURI_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ExternalLinkType (const ::xercesc::DOMElement& e,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ExternalLinkType (const ExternalLinkType& x,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ExternalLinkType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ExternalLinkType&
        operator= (const ExternalLinkType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ExternalLinkType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< externalURI_type > externalURI_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ExtrinsicObjectType schema type.
       *
       * ExtrinsicObject is the mapping of the same named interface in ebRIM.
       * It extends RegistryObject.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ExtrinsicObjectType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name ContentVersionInfo
         *
         * @brief Accessor and modifier functions for the %ContentVersionInfo
         * optional element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::VersionInfoType ContentVersionInfo_type;

        /**
         * @brief Element optional container type.
         */
        typedef ::xsd::cxx::tree::optional< ContentVersionInfo_type > ContentVersionInfo_optional;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< ContentVersionInfo_type, char > ContentVersionInfo_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const ContentVersionInfo_optional&
        ContentVersionInfo () const;

        /**
         * @brief Return a read-write reference to the element container.
         *
         * @return A reference to the optional container.
         */
        ContentVersionInfo_optional&
        ContentVersionInfo ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        ContentVersionInfo (const ContentVersionInfo_type& x);

        /**
         * @brief Set the element value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the element.
         * Otherwise the element container is set the 'not present' state.
         */
        void
        ContentVersionInfo (const ContentVersionInfo_optional& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        ContentVersionInfo (::std::auto_ptr< ContentVersionInfo_type > p);

        //@}

        /**
         * @name mimeType
         *
         * @brief Accessor and modifier functions for the %mimeType
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::LongName mimeType_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< mimeType_type, char > mimeType_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const mimeType_type&
        mimeType () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        mimeType_type&
        mimeType ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        mimeType (const mimeType_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        mimeType (::std::auto_ptr< mimeType_type > p);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return A read-only (constant) reference to the attribute's
         * default value.
         */
        static const mimeType_type&
        mimeType_default_value ();

        //@}

        /**
         * @name isOpaque
         *
         * @brief Accessor and modifier functions for the %isOpaque
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::boolean isOpaque_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< isOpaque_type, char > isOpaque_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const isOpaque_type&
        isOpaque () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        isOpaque_type&
        isOpaque ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        isOpaque (const isOpaque_type& x);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return The attribute's default value.
         */
        static isOpaque_type
        isOpaque_default_value ();

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ExtrinsicObjectType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ExtrinsicObjectType (const ::xercesc::DOMElement& e,
                             ::xml_schema::flags f = 0,
                             ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ExtrinsicObjectType (const ExtrinsicObjectType& x,
                             ::xml_schema::flags f = 0,
                             ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ExtrinsicObjectType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ExtrinsicObjectType&
        operator= (const ExtrinsicObjectType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ExtrinsicObjectType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ContentVersionInfo_optional ContentVersionInfo_;
        ::xsd::cxx::tree::one< mimeType_type > mimeType_;
        static const mimeType_type mimeType_default_value_;
        ::xsd::cxx::tree::one< isOpaque_type > isOpaque_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %OrganizationType schema type.
       *
       * Mapping of the same named interface in ebRIM.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED OrganizationType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name Address
         *
         * @brief Accessor and modifier functions for the %Address
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::PostalAddressType Address_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< Address_type > Address_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef Address_sequence::iterator Address_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef Address_sequence::const_iterator Address_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< Address_type, char > Address_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const Address_sequence&
        Address () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        Address_sequence&
        Address ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        Address (const Address_sequence& s);

        //@}

        /**
         * @name TelephoneNumber
         *
         * @brief Accessor and modifier functions for the %TelephoneNumber
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::TelephoneNumberType TelephoneNumber_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< TelephoneNumber_type > TelephoneNumber_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef TelephoneNumber_sequence::iterator TelephoneNumber_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef TelephoneNumber_sequence::const_iterator TelephoneNumber_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< TelephoneNumber_type, char > TelephoneNumber_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const TelephoneNumber_sequence&
        TelephoneNumber () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        TelephoneNumber_sequence&
        TelephoneNumber ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        TelephoneNumber (const TelephoneNumber_sequence& s);

        //@}

        /**
         * @name EmailAddress
         *
         * @brief Accessor and modifier functions for the %EmailAddress
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::EmailAddressType EmailAddress_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< EmailAddress_type > EmailAddress_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef EmailAddress_sequence::iterator EmailAddress_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef EmailAddress_sequence::const_iterator EmailAddress_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< EmailAddress_type, char > EmailAddress_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const EmailAddress_sequence&
        EmailAddress () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        EmailAddress_sequence&
        EmailAddress ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        EmailAddress (const EmailAddress_sequence& s);

        //@}

        /**
         * @name parent
         *
         * @brief Accessor and modifier functions for the %parent
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI parent_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< parent_type > parent_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< parent_type, char > parent_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const parent_optional&
        parent () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        parent_optional&
        parent ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        parent (const parent_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        parent (const parent_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        parent (::std::auto_ptr< parent_type > p);

        //@}

        /**
         * @name primaryContact
         *
         * @brief Accessor and modifier functions for the %primaryContact
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI primaryContact_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< primaryContact_type > primaryContact_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< primaryContact_type, char > primaryContact_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const primaryContact_optional&
        primaryContact () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        primaryContact_optional&
        primaryContact ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        primaryContact (const primaryContact_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        primaryContact (const primaryContact_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        primaryContact (::std::auto_ptr< primaryContact_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        OrganizationType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        OrganizationType (const ::xercesc::DOMElement& e,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        OrganizationType (const OrganizationType& x,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual OrganizationType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        OrganizationType&
        operator= (const OrganizationType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~OrganizationType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        Address_sequence Address_;
        TelephoneNumber_sequence TelephoneNumber_;
        EmailAddress_sequence EmailAddress_;
        parent_optional parent_;
        primaryContact_optional primaryContact_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %PersonNameType schema type.
       *
       * Mapping of the same named interface in ebRIM.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED PersonNameType: public ::xml_schema::type
      {
        public:
        /**
         * @name firstName
         *
         * @brief Accessor and modifier functions for the %firstName
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ShortName firstName_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< firstName_type > firstName_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< firstName_type, char > firstName_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const firstName_optional&
        firstName () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        firstName_optional&
        firstName ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        firstName (const firstName_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        firstName (const firstName_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        firstName (::std::auto_ptr< firstName_type > p);

        //@}

        /**
         * @name middleName
         *
         * @brief Accessor and modifier functions for the %middleName
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ShortName middleName_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< middleName_type > middleName_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< middleName_type, char > middleName_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const middleName_optional&
        middleName () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        middleName_optional&
        middleName ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        middleName (const middleName_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        middleName (const middleName_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        middleName (::std::auto_ptr< middleName_type > p);

        //@}

        /**
         * @name lastName
         *
         * @brief Accessor and modifier functions for the %lastName
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ShortName lastName_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< lastName_type > lastName_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< lastName_type, char > lastName_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const lastName_optional&
        lastName () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        lastName_optional&
        lastName ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        lastName (const lastName_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        lastName (const lastName_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        lastName (::std::auto_ptr< lastName_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        PersonNameType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        PersonNameType (const ::xercesc::DOMElement& e,
                        ::xml_schema::flags f = 0,
                        ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        PersonNameType (const PersonNameType& x,
                        ::xml_schema::flags f = 0,
                        ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual PersonNameType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        PersonNameType&
        operator= (const PersonNameType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~PersonNameType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        firstName_optional firstName_;
        middleName_optional middleName_;
        lastName_optional lastName_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %EmailAddressType schema type.
       *
       * Mapping of the same named interface in ebRIM.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED EmailAddressType: public ::xml_schema::type
      {
        public:
        /**
         * @name address
         *
         * @brief Accessor and modifier functions for the %address
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ShortName address_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< address_type, char > address_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const address_type&
        address () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        address_type&
        address ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        address (const address_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        address (::std::auto_ptr< address_type > p);

        //@}

        /**
         * @name type
         *
         * @brief Accessor and modifier functions for the %type
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::String32 type_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< type_type > type_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< type_type, char > type_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const type_optional&
        type () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        type_optional&
        type ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        type (const type_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        type (const type_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        type (::std::auto_ptr< type_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        EmailAddressType (const address_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        EmailAddressType (const ::xercesc::DOMElement& e,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        EmailAddressType (const EmailAddressType& x,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual EmailAddressType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        EmailAddressType&
        operator= (const EmailAddressType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~EmailAddressType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< address_type > address_;
        type_optional type_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %PostalAddressType schema type.
       *
       * Mapping of the same named interface in ebRIM.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED PostalAddressType: public ::xml_schema::type
      {
        public:
        /**
         * @name city
         *
         * @brief Accessor and modifier functions for the %city
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ShortName city_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< city_type > city_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< city_type, char > city_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const city_optional&
        city () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        city_optional&
        city ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        city (const city_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        city (const city_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        city (::std::auto_ptr< city_type > p);

        //@}

        /**
         * @name country
         *
         * @brief Accessor and modifier functions for the %country
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ShortName country_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< country_type > country_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< country_type, char > country_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const country_optional&
        country () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        country_optional&
        country ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        country (const country_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        country (const country_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        country (::std::auto_ptr< country_type > p);

        //@}

        /**
         * @name postalCode
         *
         * @brief Accessor and modifier functions for the %postalCode
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ShortName postalCode_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< postalCode_type > postalCode_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< postalCode_type, char > postalCode_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const postalCode_optional&
        postalCode () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        postalCode_optional&
        postalCode ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        postalCode (const postalCode_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        postalCode (const postalCode_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        postalCode (::std::auto_ptr< postalCode_type > p);

        //@}

        /**
         * @name stateOrProvince
         *
         * @brief Accessor and modifier functions for the %stateOrProvince
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ShortName stateOrProvince_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< stateOrProvince_type > stateOrProvince_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< stateOrProvince_type, char > stateOrProvince_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const stateOrProvince_optional&
        stateOrProvince () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        stateOrProvince_optional&
        stateOrProvince ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        stateOrProvince (const stateOrProvince_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        stateOrProvince (const stateOrProvince_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        stateOrProvince (::std::auto_ptr< stateOrProvince_type > p);

        //@}

        /**
         * @name street
         *
         * @brief Accessor and modifier functions for the %street
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ShortName street_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< street_type > street_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< street_type, char > street_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const street_optional&
        street () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        street_optional&
        street ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        street (const street_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        street (const street_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        street (::std::auto_ptr< street_type > p);

        //@}

        /**
         * @name streetNumber
         *
         * @brief Accessor and modifier functions for the %streetNumber
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::String32 streetNumber_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< streetNumber_type > streetNumber_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< streetNumber_type, char > streetNumber_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const streetNumber_optional&
        streetNumber () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        streetNumber_optional&
        streetNumber ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        streetNumber (const streetNumber_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        streetNumber (const streetNumber_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        streetNumber (::std::auto_ptr< streetNumber_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        PostalAddressType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        PostalAddressType (const ::xercesc::DOMElement& e,
                           ::xml_schema::flags f = 0,
                           ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        PostalAddressType (const PostalAddressType& x,
                           ::xml_schema::flags f = 0,
                           ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual PostalAddressType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        PostalAddressType&
        operator= (const PostalAddressType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~PostalAddressType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        city_optional city_;
        country_optional country_;
        postalCode_optional postalCode_;
        stateOrProvince_optional stateOrProvince_;
        street_optional street_;
        streetNumber_optional streetNumber_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %VersionInfoType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED VersionInfoType: public ::xml_schema::type
      {
        public:
        /**
         * @name versionName
         *
         * @brief Accessor and modifier functions for the %versionName
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::String16 versionName_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< versionName_type, char > versionName_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const versionName_type&
        versionName () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        versionName_type&
        versionName ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        versionName (const versionName_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        versionName (::std::auto_ptr< versionName_type > p);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return A read-only (constant) reference to the attribute's
         * default value.
         */
        static const versionName_type&
        versionName_default_value ();

        //@}

        /**
         * @name comment
         *
         * @brief Accessor and modifier functions for the %comment
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::string comment_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< comment_type > comment_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< comment_type, char > comment_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const comment_optional&
        comment () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        comment_optional&
        comment ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        comment (const comment_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        comment (const comment_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        comment (::std::auto_ptr< comment_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        VersionInfoType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        VersionInfoType (const ::xercesc::DOMElement& e,
                         ::xml_schema::flags f = 0,
                         ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        VersionInfoType (const VersionInfoType& x,
                         ::xml_schema::flags f = 0,
                         ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual VersionInfoType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        VersionInfoType&
        operator= (const VersionInfoType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~VersionInfoType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< versionName_type > versionName_;
        static const versionName_type versionName_default_value_;
        comment_optional comment_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %RegistryPackageType schema type.
       *
       * RegistryPackage is the mapping of the same named interface in ebRIM.
       * It extends RegistryObject.
       * A RegistryPackage is a named collection of objects.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED RegistryPackageType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name RegistryObjectList
         *
         * @brief Accessor and modifier functions for the %RegistryObjectList
         * optional element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::RegistryObjectListType RegistryObjectList_type;

        /**
         * @brief Element optional container type.
         */
        typedef ::xsd::cxx::tree::optional< RegistryObjectList_type > RegistryObjectList_optional;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< RegistryObjectList_type, char > RegistryObjectList_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const RegistryObjectList_optional&
        RegistryObjectList () const;

        /**
         * @brief Return a read-write reference to the element container.
         *
         * @return A reference to the optional container.
         */
        RegistryObjectList_optional&
        RegistryObjectList ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        RegistryObjectList (const RegistryObjectList_type& x);

        /**
         * @brief Set the element value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the element.
         * Otherwise the element container is set the 'not present' state.
         */
        void
        RegistryObjectList (const RegistryObjectList_optional& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        RegistryObjectList (::std::auto_ptr< RegistryObjectList_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        RegistryPackageType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        RegistryPackageType (const ::xercesc::DOMElement& e,
                             ::xml_schema::flags f = 0,
                             ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        RegistryPackageType (const RegistryPackageType& x,
                             ::xml_schema::flags f = 0,
                             ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual RegistryPackageType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        RegistryPackageType&
        operator= (const RegistryPackageType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~RegistryPackageType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        RegistryObjectList_optional RegistryObjectList_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ServiceType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ServiceType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name ServiceBinding
         *
         * @brief Accessor and modifier functions for the %ServiceBinding
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ServiceBindingType ServiceBinding_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< ServiceBinding_type > ServiceBinding_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef ServiceBinding_sequence::iterator ServiceBinding_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef ServiceBinding_sequence::const_iterator ServiceBinding_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< ServiceBinding_type, char > ServiceBinding_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const ServiceBinding_sequence&
        ServiceBinding () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        ServiceBinding_sequence&
        ServiceBinding ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        ServiceBinding (const ServiceBinding_sequence& s);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ServiceType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ServiceType (const ::xercesc::DOMElement& e,
                     ::xml_schema::flags f = 0,
                     ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ServiceType (const ServiceType& x,
                     ::xml_schema::flags f = 0,
                     ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ServiceType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ServiceType&
        operator= (const ServiceType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ServiceType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ServiceBinding_sequence ServiceBinding_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ServiceBindingType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ServiceBindingType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name SpecificationLink
         *
         * @brief Accessor and modifier functions for the %SpecificationLink
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::SpecificationLinkType SpecificationLink_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< SpecificationLink_type > SpecificationLink_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef SpecificationLink_sequence::iterator SpecificationLink_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef SpecificationLink_sequence::const_iterator SpecificationLink_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< SpecificationLink_type, char > SpecificationLink_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const SpecificationLink_sequence&
        SpecificationLink () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        SpecificationLink_sequence&
        SpecificationLink ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        SpecificationLink (const SpecificationLink_sequence& s);

        //@}

        /**
         * @name service
         *
         * @brief Accessor and modifier functions for the %service
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI service_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< service_type, char > service_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const service_type&
        service () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        service_type&
        service ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        service (const service_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        service (::std::auto_ptr< service_type > p);

        //@}

        /**
         * @name accessURI
         *
         * @brief Accessor and modifier functions for the %accessURI
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::uri accessURI_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< accessURI_type > accessURI_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< accessURI_type, char > accessURI_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const accessURI_optional&
        accessURI () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        accessURI_optional&
        accessURI ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        accessURI (const accessURI_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        accessURI (const accessURI_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        accessURI (::std::auto_ptr< accessURI_type > p);

        //@}

        /**
         * @name targetBinding
         *
         * @brief Accessor and modifier functions for the %targetBinding
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI targetBinding_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< targetBinding_type > targetBinding_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< targetBinding_type, char > targetBinding_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const targetBinding_optional&
        targetBinding () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        targetBinding_optional&
        targetBinding ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        targetBinding (const targetBinding_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        targetBinding (const targetBinding_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        targetBinding (::std::auto_ptr< targetBinding_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ServiceBindingType (const id_type&,
                            const service_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ServiceBindingType (const ::xercesc::DOMElement& e,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ServiceBindingType (const ServiceBindingType& x,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ServiceBindingType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ServiceBindingType&
        operator= (const ServiceBindingType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ServiceBindingType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        SpecificationLink_sequence SpecificationLink_;
        ::xsd::cxx::tree::one< service_type > service_;
        accessURI_optional accessURI_;
        targetBinding_optional targetBinding_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %SpecificationLinkType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED SpecificationLinkType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name UsageDescription
         *
         * @brief Accessor and modifier functions for the %UsageDescription
         * optional element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::InternationalStringType UsageDescription_type;

        /**
         * @brief Element optional container type.
         */
        typedef ::xsd::cxx::tree::optional< UsageDescription_type > UsageDescription_optional;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< UsageDescription_type, char > UsageDescription_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const UsageDescription_optional&
        UsageDescription () const;

        /**
         * @brief Return a read-write reference to the element container.
         *
         * @return A reference to the optional container.
         */
        UsageDescription_optional&
        UsageDescription ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        UsageDescription (const UsageDescription_type& x);

        /**
         * @brief Set the element value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the element.
         * Otherwise the element container is set the 'not present' state.
         */
        void
        UsageDescription (const UsageDescription_optional& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        UsageDescription (::std::auto_ptr< UsageDescription_type > p);

        //@}

        /**
         * @name UsageParameter
         *
         * @brief Accessor and modifier functions for the %UsageParameter
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::FreeFormText UsageParameter_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< UsageParameter_type > UsageParameter_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef UsageParameter_sequence::iterator UsageParameter_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef UsageParameter_sequence::const_iterator UsageParameter_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< UsageParameter_type, char > UsageParameter_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const UsageParameter_sequence&
        UsageParameter () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        UsageParameter_sequence&
        UsageParameter ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        UsageParameter (const UsageParameter_sequence& s);

        //@}

        /**
         * @name serviceBinding
         *
         * @brief Accessor and modifier functions for the %serviceBinding
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI serviceBinding_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< serviceBinding_type, char > serviceBinding_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const serviceBinding_type&
        serviceBinding () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        serviceBinding_type&
        serviceBinding ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        serviceBinding (const serviceBinding_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        serviceBinding (::std::auto_ptr< serviceBinding_type > p);

        //@}

        /**
         * @name specificationObject
         *
         * @brief Accessor and modifier functions for the %specificationObject
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI specificationObject_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< specificationObject_type, char > specificationObject_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const specificationObject_type&
        specificationObject () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        specificationObject_type&
        specificationObject ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        specificationObject (const specificationObject_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        specificationObject (::std::auto_ptr< specificationObject_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        SpecificationLinkType (const id_type&,
                               const serviceBinding_type&,
                               const specificationObject_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        SpecificationLinkType (const ::xercesc::DOMElement& e,
                               ::xml_schema::flags f = 0,
                               ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        SpecificationLinkType (const SpecificationLinkType& x,
                               ::xml_schema::flags f = 0,
                               ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual SpecificationLinkType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        SpecificationLinkType&
        operator= (const SpecificationLinkType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~SpecificationLinkType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        UsageDescription_optional UsageDescription_;
        UsageParameter_sequence UsageParameter_;
        ::xsd::cxx::tree::one< serviceBinding_type > serviceBinding_;
        ::xsd::cxx::tree::one< specificationObject_type > specificationObject_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %TelephoneNumberType schema type.
       *
       * TelephoneNumber is the mapping of the same named interface in ebRIM.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED TelephoneNumberType: public ::xml_schema::type
      {
        public:
        /**
         * @name areaCode
         *
         * @brief Accessor and modifier functions for the %areaCode
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::String8 areaCode_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< areaCode_type > areaCode_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< areaCode_type, char > areaCode_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const areaCode_optional&
        areaCode () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        areaCode_optional&
        areaCode ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        areaCode (const areaCode_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        areaCode (const areaCode_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        areaCode (::std::auto_ptr< areaCode_type > p);

        //@}

        /**
         * @name countryCode
         *
         * @brief Accessor and modifier functions for the %countryCode
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::String8 countryCode_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< countryCode_type > countryCode_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< countryCode_type, char > countryCode_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const countryCode_optional&
        countryCode () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        countryCode_optional&
        countryCode ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        countryCode (const countryCode_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        countryCode (const countryCode_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        countryCode (::std::auto_ptr< countryCode_type > p);

        //@}

        /**
         * @name extension
         *
         * @brief Accessor and modifier functions for the %extension
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::String8 extension_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< extension_type > extension_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< extension_type, char > extension_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const extension_optional&
        extension () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        extension_optional&
        extension ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        extension (const extension_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        extension (const extension_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        extension (::std::auto_ptr< extension_type > p);

        //@}

        /**
         * @name number
         *
         * @brief Accessor and modifier functions for the %number
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::String16 number_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< number_type > number_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< number_type, char > number_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const number_optional&
        number () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        number_optional&
        number ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        number (const number_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        number (const number_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        number (::std::auto_ptr< number_type > p);

        //@}

        /**
         * @name phoneType
         *
         * @brief Accessor and modifier functions for the %phoneType
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::String32 phoneType_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< phoneType_type > phoneType_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< phoneType_type, char > phoneType_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const phoneType_optional&
        phoneType () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        phoneType_optional&
        phoneType ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        phoneType (const phoneType_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        phoneType (const phoneType_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        phoneType (::std::auto_ptr< phoneType_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        TelephoneNumberType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        TelephoneNumberType (const ::xercesc::DOMElement& e,
                             ::xml_schema::flags f = 0,
                             ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        TelephoneNumberType (const TelephoneNumberType& x,
                             ::xml_schema::flags f = 0,
                             ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual TelephoneNumberType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        TelephoneNumberType&
        operator= (const TelephoneNumberType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~TelephoneNumberType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        areaCode_optional areaCode_;
        countryCode_optional countryCode_;
        extension_optional extension_;
        number_optional number_;
        phoneType_optional phoneType_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %TelephoneNumberListType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED TelephoneNumberListType: public ::xml_schema::type
      {
        public:
        /**
         * @name TelephoneNumber
         *
         * @brief Accessor and modifier functions for the %TelephoneNumber
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::TelephoneNumberType TelephoneNumber_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< TelephoneNumber_type > TelephoneNumber_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef TelephoneNumber_sequence::iterator TelephoneNumber_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef TelephoneNumber_sequence::const_iterator TelephoneNumber_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< TelephoneNumber_type, char > TelephoneNumber_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const TelephoneNumber_sequence&
        TelephoneNumber () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        TelephoneNumber_sequence&
        TelephoneNumber ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        TelephoneNumber (const TelephoneNumber_sequence& s);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        TelephoneNumberListType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        TelephoneNumberListType (const ::xercesc::DOMElement& e,
                                 ::xml_schema::flags f = 0,
                                 ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        TelephoneNumberListType (const TelephoneNumberListType& x,
                                 ::xml_schema::flags f = 0,
                                 ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual TelephoneNumberListType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        TelephoneNumberListType&
        operator= (const TelephoneNumberListType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~TelephoneNumberListType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        TelephoneNumber_sequence TelephoneNumber_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %PersonType schema type.
       *
       * Mapping of the same named interface in ebRIM.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED PersonType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name Address
         *
         * @brief Accessor and modifier functions for the %Address
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::PostalAddressType Address_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< Address_type > Address_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef Address_sequence::iterator Address_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef Address_sequence::const_iterator Address_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< Address_type, char > Address_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const Address_sequence&
        Address () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        Address_sequence&
        Address ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        Address (const Address_sequence& s);

        //@}

        /**
         * @name PersonName
         *
         * @brief Accessor and modifier functions for the %PersonName
         * optional element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::PersonNameType PersonName_type;

        /**
         * @brief Element optional container type.
         */
        typedef ::xsd::cxx::tree::optional< PersonName_type > PersonName_optional;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< PersonName_type, char > PersonName_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const PersonName_optional&
        PersonName () const;

        /**
         * @brief Return a read-write reference to the element container.
         *
         * @return A reference to the optional container.
         */
        PersonName_optional&
        PersonName ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        PersonName (const PersonName_type& x);

        /**
         * @brief Set the element value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the element.
         * Otherwise the element container is set the 'not present' state.
         */
        void
        PersonName (const PersonName_optional& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        PersonName (::std::auto_ptr< PersonName_type > p);

        //@}

        /**
         * @name TelephoneNumber
         *
         * @brief Accessor and modifier functions for the %TelephoneNumber
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::TelephoneNumberType TelephoneNumber_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< TelephoneNumber_type > TelephoneNumber_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef TelephoneNumber_sequence::iterator TelephoneNumber_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef TelephoneNumber_sequence::const_iterator TelephoneNumber_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< TelephoneNumber_type, char > TelephoneNumber_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const TelephoneNumber_sequence&
        TelephoneNumber () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        TelephoneNumber_sequence&
        TelephoneNumber ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        TelephoneNumber (const TelephoneNumber_sequence& s);

        //@}

        /**
         * @name EmailAddress
         *
         * @brief Accessor and modifier functions for the %EmailAddress
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::EmailAddressType EmailAddress_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< EmailAddress_type > EmailAddress_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef EmailAddress_sequence::iterator EmailAddress_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef EmailAddress_sequence::const_iterator EmailAddress_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< EmailAddress_type, char > EmailAddress_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const EmailAddress_sequence&
        EmailAddress () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        EmailAddress_sequence&
        EmailAddress ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        EmailAddress (const EmailAddress_sequence& s);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        PersonType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        PersonType (const ::xercesc::DOMElement& e,
                    ::xml_schema::flags f = 0,
                    ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        PersonType (const PersonType& x,
                    ::xml_schema::flags f = 0,
                    ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual PersonType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        PersonType&
        operator= (const PersonType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~PersonType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        Address_sequence Address_;
        PersonName_optional PersonName_;
        TelephoneNumber_sequence TelephoneNumber_;
        EmailAddress_sequence EmailAddress_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %UserType schema type.
       *
       * Mapping of the same named interface in ebRIM.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED UserType: public ::Jade::OpenGIS::regrep_3_0::PersonType
      {
        public:
        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        UserType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        UserType (const ::xercesc::DOMElement& e,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        UserType (const UserType& x,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual UserType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~UserType ();
      };

      /**
       * @brief Class corresponding to the %RegistryType schema type.
       *
       * Mapping of the same named interface in ebRIM.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED RegistryType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name operator
         *
         * @brief Accessor and modifier functions for the %operator
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI operator_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< operator_type, char > operator_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const operator_type&
        operator_ () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        operator_type&
        operator_ ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        operator_ (const operator_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        operator_ (::std::auto_ptr< operator_type > p);

        //@}

        /**
         * @name specificationVersion
         *
         * @brief Accessor and modifier functions for the %specificationVersion
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::string specificationVersion_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< specificationVersion_type, char > specificationVersion_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const specificationVersion_type&
        specificationVersion () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        specificationVersion_type&
        specificationVersion ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        specificationVersion (const specificationVersion_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        specificationVersion (::std::auto_ptr< specificationVersion_type > p);

        //@}

        /**
         * @name replicationSyncLatency
         *
         * @brief Accessor and modifier functions for the %replicationSyncLatency
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::duration replicationSyncLatency_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< replicationSyncLatency_type, char > replicationSyncLatency_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const replicationSyncLatency_type&
        replicationSyncLatency () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        replicationSyncLatency_type&
        replicationSyncLatency ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        replicationSyncLatency (const replicationSyncLatency_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        replicationSyncLatency (::std::auto_ptr< replicationSyncLatency_type > p);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return A read-only (constant) reference to the attribute's
         * default value.
         */
        static const replicationSyncLatency_type&
        replicationSyncLatency_default_value ();

        //@}

        /**
         * @name catalogingLatency
         *
         * @brief Accessor and modifier functions for the %catalogingLatency
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::duration catalogingLatency_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< catalogingLatency_type, char > catalogingLatency_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const catalogingLatency_type&
        catalogingLatency () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        catalogingLatency_type&
        catalogingLatency ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        catalogingLatency (const catalogingLatency_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        catalogingLatency (::std::auto_ptr< catalogingLatency_type > p);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return A read-only (constant) reference to the attribute's
         * default value.
         */
        static const catalogingLatency_type&
        catalogingLatency_default_value ();

        //@}

        /**
         * @name conformanceProfile
         *
         * @brief Accessor and modifier functions for the %conformanceProfile
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::conformanceProfile conformanceProfile_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< conformanceProfile_type, char > conformanceProfile_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const conformanceProfile_type&
        conformanceProfile () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        conformanceProfile_type&
        conformanceProfile ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        conformanceProfile (const conformanceProfile_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        conformanceProfile (::std::auto_ptr< conformanceProfile_type > p);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return A read-only (constant) reference to the attribute's
         * default value.
         */
        static const conformanceProfile_type&
        conformanceProfile_default_value ();

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        RegistryType (const id_type&,
                      const operator_type&,
                      const specificationVersion_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        RegistryType (const ::xercesc::DOMElement& e,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        RegistryType (const RegistryType& x,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual RegistryType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        RegistryType&
        operator= (const RegistryType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~RegistryType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< operator_type > operator__;
        ::xsd::cxx::tree::one< specificationVersion_type > specificationVersion_;
        ::xsd::cxx::tree::one< replicationSyncLatency_type > replicationSyncLatency_;
        static const replicationSyncLatency_type replicationSyncLatency_default_value_;
        ::xsd::cxx::tree::one< catalogingLatency_type > catalogingLatency_;
        static const catalogingLatency_type catalogingLatency_default_value_;
        ::xsd::cxx::tree::one< conformanceProfile_type > conformanceProfile_;
        static const conformanceProfile_type conformanceProfile_default_value_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %FederationType schema type.
       *
       * Mapping of the same named interface in ebRIM.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED FederationType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name replicationSyncLatency
         *
         * @brief Accessor and modifier functions for the %replicationSyncLatency
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::duration replicationSyncLatency_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< replicationSyncLatency_type, char > replicationSyncLatency_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const replicationSyncLatency_type&
        replicationSyncLatency () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        replicationSyncLatency_type&
        replicationSyncLatency ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        replicationSyncLatency (const replicationSyncLatency_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        replicationSyncLatency (::std::auto_ptr< replicationSyncLatency_type > p);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return A read-only (constant) reference to the attribute's
         * default value.
         */
        static const replicationSyncLatency_type&
        replicationSyncLatency_default_value ();

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        FederationType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        FederationType (const ::xercesc::DOMElement& e,
                        ::xml_schema::flags f = 0,
                        ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        FederationType (const FederationType& x,
                        ::xml_schema::flags f = 0,
                        ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual FederationType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        FederationType&
        operator= (const FederationType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~FederationType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< replicationSyncLatency_type > replicationSyncLatency_;
        static const replicationSyncLatency_type replicationSyncLatency_default_value_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %AdhocQueryType schema type.
       *
       * A registry query.
       * A QueryExpression child element is not required when invoking a stored
       * query.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED AdhocQueryType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name QueryExpression
         *
         * @brief Accessor and modifier functions for the %QueryExpression
         * optional element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::QueryExpressionType QueryExpression_type;

        /**
         * @brief Element optional container type.
         */
        typedef ::xsd::cxx::tree::optional< QueryExpression_type > QueryExpression_optional;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< QueryExpression_type, char > QueryExpression_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const QueryExpression_optional&
        QueryExpression () const;

        /**
         * @brief Return a read-write reference to the element container.
         *
         * @return A reference to the optional container.
         */
        QueryExpression_optional&
        QueryExpression ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        QueryExpression (const QueryExpression_type& x);

        /**
         * @brief Set the element value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the element.
         * Otherwise the element container is set the 'not present' state.
         */
        void
        QueryExpression (const QueryExpression_optional& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        QueryExpression (::std::auto_ptr< QueryExpression_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        AdhocQueryType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        AdhocQueryType (const ::xercesc::DOMElement& e,
                        ::xml_schema::flags f = 0,
                        ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        AdhocQueryType (const AdhocQueryType& x,
                        ::xml_schema::flags f = 0,
                        ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual AdhocQueryType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        AdhocQueryType&
        operator= (const AdhocQueryType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~AdhocQueryType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        QueryExpression_optional QueryExpression_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %QueryExpressionType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED QueryExpressionType: public ::xml_schema::type
      {
        public:
        /**
         * @name any
         *
         * @brief Accessor and modifier functions for the any wildcard.
         */
        //@{

        /**
         * @brief DOM element optional container type.
         */
        typedef ::xsd::cxx::tree::element_optional any_optional;

        /**
         * @brief Return a read-only (constant) reference to the wildcard
         * element container.
         *
         * @return A constant reference to the optional container.
         */
        const any_optional&
        any () const;

        /**
         * @brief Return a read-write reference to the wildcard element
         * container.
         *
         * @return A reference to the optional container.
         */
        any_optional&
        any ();

        /**
         * @brief Set the wildcard content.
         *
         * @param e A new element to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new wildcard content.
         */
        void
        any (const ::xercesc::DOMElement& e);

        /**
         * @brief Set the wildcard content without copying.
         *
         * @param p A new element to use.
         *
         * This function will use the passed element directly instead
         * of making a copy. For this to work the element should belong
         * to the DOM document associated with this instance.
         *
         * @see dom_document
         */
        void
        any (::xercesc::DOMElement* p);

        /**
         * @brief Set the wildcard content.
         *
         * @param x An optional container with the new element to set.
         *
         * If the element is present in @a x then this function makes a 
         * copy of this element and sets it as the new wildcard content.
         * Otherwise the element container is set the 'not present' state.
         */
        void
        any (const any_optional& x);

        //@}

        /**
         * @name queryLanguage
         *
         * @brief Accessor and modifier functions for the %queryLanguage
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI queryLanguage_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< queryLanguage_type, char > queryLanguage_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const queryLanguage_type&
        queryLanguage () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        queryLanguage_type&
        queryLanguage ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        queryLanguage (const queryLanguage_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        queryLanguage (::std::auto_ptr< queryLanguage_type > p);

        //@}

        /**
         * @brief Return a read-only (constant) reference to the DOM
         * document associated with this instance.
         *
         * @return A constant reference to the DOM document.
         *
         * The DOM document returned by this function is used to store
         * the raw XML content corresponding to wildcards.
         */
        const ::xercesc::DOMDocument&
        dom_document () const;

        /**
         * @brief Return a read-write reference to the DOM document
         * associated with this instance.
         *
         * @return A reference to the DOM document.
         *
         * The DOM document returned by this function is used to store
         * the raw XML content corresponding to wildcards.
         */
        ::xercesc::DOMDocument&
        dom_document ();

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        QueryExpressionType (const queryLanguage_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        QueryExpressionType (const ::xercesc::DOMElement& e,
                             ::xml_schema::flags f = 0,
                             ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        QueryExpressionType (const QueryExpressionType& x,
                             ::xml_schema::flags f = 0,
                             ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual QueryExpressionType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        QueryExpressionType&
        operator= (const QueryExpressionType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~QueryExpressionType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument > dom_document_;

        any_optional any_;
        ::xsd::cxx::tree::one< queryLanguage_type > queryLanguage_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %NotificationType schema type.
       *
       * Notification of registry events.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED NotificationType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name RegistryObjectList
         *
         * @brief Accessor and modifier functions for the %RegistryObjectList
         * required element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::RegistryObjectListType RegistryObjectList_type;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< RegistryObjectList_type, char > RegistryObjectList_traits;

        /**
         * @brief Return a read-only (constant) reference to the element.
         *
         * @return A constant reference to the element.
         */
        const RegistryObjectList_type&
        RegistryObjectList () const;

        /**
         * @brief Return a read-write reference to the element.
         *
         * @return A reference to the element.
         */
        RegistryObjectList_type&
        RegistryObjectList ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        RegistryObjectList (const RegistryObjectList_type& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        RegistryObjectList (::std::auto_ptr< RegistryObjectList_type > p);

        //@}

        /**
         * @name subscription
         *
         * @brief Accessor and modifier functions for the %subscription
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI subscription_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< subscription_type, char > subscription_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const subscription_type&
        subscription () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        subscription_type&
        subscription ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        subscription (const subscription_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        subscription (::std::auto_ptr< subscription_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        NotificationType (const id_type&,
                          const RegistryObjectList_type&,
                          const subscription_type&);

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes
         * (::std::auto_ptr version).
         *
         * This constructor will try to use the passed values directly
         * instead of making copies.
         */
        NotificationType (const id_type&,
                          ::std::auto_ptr< RegistryObjectList_type >,
                          const subscription_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        NotificationType (const ::xercesc::DOMElement& e,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        NotificationType (const NotificationType& x,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual NotificationType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        NotificationType&
        operator= (const NotificationType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~NotificationType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< RegistryObjectList_type > RegistryObjectList_;
        ::xsd::cxx::tree::one< subscription_type > subscription_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %SubscriptionType schema type.
       *
       * A Subscription for specified Events in an ebXML V3+ registry.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED SubscriptionType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name Action
         *
         * @brief Accessor and modifier functions for the %Action
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ActionType Action_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< Action_type > Action_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef Action_sequence::iterator Action_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef Action_sequence::const_iterator Action_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< Action_type, char > Action_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const Action_sequence&
        Action () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        Action_sequence&
        Action ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        Action (const Action_sequence& s);

        //@}

        /**
         * @name selector
         *
         * @brief Accessor and modifier functions for the %selector
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI selector_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< selector_type, char > selector_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const selector_type&
        selector () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        selector_type&
        selector ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        selector (const selector_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        selector (::std::auto_ptr< selector_type > p);

        //@}

        /**
         * @name startTime
         *
         * @brief Accessor and modifier functions for the %startTime
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::date_time startTime_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< startTime_type > startTime_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< startTime_type, char > startTime_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const startTime_optional&
        startTime () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        startTime_optional&
        startTime ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        startTime (const startTime_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        startTime (const startTime_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        startTime (::std::auto_ptr< startTime_type > p);

        //@}

        /**
         * @name endTime
         *
         * @brief Accessor and modifier functions for the %endTime
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::date_time endTime_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< endTime_type > endTime_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< endTime_type, char > endTime_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const endTime_optional&
        endTime () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        endTime_optional&
        endTime ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        endTime (const endTime_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        endTime (const endTime_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        endTime (::std::auto_ptr< endTime_type > p);

        //@}

        /**
         * @name notificationInterval
         *
         * @brief Accessor and modifier functions for the %notificationInterval
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::duration notificationInterval_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< notificationInterval_type, char > notificationInterval_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const notificationInterval_type&
        notificationInterval () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        notificationInterval_type&
        notificationInterval ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        notificationInterval (const notificationInterval_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        notificationInterval (::std::auto_ptr< notificationInterval_type > p);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return A read-only (constant) reference to the attribute's
         * default value.
         */
        static const notificationInterval_type&
        notificationInterval_default_value ();

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        SubscriptionType (const id_type&,
                          const selector_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        SubscriptionType (const ::xercesc::DOMElement& e,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        SubscriptionType (const SubscriptionType& x,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual SubscriptionType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        SubscriptionType&
        operator= (const SubscriptionType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~SubscriptionType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        Action_sequence Action_;
        ::xsd::cxx::tree::one< selector_type > selector_;
        startTime_optional startTime_;
        endTime_optional endTime_;
        ::xsd::cxx::tree::one< notificationInterval_type > notificationInterval_;
        static const notificationInterval_type notificationInterval_default_value_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ActionType schema type.
       *
       * Abstract Base type for all types of Actions.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ActionType: public ::xml_schema::type
      {
        public:
        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ActionType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ActionType (const ::xercesc::DOMElement& e,
                    ::xml_schema::flags f = 0,
                    ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a DOM attribute.
         *
         * @param a A DOM attribute to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ActionType (const ::xercesc::DOMAttr& a,
                    ::xml_schema::flags f = 0,
                    ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a string fragment.
         *
         * @param s A string fragment to extract the data from.
         * @param e A pointer to DOM element containing the string fragment.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ActionType (const ::std::string& s,
                    const ::xercesc::DOMElement* e,
                    ::xml_schema::flags f = 0,
                    ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ActionType (const ActionType& x,
                    ::xml_schema::flags f = 0,
                    ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ActionType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ActionType ();
      };

      /**
       * @brief Class corresponding to the %NotifyActionType schema type.
       *
       * Abstract Base type for all types of Notify Actions
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED NotifyActionType: public ::Jade::OpenGIS::regrep_3_0::ActionType
      {
        public:
        /**
         * @name notificationOption
         *
         * @brief Accessor and modifier functions for the %notificationOption
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI notificationOption_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< notificationOption_type, char > notificationOption_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const notificationOption_type&
        notificationOption () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        notificationOption_type&
        notificationOption ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        notificationOption (const notificationOption_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        notificationOption (::std::auto_ptr< notificationOption_type > p);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return A read-only (constant) reference to the attribute's
         * default value.
         */
        static const notificationOption_type&
        notificationOption_default_value ();

        //@}

        /**
         * @name endPoint
         *
         * @brief Accessor and modifier functions for the %endPoint
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::uri endPoint_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< endPoint_type, char > endPoint_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const endPoint_type&
        endPoint () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        endPoint_type&
        endPoint ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        endPoint (const endPoint_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        endPoint (::std::auto_ptr< endPoint_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        NotifyActionType (const endPoint_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        NotifyActionType (const ::xercesc::DOMElement& e,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        NotifyActionType (const NotifyActionType& x,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual NotifyActionType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Copy assignment operator.
         *
         * @param x An instance to make a copy of.
         * @return A reference to itself.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        NotifyActionType&
        operator= (const NotifyActionType& x);

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~NotifyActionType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< notificationOption_type > notificationOption_;
        static const notificationOption_type notificationOption_default_value_;
        ::xsd::cxx::tree::one< endPoint_type > endPoint_;

        //@endcond
      };

      /**
       * @brief Enumeration class corresponding to the %conformanceProfile
       * schema type.
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED conformanceProfile: public ::xml_schema::ncname
      {
        public:

        /**
         * @brief Underlying enum type.
         */
        enum value
        {
          registryFull,
          registryLite
        };

        /**
         * @brief Create an instance from the underlying enum value.
         *
         * @param v A enum value.
         */
        conformanceProfile (value v);

        /**
         * @brief Create an instance from a C string.
         *
         * @param v A string value.
         */
        conformanceProfile (const char* v);

        /**
         * @brief Create an instance from a string.
         *
         * @param v A string value.
         */
        conformanceProfile (const ::std::string& v);

        /**
         * @brief Create an instance from the base value.
         *
         * @param v A base value.
         */
        conformanceProfile (const ::xml_schema::ncname& v);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        conformanceProfile (const ::xercesc::DOMElement& e,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a DOM attribute.
         *
         * @param a A DOM attribute to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        conformanceProfile (const ::xercesc::DOMAttr& a,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a string fragment.
         *
         * @param s A string fragment to extract the data from.
         * @param e A pointer to DOM element containing the string fragment.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        conformanceProfile (const ::std::string& s,
                            const ::xercesc::DOMElement* e,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        conformanceProfile (const conformanceProfile& x,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual conformanceProfile*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Assign the underlying enum value.
         *
         * @param v A enum value.
         * @return A refernce to the instance.
         */
        conformanceProfile&
        operator= (value v);

        /**
         * @brief Implicit conversion operator to the underlying
         * enum value.
         *
         * @return A enum value.
         */
        virtual
        operator value () const
        {
          return _xsd_conformanceProfile_convert ();
        }

        //@cond

        protected:
        value
        _xsd_conformanceProfile_convert () const;

        public:
        static const char* const _xsd_conformanceProfile_literals_[2];
        static const value _xsd_conformanceProfile_indexes_[2];

        //@endcond
      };
    }
  }
}

#include <iosfwd>

#include <xercesc/sax/InputSource.hpp>
#include <xercesc/dom/DOMDocument.hpp>
#include <xercesc/dom/DOMErrorHandler.hpp>

namespace Jade
{
  namespace OpenGIS
  {
    namespace regrep_3_0
    {
      /**
       * @name Parsing functions for the %RegistryPackage document root.
       */
      //@{

      /**
       * @brief Parse a URI or a local file.
       *
       * @param uri A URI or a local file name.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * This function uses exceptions to report parsing errors.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (const ::std::string& uri,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a URI or a local file with an error handler.
       *
       * @param uri A URI or a local file name.
       * @param eh An error handler.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * This function reports parsing errors by calling the error handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (const ::std::string& uri,
                       ::xml_schema::error_handler& eh,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a URI or a local file with a Xerces-C++ DOM error
       * handler.
       *
       * @param uri A URI or a local file name.
       * @param eh A Xerces-C++ DOM error handler.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * This function reports parsing errors by calling the error handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (const ::std::string& uri,
                       ::xercesc::DOMErrorHandler& eh,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a standard input stream.
       *
       * @param is A standrad input stream.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * This function uses exceptions to report parsing errors.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (::std::istream& is,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a standard input stream with an error handler.
       *
       * @param is A standrad input stream.
       * @param eh An error handler.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * This function reports parsing errors by calling the error handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (::std::istream& is,
                       ::xml_schema::error_handler& eh,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a standard input stream with a Xerces-C++ DOM error
       * handler.
       *
       * @param is A standrad input stream.
       * @param eh A Xerces-C++ DOM error handler.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * This function reports parsing errors by calling the error handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (::std::istream& is,
                       ::xercesc::DOMErrorHandler& eh,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a standard input stream with a resource id.
       *
       * @param is A standrad input stream.
       * @param id A resource id.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * The resource id is used to identify the document being parsed in
       * diagnostics as well as to resolve relative paths.
       *
       * This function uses exceptions to report parsing errors.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (::std::istream& is,
                       const ::std::string& id,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a standard input stream with a resource id and an
       * error handler.
       *
       * @param is A standrad input stream.
       * @param id A resource id.
       * @param eh An error handler.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * The resource id is used to identify the document being parsed in
       * diagnostics as well as to resolve relative paths.
       *
       * This function reports parsing errors by calling the error handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (::std::istream& is,
                       const ::std::string& id,
                       ::xml_schema::error_handler& eh,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a standard input stream with a resource id and a
       * Xerces-C++ DOM error handler.
       *
       * @param is A standrad input stream.
       * @param id A resource id.
       * @param eh A Xerces-C++ DOM error handler.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * The resource id is used to identify the document being parsed in
       * diagnostics as well as to resolve relative paths.
       *
       * This function reports parsing errors by calling the error handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (::std::istream& is,
                       const ::std::string& id,
                       ::xercesc::DOMErrorHandler& eh,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a Xerces-C++ input source.
       *
       * @param is A Xerces-C++ input source.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * This function uses exceptions to report parsing errors.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (::xercesc::InputSource& is,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a Xerces-C++ input source with an error handler.
       *
       * @param is A Xerces-C++ input source.
       * @param eh An error handler.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * This function reports parsing errors by calling the error handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (::xercesc::InputSource& is,
                       ::xml_schema::error_handler& eh,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a Xerces-C++ input source with a Xerces-C++ DOM
       * error handler.
       *
       * @param is A Xerces-C++ input source.
       * @param eh A Xerces-C++ DOM error handler.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * This function reports parsing errors by calling the error handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (::xercesc::InputSource& is,
                       ::xercesc::DOMErrorHandler& eh,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a Xerces-C++ DOM document.
       *
       * @param d A Xerces-C++ DOM document.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (const ::xercesc::DOMDocument& d,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a Xerces-C++ DOM document.
       *
       * @param d A pointer to the Xerces-C++ DOM document.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * This function is normally used together with the keep_dom and
       * own_dom parsing flags to assign ownership of the DOM document
       * to the object model.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument > d,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      //@}
    }
  }
}

#include <iosfwd>

#include <xercesc/dom/DOMDocument.hpp>
#include <xercesc/dom/DOMErrorHandler.hpp>
#include <xercesc/framework/XMLFormatter.hpp>

#include <xsd/cxx/xml/dom/auto-ptr.hxx>

namespace Jade
{
  namespace OpenGIS
  {
    namespace regrep_3_0
    {
      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const referenceURI&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMAttr&, const referenceURI&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xml_schema::list_stream&,
                  const referenceURI&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const String4&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMAttr&, const String4&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xml_schema::list_stream&,
                  const String4&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const String8&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMAttr&, const String8&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xml_schema::list_stream&,
                  const String8&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const String16&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMAttr&, const String16&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xml_schema::list_stream&,
                  const String16&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const String32&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMAttr&, const String32&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xml_schema::list_stream&,
                  const String32&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ShortName&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMAttr&, const ShortName&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xml_schema::list_stream&,
                  const ShortName&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const LongName&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMAttr&, const LongName&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xml_schema::list_stream&,
                  const LongName&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const FreeFormText&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMAttr&, const FreeFormText&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xml_schema::list_stream&,
                  const FreeFormText&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const InternationalStringType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const LocalizedStringType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const SlotType1&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ValueListType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const SlotListType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const IdentifiableType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ObjectRefType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ObjectRefListType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const RegistryObjectType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const RegistryObjectListType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const AssociationType1&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const AuditableEventType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ClassificationType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ClassificationNodeType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ClassificationSchemeType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ExternalIdentifierType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ExternalLinkType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ExtrinsicObjectType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const OrganizationType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const PersonNameType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const EmailAddressType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const PostalAddressType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const VersionInfoType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const RegistryPackageType&);

      /**
       * @name Serialization functions for the %RegistryPackage document root.
       */
      //@{

      /**
       * @brief Serialize to a standard output stream.
       *
       * @param os A standrad output stream.
       * @param x An object model to serialize.
       * @param m A namespace information map.
       * @param e A character encoding to produce XML in.
       * @param f Serialization flags.
       *
       * This function uses exceptions to report serialization errors.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      RegistryPackage (::std::ostream& os,
                       const ::Jade::OpenGIS::regrep_3_0::RegistryPackageType& x, 
                       const ::xml_schema::namespace_infomap& m = ::xml_schema::namespace_infomap (),
                       const ::std::string& e = "UTF-8",
                       ::xml_schema::flags f = 0);

      /**
       * @brief Serialize to a standard output stream with an error handler.
       *
       * @param os A standrad output stream.
       * @param x An object model to serialize.
       * @param eh An error handler.
       * @param m A namespace information map.
       * @param e A character encoding to produce XML in.
       * @param f Serialization flags.
       *
       * This function reports serialization errors by calling the error
       * handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      RegistryPackage (::std::ostream& os,
                       const ::Jade::OpenGIS::regrep_3_0::RegistryPackageType& x, 
                       ::xml_schema::error_handler& eh,
                       const ::xml_schema::namespace_infomap& m = ::xml_schema::namespace_infomap (),
                       const ::std::string& e = "UTF-8",
                       ::xml_schema::flags f = 0);

      /**
       * @brief Serialize to a standard output stream with a Xerces-C++ DOM
       * error handler.
       *
       * @param os A standrad output stream.
       * @param x An object model to serialize.
       * @param eh A Xerces-C++ DOM error handler.
       * @param m A namespace information map.
       * @param e A character encoding to produce XML in.
       * @param f Serialization flags.
       *
       * This function reports serialization errors by calling the error
       * handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      RegistryPackage (::std::ostream& os,
                       const ::Jade::OpenGIS::regrep_3_0::RegistryPackageType& x, 
                       ::xercesc::DOMErrorHandler& eh,
                       const ::xml_schema::namespace_infomap& m = ::xml_schema::namespace_infomap (),
                       const ::std::string& e = "UTF-8",
                       ::xml_schema::flags f = 0);

      /**
       * @brief Serialize to a Xerces-C++ XML format target.
       *
       * @param ft A Xerces-C++ XML format target.
       * @param x An object model to serialize.
       * @param m A namespace information map.
       * @param e A character encoding to produce XML in.
       * @param f Serialization flags.
       *
       * This function uses exceptions to report serialization errors.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      RegistryPackage (::xercesc::XMLFormatTarget& ft,
                       const ::Jade::OpenGIS::regrep_3_0::RegistryPackageType& x, 
                       const ::xml_schema::namespace_infomap& m = ::xml_schema::namespace_infomap (),
                       const ::std::string& e = "UTF-8",
                       ::xml_schema::flags f = 0);

      /**
       * @brief Serialize to a Xerces-C++ XML format target with an error
       * handler.
       *
       * @param ft A Xerces-C++ XML format target.
       * @param x An object model to serialize.
       * @param eh An error handler.
       * @param m A namespace information map.
       * @param e A character encoding to produce XML in.
       * @param f Serialization flags.
       *
       * This function reports serialization errors by calling the error
       * handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      RegistryPackage (::xercesc::XMLFormatTarget& ft,
                       const ::Jade::OpenGIS::regrep_3_0::RegistryPackageType& x, 
                       ::xml_schema::error_handler& eh,
                       const ::xml_schema::namespace_infomap& m = ::xml_schema::namespace_infomap (),
                       const ::std::string& e = "UTF-8",
                       ::xml_schema::flags f = 0);

      /**
       * @brief Serialize to a Xerces-C++ XML format target with a
       * Xerces-C++ DOM error handler.
       *
       * @param ft A Xerces-C++ XML format target.
       * @param x An object model to serialize.
       * @param eh A Xerces-C++ DOM error handler.
       * @param m A namespace information map.
       * @param e A character encoding to produce XML in.
       * @param f Serialization flags.
       *
       * This function reports serialization errors by calling the error
       * handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      RegistryPackage (::xercesc::XMLFormatTarget& ft,
                       const ::Jade::OpenGIS::regrep_3_0::RegistryPackageType& x, 
                       ::xercesc::DOMErrorHandler& eh,
                       const ::xml_schema::namespace_infomap& m = ::xml_schema::namespace_infomap (),
                       const ::std::string& e = "UTF-8",
                       ::xml_schema::flags f = 0);

      /**
       * @brief Serialize to an existing Xerces-C++ DOM document.
       *
       * @param d A Xerces-C++ DOM document.
       * @param x An object model to serialize.
       * @param f Serialization flags.
       *
       * Note that it is your responsibility to create the DOM document
       * with the correct root element as well as set the necessary
       * namespace mapping attributes.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      RegistryPackage (::xercesc::DOMDocument& d,
                       const ::Jade::OpenGIS::regrep_3_0::RegistryPackageType& x,
                       ::xml_schema::flags f = 0);

      /**
       * @brief Serialize to a new Xerces-C++ DOM document.
       *
       * @param x An object model to serialize.
       * @param m A namespace information map.
       * @param f Serialization flags.
       * @return A pointer to the new Xerces-C++ DOM document.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument >
      RegistryPackage (const ::Jade::OpenGIS::regrep_3_0::RegistryPackageType& x, 
                       const ::xml_schema::namespace_infomap& m = ::xml_schema::namespace_infomap (),
                       ::xml_schema::flags f = 0);

      //@}

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ServiceType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ServiceBindingType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const SpecificationLinkType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const TelephoneNumberType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const TelephoneNumberListType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const PersonType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const UserType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const RegistryType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const FederationType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const AdhocQueryType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const QueryExpressionType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const NotificationType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const SubscriptionType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ActionType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMAttr&, const ActionType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xml_schema::list_stream&,
                  const ActionType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const NotifyActionType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const conformanceProfile&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMAttr&, const conformanceProfile&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xml_schema::list_stream&,
                  const conformanceProfile&);
    }
  }
}

#include <xsd/cxx/post.hxx>

// Begin epilogue.
//
//
// End epilogue.

#endif // E__WORK_JSMOMS_JADE_JADE_OPEN_GIS_SCHEMAS_REGREP_3_0_RIM_H
-------------- next part --------------
// Copyright (C) 2005-2010 Code Synthesis Tools CC
//
// This program was generated by CodeSynthesis XSD, an XML Schema
// to C++ data binding compiler, in the Proprietary License mode.
// You should have received a proprietary license from Code Synthesis
// Tools CC prior to generating this code. See the license text for
// conditions.
//

/**
 * @file
 * @brief Generated from rim.xsd.
 */

#ifndef E__WORK_JSMOMS_JADE_JADE_OPEN_GIS_SCHEMAS_REGREP_3_0_RIM_H
#define E__WORK_JSMOMS_JADE_JADE_OPEN_GIS_SCHEMAS_REGREP_3_0_RIM_H

// Begin prologue.
//
#include <Jade/OpenGIS/regrep/3.0/Config/Platform.h>
//
// End prologue.

#include <xsd/cxx/config.hxx>

#if (XSD_INT_VERSION != 3030000L)
#error XSD runtime version mismatch
#endif

#include <xsd/cxx/pre.hxx>

#ifndef XSD_USE_CHAR
#define XSD_USE_CHAR
#endif

#ifndef XSD_CXX_TREE_USE_CHAR
#define XSD_CXX_TREE_USE_CHAR
#endif

#include <Jade/OpenGIS/Common/xml-schema.h>

// Forward declarations.
//
namespace Jade
{
  namespace OpenGIS
  {
    namespace regrep_3_0
    {
      class referenceURI;
      class String4;
      class String8;
      class String16;
      class String32;
      class ShortName;
      class LongName;
      class FreeFormText;
      class InternationalStringType;
      class LocalizedStringType;
      class SlotType1;
      class ValueListType;
      class SlotListType;
      class IdentifiableType;
      class ObjectRefType;
      class ObjectRefListType;
      class RegistryObjectType;
      class RegistryObjectListType;
      class AssociationType1;
      class AuditableEventType;
      class ClassificationType;
      class ClassificationNodeType;
      class ClassificationSchemeType;
      class ExternalIdentifierType;
      class ExternalLinkType;
      class ExtrinsicObjectType;
      class OrganizationType;
      class PersonNameType;
      class EmailAddressType;
      class PostalAddressType;
      class VersionInfoType;
      class RegistryPackageType;
      class ServiceType;
      class ServiceBindingType;
      class SpecificationLinkType;
      class TelephoneNumberType;
      class TelephoneNumberListType;
      class PersonType;
      class UserType;
      class RegistryType;
      class FederationType;
      class AdhocQueryType;
      class QueryExpressionType;
      class NotificationType;
      class SubscriptionType;
      class ActionType;
      class NotifyActionType;
      class conformanceProfile;
    }
  }
}


#include <memory>    // std::auto_ptr
#include <limits>    // std::numeric_limits
#include <algorithm> // std::binary_search

#include <xsd/cxx/xml/char-utf8.hxx>

#include <xsd/cxx/tree/exceptions.hxx>
#include <xsd/cxx/tree/elements.hxx>
#include <xsd/cxx/tree/containers.hxx>
#include <xsd/cxx/tree/list.hxx>

#include <xsd/cxx/xml/dom/parsing-header.hxx>

#include <xsd/cxx/tree/containers-wildcard.hxx>

#include <Jade/OpenGIS/xml/xml.h>

namespace Jade
{
  namespace OpenGIS
  {
    /**
     * @brief C++ namespace for the %urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0
     * schema namespace.
     */
    namespace regrep_3_0
    {
      /**
       * @brief Class corresponding to the %referenceURI schema type.
       *
       * referenceURI is used by reference attributes within RIM.
       * Each attribute of type referenceURI references a RegistryObject with
       * specified URI as id.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED referenceURI: public ::xml_schema::uri
      {
        public:
        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        referenceURI (const ::xml_schema::uri&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        referenceURI (const ::xercesc::DOMElement& e,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a DOM attribute.
         *
         * @param a A DOM attribute to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        referenceURI (const ::xercesc::DOMAttr& a,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a string fragment.
         *
         * @param s A string fragment to extract the data from.
         * @param e A pointer to DOM element containing the string fragment.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        referenceURI (const ::std::string& s,
                      const ::xercesc::DOMElement* e,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        referenceURI (const referenceURI& x,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual referenceURI*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~referenceURI ();
      };

      /**
       * @brief Class corresponding to the %String4 schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED String4: public ::xml_schema::string
      {
        public:
        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from initializers for required 
         * elements and attributes.
         */
        String4 ();

        /**
         * @brief Create an instance from a C string and initializers
         * for required elements and attributes.
         */
        String4 (const char*);

        /**
         * @brief Create an instance from a string andinitializers
         * for required elements and attributes.
         */
        String4 (const ::std::string&);

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        String4 (const ::xml_schema::string&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String4 (const ::xercesc::DOMElement& e,
                 ::xml_schema::flags f = 0,
                 ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a DOM attribute.
         *
         * @param a A DOM attribute to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String4 (const ::xercesc::DOMAttr& a,
                 ::xml_schema::flags f = 0,
                 ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a string fragment.
         *
         * @param s A string fragment to extract the data from.
         * @param e A pointer to DOM element containing the string fragment.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String4 (const ::std::string& s,
                 const ::xercesc::DOMElement* e,
                 ::xml_schema::flags f = 0,
                 ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        String4 (const String4& x,
                 ::xml_schema::flags f = 0,
                 ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual String4*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~String4 ();
      };

      /**
       * @brief Class corresponding to the %String8 schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED String8: public ::xml_schema::string
      {
        public:
        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from initializers for required 
         * elements and attributes.
         */
        String8 ();

        /**
         * @brief Create an instance from a C string and initializers
         * for required elements and attributes.
         */
        String8 (const char*);

        /**
         * @brief Create an instance from a string andinitializers
         * for required elements and attributes.
         */
        String8 (const ::std::string&);

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        String8 (const ::xml_schema::string&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String8 (const ::xercesc::DOMElement& e,
                 ::xml_schema::flags f = 0,
                 ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a DOM attribute.
         *
         * @param a A DOM attribute to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String8 (const ::xercesc::DOMAttr& a,
                 ::xml_schema::flags f = 0,
                 ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a string fragment.
         *
         * @param s A string fragment to extract the data from.
         * @param e A pointer to DOM element containing the string fragment.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String8 (const ::std::string& s,
                 const ::xercesc::DOMElement* e,
                 ::xml_schema::flags f = 0,
                 ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        String8 (const String8& x,
                 ::xml_schema::flags f = 0,
                 ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual String8*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~String8 ();
      };

      /**
       * @brief Class corresponding to the %String16 schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED String16: public ::xml_schema::string
      {
        public:
        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from initializers for required 
         * elements and attributes.
         */
        String16 ();

        /**
         * @brief Create an instance from a C string and initializers
         * for required elements and attributes.
         */
        String16 (const char*);

        /**
         * @brief Create an instance from a string andinitializers
         * for required elements and attributes.
         */
        String16 (const ::std::string&);

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        String16 (const ::xml_schema::string&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String16 (const ::xercesc::DOMElement& e,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a DOM attribute.
         *
         * @param a A DOM attribute to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String16 (const ::xercesc::DOMAttr& a,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a string fragment.
         *
         * @param s A string fragment to extract the data from.
         * @param e A pointer to DOM element containing the string fragment.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String16 (const ::std::string& s,
                  const ::xercesc::DOMElement* e,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        String16 (const String16& x,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual String16*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~String16 ();
      };

      /**
       * @brief Class corresponding to the %String32 schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED String32: public ::xml_schema::string
      {
        public:
        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from initializers for required 
         * elements and attributes.
         */
        String32 ();

        /**
         * @brief Create an instance from a C string and initializers
         * for required elements and attributes.
         */
        String32 (const char*);

        /**
         * @brief Create an instance from a string andinitializers
         * for required elements and attributes.
         */
        String32 (const ::std::string&);

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        String32 (const ::xml_schema::string&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String32 (const ::xercesc::DOMElement& e,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a DOM attribute.
         *
         * @param a A DOM attribute to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String32 (const ::xercesc::DOMAttr& a,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a string fragment.
         *
         * @param s A string fragment to extract the data from.
         * @param e A pointer to DOM element containing the string fragment.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        String32 (const ::std::string& s,
                  const ::xercesc::DOMElement* e,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        String32 (const String32& x,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual String32*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~String32 ();
      };

      /**
       * @brief Class corresponding to the %ShortName schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ShortName: public ::xml_schema::string
      {
        public:
        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from initializers for required 
         * elements and attributes.
         */
        ShortName ();

        /**
         * @brief Create an instance from a C string and initializers
         * for required elements and attributes.
         */
        ShortName (const char*);

        /**
         * @brief Create an instance from a string andinitializers
         * for required elements and attributes.
         */
        ShortName (const ::std::string&);

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ShortName (const ::xml_schema::string&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ShortName (const ::xercesc::DOMElement& e,
                   ::xml_schema::flags f = 0,
                   ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a DOM attribute.
         *
         * @param a A DOM attribute to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ShortName (const ::xercesc::DOMAttr& a,
                   ::xml_schema::flags f = 0,
                   ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a string fragment.
         *
         * @param s A string fragment to extract the data from.
         * @param e A pointer to DOM element containing the string fragment.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ShortName (const ::std::string& s,
                   const ::xercesc::DOMElement* e,
                   ::xml_schema::flags f = 0,
                   ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ShortName (const ShortName& x,
                   ::xml_schema::flags f = 0,
                   ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ShortName*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ShortName ();
      };

      /**
       * @brief Class corresponding to the %LongName schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED LongName: public ::xml_schema::string
      {
        public:
        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from initializers for required 
         * elements and attributes.
         */
        LongName ();

        /**
         * @brief Create an instance from a C string and initializers
         * for required elements and attributes.
         */
        LongName (const char*);

        /**
         * @brief Create an instance from a string andinitializers
         * for required elements and attributes.
         */
        LongName (const ::std::string&);

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        LongName (const ::xml_schema::string&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        LongName (const ::xercesc::DOMElement& e,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a DOM attribute.
         *
         * @param a A DOM attribute to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        LongName (const ::xercesc::DOMAttr& a,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a string fragment.
         *
         * @param s A string fragment to extract the data from.
         * @param e A pointer to DOM element containing the string fragment.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        LongName (const ::std::string& s,
                  const ::xercesc::DOMElement* e,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        LongName (const LongName& x,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual LongName*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~LongName ();
      };

      /**
       * @brief Class corresponding to the %FreeFormText schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED FreeFormText: public ::xml_schema::string
      {
        public:
        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from initializers for required 
         * elements and attributes.
         */
        FreeFormText ();

        /**
         * @brief Create an instance from a C string and initializers
         * for required elements and attributes.
         */
        FreeFormText (const char*);

        /**
         * @brief Create an instance from a string andinitializers
         * for required elements and attributes.
         */
        FreeFormText (const ::std::string&);

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        FreeFormText (const ::xml_schema::string&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        FreeFormText (const ::xercesc::DOMElement& e,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a DOM attribute.
         *
         * @param a A DOM attribute to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        FreeFormText (const ::xercesc::DOMAttr& a,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a string fragment.
         *
         * @param s A string fragment to extract the data from.
         * @param e A pointer to DOM element containing the string fragment.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        FreeFormText (const ::std::string& s,
                      const ::xercesc::DOMElement* e,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        FreeFormText (const FreeFormText& x,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual FreeFormText*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~FreeFormText ();
      };

      /**
       * @brief Class corresponding to the %InternationalStringType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED InternationalStringType: public ::xml_schema::type
      {
        public:
        /**
         * @name LocalizedString
         *
         * @brief Accessor and modifier functions for the %LocalizedString
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::LocalizedStringType LocalizedString_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< LocalizedString_type > LocalizedString_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef LocalizedString_sequence::iterator LocalizedString_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef LocalizedString_sequence::const_iterator LocalizedString_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< LocalizedString_type, char > LocalizedString_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const LocalizedString_sequence&
        LocalizedString () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        LocalizedString_sequence&
        LocalizedString ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        LocalizedString (const LocalizedString_sequence& s);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        InternationalStringType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        InternationalStringType (const ::xercesc::DOMElement& e,
                                 ::xml_schema::flags f = 0,
                                 ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        InternationalStringType (const InternationalStringType& x,
                                 ::xml_schema::flags f = 0,
                                 ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual InternationalStringType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~InternationalStringType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        LocalizedString_sequence LocalizedString_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %LocalizedStringType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED LocalizedStringType: public ::xml_schema::type
      {
        public:
        /**
         * @name lang
         *
         * @brief Accessor and modifier functions for the %lang
         * optional attribute with a default value.
         *
         * Attempting to install the relevant ISO 2- and 3-letter
         * codes as the enumerated possible values is probably never
         * going to be a realistic possibility.  See
         * RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry
         * at http://www.iana.org/assignments/lang-tag-apps.htm for
         * further information.
         * 
         * The union allows for the 'un-declaration' of xml:lang with
         * the empty string.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::xml::lang lang_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< lang_type, char > lang_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const lang_type&
        lang () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        lang_type&
        lang ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        lang (const lang_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        lang (::std::auto_ptr< lang_type > p);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return A read-only (constant) reference to the attribute's
         * default value.
         */
        static const lang_type&
        lang_default_value ();

        //@}

        /**
         * @name charset
         *
         * @brief Accessor and modifier functions for the %charset
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::simple_type charset_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< charset_type, char > charset_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const charset_type&
        charset () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        charset_type&
        charset ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        charset (const charset_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        charset (::std::auto_ptr< charset_type > p);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return A read-only (constant) reference to the attribute's
         * default value.
         */
        static const charset_type&
        charset_default_value ();

        //@}

        /**
         * @name value
         *
         * @brief Accessor and modifier functions for the %value
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::FreeFormText value_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< value_type, char > value_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const value_type&
        value () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        value_type&
        value ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        value (const value_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        value (::std::auto_ptr< value_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        LocalizedStringType (const value_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        LocalizedStringType (const ::xercesc::DOMElement& e,
                             ::xml_schema::flags f = 0,
                             ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        LocalizedStringType (const LocalizedStringType& x,
                             ::xml_schema::flags f = 0,
                             ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual LocalizedStringType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~LocalizedStringType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< lang_type > lang_;
        static const lang_type lang_default_value_;
        ::xsd::cxx::tree::one< charset_type > charset_;
        static const charset_type charset_default_value_;
        ::xsd::cxx::tree::one< value_type > value_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %SlotType1 schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED SlotType1: public ::xml_schema::type
      {
        public:
        /**
         * @name ValueList
         *
         * @brief Accessor and modifier functions for the %ValueList
         * required element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ValueListType ValueList_type;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< ValueList_type, char > ValueList_traits;

        /**
         * @brief Return a read-only (constant) reference to the element.
         *
         * @return A constant reference to the element.
         */
        const ValueList_type&
        ValueList () const;

        /**
         * @brief Return a read-write reference to the element.
         *
         * @return A reference to the element.
         */
        ValueList_type&
        ValueList ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        ValueList (const ValueList_type& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        ValueList (::std::auto_ptr< ValueList_type > p);

        //@}

        /**
         * @name name
         *
         * @brief Accessor and modifier functions for the %name
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::LongName name_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< name_type, char > name_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const name_type&
        name () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        name_type&
        name ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        name (const name_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        name (::std::auto_ptr< name_type > p);

        //@}

        /**
         * @name slotType
         *
         * @brief Accessor and modifier functions for the %slotType
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI slotType_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< slotType_type > slotType_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< slotType_type, char > slotType_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const slotType_optional&
        slotType () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        slotType_optional&
        slotType ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        slotType (const slotType_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        slotType (const slotType_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        slotType (::std::auto_ptr< slotType_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        SlotType1 (const ValueList_type&,
                   const name_type&);

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes
         * (auto_ptr version).
         *
         * This constructor will try to use the passed values directly
         * instead of making copies.
         */
        SlotType1 (::std::auto_ptr< ValueList_type >&,
                   const name_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        SlotType1 (const ::xercesc::DOMElement& e,
                   ::xml_schema::flags f = 0,
                   ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        SlotType1 (const SlotType1& x,
                   ::xml_schema::flags f = 0,
                   ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual SlotType1*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~SlotType1 ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< ValueList_type > ValueList_;
        ::xsd::cxx::tree::one< name_type > name_;
        slotType_optional slotType_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ValueListType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ValueListType: public ::xml_schema::type
      {
        public:
        /**
         * @name Value
         *
         * @brief Accessor and modifier functions for the %Value
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::LongName Value_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< Value_type > Value_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef Value_sequence::iterator Value_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef Value_sequence::const_iterator Value_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< Value_type, char > Value_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const Value_sequence&
        Value () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        Value_sequence&
        Value ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        Value (const Value_sequence& s);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ValueListType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ValueListType (const ::xercesc::DOMElement& e,
                       ::xml_schema::flags f = 0,
                       ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ValueListType (const ValueListType& x,
                       ::xml_schema::flags f = 0,
                       ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ValueListType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ValueListType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        Value_sequence Value_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %SlotListType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED SlotListType: public ::xml_schema::type
      {
        public:
        /**
         * @name Slot
         *
         * @brief Accessor and modifier functions for the %Slot
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::SlotType1 Slot_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< Slot_type > Slot_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef Slot_sequence::iterator Slot_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef Slot_sequence::const_iterator Slot_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< Slot_type, char > Slot_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const Slot_sequence&
        Slot () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        Slot_sequence&
        Slot ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        Slot (const Slot_sequence& s);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        SlotListType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        SlotListType (const ::xercesc::DOMElement& e,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        SlotListType (const SlotListType& x,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual SlotListType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~SlotListType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        Slot_sequence Slot_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %IdentifiableType schema type.
       *
       * Common base type for all types that have unique identity.     
       * If id is provided and is not in proper URN syntax then it is used for
       * linkage within document and is ignored by the registry. In this case
       * the
       * registry generates a UUID URN for id attribute.
       * id must not be null when object is retrieved from the registry.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED IdentifiableType: public ::xml_schema::type
      {
        public:
        /**
         * @name Slot
         *
         * @brief Accessor and modifier functions for the %Slot
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::SlotType1 Slot_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< Slot_type > Slot_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef Slot_sequence::iterator Slot_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef Slot_sequence::const_iterator Slot_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< Slot_type, char > Slot_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const Slot_sequence&
        Slot () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        Slot_sequence&
        Slot ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        Slot (const Slot_sequence& s);

        //@}

        /**
         * @name id
         *
         * @brief Accessor and modifier functions for the %id
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::uri id_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< id_type, char > id_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const id_type&
        id () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        id_type&
        id ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        id (const id_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        id (::std::auto_ptr< id_type > p);

        //@}

        /**
         * @name home
         *
         * @brief Accessor and modifier functions for the %home
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::uri home_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< home_type > home_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< home_type, char > home_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const home_optional&
        home () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        home_optional&
        home ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        home (const home_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        home (const home_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        home (::std::auto_ptr< home_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        IdentifiableType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        IdentifiableType (const ::xercesc::DOMElement& e,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        IdentifiableType (const IdentifiableType& x,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual IdentifiableType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~IdentifiableType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        Slot_sequence Slot_;
        ::xsd::cxx::tree::one< id_type > id_;
        home_optional home_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ObjectRefType schema type.
       *
       * Use to reference an Object by its id.
       * Specifies the id attribute of the object as its id attribute.
       * id attribute in ObjectAttributes is exactly the same syntax and
       * semantics as
       * id attribute in RegistryObject.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ObjectRefType: public ::Jade::OpenGIS::regrep_3_0::IdentifiableType
      {
        public:
        /**
         * @name createReplica
         *
         * @brief Accessor and modifier functions for the %createReplica
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::boolean createReplica_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< createReplica_type, char > createReplica_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const createReplica_type&
        createReplica () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        createReplica_type&
        createReplica ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        createReplica (const createReplica_type& x);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return The attribute's default value.
         */
        static createReplica_type
        createReplica_default_value ();

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ObjectRefType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ObjectRefType (const ::xercesc::DOMElement& e,
                       ::xml_schema::flags f = 0,
                       ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ObjectRefType (const ObjectRefType& x,
                       ::xml_schema::flags f = 0,
                       ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ObjectRefType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ObjectRefType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< createReplica_type > createReplica_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ObjectRefListType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ObjectRefListType: public ::xml_schema::type
      {
        public:
        /**
         * @name ObjectRef
         *
         * @brief Accessor and modifier functions for the %ObjectRef
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ObjectRefType ObjectRef_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< ObjectRef_type > ObjectRef_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef ObjectRef_sequence::iterator ObjectRef_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef ObjectRef_sequence::const_iterator ObjectRef_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< ObjectRef_type, char > ObjectRef_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const ObjectRef_sequence&
        ObjectRef () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        ObjectRef_sequence&
        ObjectRef ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        ObjectRef (const ObjectRef_sequence& s);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ObjectRefListType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ObjectRefListType (const ::xercesc::DOMElement& e,
                           ::xml_schema::flags f = 0,
                           ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ObjectRefListType (const ObjectRefListType& x,
                           ::xml_schema::flags f = 0,
                           ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ObjectRefListType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ObjectRefListType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ObjectRef_sequence ObjectRef_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %RegistryObjectType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED RegistryObjectType: public ::Jade::OpenGIS::regrep_3_0::IdentifiableType
      {
        public:
        /**
         * @name Name
         *
         * @brief Accessor and modifier functions for the %Name
         * optional element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::InternationalStringType Name_type;

        /**
         * @brief Element optional container type.
         */
        typedef ::xsd::cxx::tree::optional< Name_type > Name_optional;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< Name_type, char > Name_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const Name_optional&
        Name () const;

        /**
         * @brief Return a read-write reference to the element container.
         *
         * @return A reference to the optional container.
         */
        Name_optional&
        Name ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        Name (const Name_type& x);

        /**
         * @brief Set the element value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the element.
         * Otherwise the element container is set the 'not present' state.
         */
        void
        Name (const Name_optional& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        Name (::std::auto_ptr< Name_type > p);

        //@}

        /**
         * @name Description
         *
         * @brief Accessor and modifier functions for the %Description
         * optional element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::InternationalStringType Description_type;

        /**
         * @brief Element optional container type.
         */
        typedef ::xsd::cxx::tree::optional< Description_type > Description_optional;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< Description_type, char > Description_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const Description_optional&
        Description () const;

        /**
         * @brief Return a read-write reference to the element container.
         *
         * @return A reference to the optional container.
         */
        Description_optional&
        Description ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        Description (const Description_type& x);

        /**
         * @brief Set the element value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the element.
         * Otherwise the element container is set the 'not present' state.
         */
        void
        Description (const Description_optional& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        Description (::std::auto_ptr< Description_type > p);

        //@}

        /**
         * @name VersionInfo
         *
         * @brief Accessor and modifier functions for the %VersionInfo
         * optional element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::VersionInfoType VersionInfo_type;

        /**
         * @brief Element optional container type.
         */
        typedef ::xsd::cxx::tree::optional< VersionInfo_type > VersionInfo_optional;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< VersionInfo_type, char > VersionInfo_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const VersionInfo_optional&
        VersionInfo () const;

        /**
         * @brief Return a read-write reference to the element container.
         *
         * @return A reference to the optional container.
         */
        VersionInfo_optional&
        VersionInfo ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        VersionInfo (const VersionInfo_type& x);

        /**
         * @brief Set the element value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the element.
         * Otherwise the element container is set the 'not present' state.
         */
        void
        VersionInfo (const VersionInfo_optional& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        VersionInfo (::std::auto_ptr< VersionInfo_type > p);

        //@}

        /**
         * @name Classification
         *
         * @brief Accessor and modifier functions for the %Classification
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ClassificationType Classification_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< Classification_type > Classification_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef Classification_sequence::iterator Classification_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef Classification_sequence::const_iterator Classification_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< Classification_type, char > Classification_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const Classification_sequence&
        Classification () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        Classification_sequence&
        Classification ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        Classification (const Classification_sequence& s);

        //@}

        /**
         * @name ExternalIdentifier
         *
         * @brief Accessor and modifier functions for the %ExternalIdentifier
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ExternalIdentifierType ExternalIdentifier_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< ExternalIdentifier_type > ExternalIdentifier_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef ExternalIdentifier_sequence::iterator ExternalIdentifier_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef ExternalIdentifier_sequence::const_iterator ExternalIdentifier_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< ExternalIdentifier_type, char > ExternalIdentifier_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const ExternalIdentifier_sequence&
        ExternalIdentifier () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        ExternalIdentifier_sequence&
        ExternalIdentifier ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        ExternalIdentifier (const ExternalIdentifier_sequence& s);

        //@}

        /**
         * @name lid
         *
         * @brief Accessor and modifier functions for the %lid
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::uri lid_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< lid_type > lid_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< lid_type, char > lid_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const lid_optional&
        lid () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        lid_optional&
        lid ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        lid (const lid_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        lid (const lid_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        lid (::std::auto_ptr< lid_type > p);

        //@}

        /**
         * @name objectType
         *
         * @brief Accessor and modifier functions for the %objectType
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI objectType_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< objectType_type > objectType_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< objectType_type, char > objectType_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const objectType_optional&
        objectType () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        objectType_optional&
        objectType ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        objectType (const objectType_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        objectType (const objectType_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        objectType (::std::auto_ptr< objectType_type > p);

        //@}

        /**
         * @name status
         *
         * @brief Accessor and modifier functions for the %status
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI status_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< status_type > status_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< status_type, char > status_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const status_optional&
        status () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        status_optional&
        status ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        status (const status_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        status (const status_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        status (::std::auto_ptr< status_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        RegistryObjectType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        RegistryObjectType (const ::xercesc::DOMElement& e,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        RegistryObjectType (const RegistryObjectType& x,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual RegistryObjectType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~RegistryObjectType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        Name_optional Name_;
        Description_optional Description_;
        VersionInfo_optional VersionInfo_;
        Classification_sequence Classification_;
        ExternalIdentifier_sequence ExternalIdentifier_;
        lid_optional lid_;
        objectType_optional objectType_;
        status_optional status_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %RegistryObjectListType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED RegistryObjectListType: public ::xml_schema::type
      {
        public:
        /**
         * @name Identifiable
         *
         * @brief Accessor and modifier functions for the %Identifiable
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::IdentifiableType Identifiable_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< Identifiable_type > Identifiable_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef Identifiable_sequence::iterator Identifiable_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef Identifiable_sequence::const_iterator Identifiable_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< Identifiable_type, char > Identifiable_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const Identifiable_sequence&
        Identifiable () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        Identifiable_sequence&
        Identifiable ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        Identifiable (const Identifiable_sequence& s);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        RegistryObjectListType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        RegistryObjectListType (const ::xercesc::DOMElement& e,
                                ::xml_schema::flags f = 0,
                                ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        RegistryObjectListType (const RegistryObjectListType& x,
                                ::xml_schema::flags f = 0,
                                ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual RegistryObjectListType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~RegistryObjectListType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        Identifiable_sequence Identifiable_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %AssociationType1 schema type.
       *
       * Association is the mapping of the same named interface in ebRIM.
       * It extends RegistryObject.
       * An Association specifies references to two previously submitted
       * registry entrys.
       * The sourceObject is id of the sourceObject in association
       * The targetObject is id of the targetObject in association
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED AssociationType1: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name associationType
         *
         * @brief Accessor and modifier functions for the %associationType
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI associationType_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< associationType_type, char > associationType_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const associationType_type&
        associationType () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        associationType_type&
        associationType ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        associationType (const associationType_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        associationType (::std::auto_ptr< associationType_type > p);

        //@}

        /**
         * @name sourceObject
         *
         * @brief Accessor and modifier functions for the %sourceObject
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI sourceObject_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< sourceObject_type, char > sourceObject_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const sourceObject_type&
        sourceObject () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        sourceObject_type&
        sourceObject ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        sourceObject (const sourceObject_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        sourceObject (::std::auto_ptr< sourceObject_type > p);

        //@}

        /**
         * @name targetObject
         *
         * @brief Accessor and modifier functions for the %targetObject
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI targetObject_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< targetObject_type, char > targetObject_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const targetObject_type&
        targetObject () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        targetObject_type&
        targetObject ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        targetObject (const targetObject_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        targetObject (::std::auto_ptr< targetObject_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        AssociationType1 (const id_type&,
                          const associationType_type&,
                          const sourceObject_type&,
                          const targetObject_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        AssociationType1 (const ::xercesc::DOMElement& e,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        AssociationType1 (const AssociationType1& x,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual AssociationType1*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~AssociationType1 ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< associationType_type > associationType_;
        ::xsd::cxx::tree::one< sourceObject_type > sourceObject_;
        ::xsd::cxx::tree::one< targetObject_type > targetObject_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %AuditableEventType schema type.
       *
       * An Event that forms an audit trail in ebXML Registry.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED AuditableEventType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name affectedObjects
         *
         * @brief Accessor and modifier functions for the %affectedObjects
         * required element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ObjectRefListType affectedObjects_type;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< affectedObjects_type, char > affectedObjects_traits;

        /**
         * @brief Return a read-only (constant) reference to the element.
         *
         * @return A constant reference to the element.
         */
        const affectedObjects_type&
        affectedObjects () const;

        /**
         * @brief Return a read-write reference to the element.
         *
         * @return A reference to the element.
         */
        affectedObjects_type&
        affectedObjects ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        affectedObjects (const affectedObjects_type& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        affectedObjects (::std::auto_ptr< affectedObjects_type > p);

        //@}

        /**
         * @name eventType
         *
         * @brief Accessor and modifier functions for the %eventType
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI eventType_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< eventType_type, char > eventType_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const eventType_type&
        eventType () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        eventType_type&
        eventType ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        eventType (const eventType_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        eventType (::std::auto_ptr< eventType_type > p);

        //@}

        /**
         * @name timestamp
         *
         * @brief Accessor and modifier functions for the %timestamp
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::date_time timestamp_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< timestamp_type, char > timestamp_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const timestamp_type&
        timestamp () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        timestamp_type&
        timestamp ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        timestamp (const timestamp_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        timestamp (::std::auto_ptr< timestamp_type > p);

        //@}

        /**
         * @name user
         *
         * @brief Accessor and modifier functions for the %user
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI user_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< user_type, char > user_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const user_type&
        user () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        user_type&
        user ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        user (const user_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        user (::std::auto_ptr< user_type > p);

        //@}

        /**
         * @name requestId
         *
         * @brief Accessor and modifier functions for the %requestId
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI requestId_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< requestId_type, char > requestId_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const requestId_type&
        requestId () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        requestId_type&
        requestId ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        requestId (const requestId_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        requestId (::std::auto_ptr< requestId_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        AuditableEventType (const id_type&,
                            const affectedObjects_type&,
                            const eventType_type&,
                            const timestamp_type&,
                            const user_type&,
                            const requestId_type&);

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes
         * (auto_ptr version).
         *
         * This constructor will try to use the passed values directly
         * instead of making copies.
         */
        AuditableEventType (const id_type&,
                            ::std::auto_ptr< affectedObjects_type >&,
                            const eventType_type&,
                            const timestamp_type&,
                            const user_type&,
                            const requestId_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        AuditableEventType (const ::xercesc::DOMElement& e,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        AuditableEventType (const AuditableEventType& x,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual AuditableEventType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~AuditableEventType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< affectedObjects_type > affectedObjects_;
        ::xsd::cxx::tree::one< eventType_type > eventType_;
        ::xsd::cxx::tree::one< timestamp_type > timestamp_;
        ::xsd::cxx::tree::one< user_type > user_;
        ::xsd::cxx::tree::one< requestId_type > requestId_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ClassificationType schema type.
       *
       * Classification is the mapping of the same named interface in ebRIM.
       * It extends RegistryObject.
       * A Classification specifies references to two registry entrys.
       * The classifiedObject is id of the Object being classified.
       * The classificationNode is id of the ClassificationNode classying the
       * object
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ClassificationType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name classificationScheme
         *
         * @brief Accessor and modifier functions for the %classificationScheme
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI classificationScheme_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< classificationScheme_type > classificationScheme_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< classificationScheme_type, char > classificationScheme_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const classificationScheme_optional&
        classificationScheme () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        classificationScheme_optional&
        classificationScheme ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        classificationScheme (const classificationScheme_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        classificationScheme (const classificationScheme_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        classificationScheme (::std::auto_ptr< classificationScheme_type > p);

        //@}

        /**
         * @name classifiedObject
         *
         * @brief Accessor and modifier functions for the %classifiedObject
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI classifiedObject_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< classifiedObject_type, char > classifiedObject_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const classifiedObject_type&
        classifiedObject () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        classifiedObject_type&
        classifiedObject ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        classifiedObject (const classifiedObject_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        classifiedObject (::std::auto_ptr< classifiedObject_type > p);

        //@}

        /**
         * @name classificationNode
         *
         * @brief Accessor and modifier functions for the %classificationNode
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI classificationNode_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< classificationNode_type > classificationNode_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< classificationNode_type, char > classificationNode_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const classificationNode_optional&
        classificationNode () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        classificationNode_optional&
        classificationNode ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        classificationNode (const classificationNode_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        classificationNode (const classificationNode_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        classificationNode (::std::auto_ptr< classificationNode_type > p);

        //@}

        /**
         * @name nodeRepresentation
         *
         * @brief Accessor and modifier functions for the %nodeRepresentation
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::LongName nodeRepresentation_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< nodeRepresentation_type > nodeRepresentation_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< nodeRepresentation_type, char > nodeRepresentation_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const nodeRepresentation_optional&
        nodeRepresentation () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        nodeRepresentation_optional&
        nodeRepresentation ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        nodeRepresentation (const nodeRepresentation_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        nodeRepresentation (const nodeRepresentation_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        nodeRepresentation (::std::auto_ptr< nodeRepresentation_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ClassificationType (const id_type&,
                            const classifiedObject_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ClassificationType (const ::xercesc::DOMElement& e,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ClassificationType (const ClassificationType& x,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ClassificationType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ClassificationType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        classificationScheme_optional classificationScheme_;
        ::xsd::cxx::tree::one< classifiedObject_type > classifiedObject_;
        classificationNode_optional classificationNode_;
        nodeRepresentation_optional nodeRepresentation_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ClassificationNodeType schema type.
       *
       * ClassificationNode is the mapping of the same named interface in
       * ebRIM.
       * It extends RegistryObject.
       * ClassificationNode is used to submit a Classification tree to the
       * Registry.
       * The parent attribute is the id to the parent node. code is an optional
       * code value for a ClassificationNode
       * often defined by an external taxonomy (e.g. NAICS)
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ClassificationNodeType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name ClassificationNode
         *
         * @brief Accessor and modifier functions for the %ClassificationNode
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ClassificationNodeType ClassificationNode_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< ClassificationNode_type > ClassificationNode_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef ClassificationNode_sequence::iterator ClassificationNode_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef ClassificationNode_sequence::const_iterator ClassificationNode_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< ClassificationNode_type, char > ClassificationNode_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const ClassificationNode_sequence&
        ClassificationNode () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        ClassificationNode_sequence&
        ClassificationNode ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        ClassificationNode (const ClassificationNode_sequence& s);

        //@}

        /**
         * @name parent
         *
         * @brief Accessor and modifier functions for the %parent
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI parent_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< parent_type > parent_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< parent_type, char > parent_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const parent_optional&
        parent () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        parent_optional&
        parent ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        parent (const parent_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        parent (const parent_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        parent (::std::auto_ptr< parent_type > p);

        //@}

        /**
         * @name code
         *
         * @brief Accessor and modifier functions for the %code
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::LongName code_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< code_type > code_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< code_type, char > code_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const code_optional&
        code () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        code_optional&
        code ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        code (const code_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        code (const code_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        code (::std::auto_ptr< code_type > p);

        //@}

        /**
         * @name path
         *
         * @brief Accessor and modifier functions for the %path
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::string path_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< path_type > path_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< path_type, char > path_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const path_optional&
        path () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        path_optional&
        path ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        path (const path_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        path (const path_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        path (::std::auto_ptr< path_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ClassificationNodeType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ClassificationNodeType (const ::xercesc::DOMElement& e,
                                ::xml_schema::flags f = 0,
                                ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ClassificationNodeType (const ClassificationNodeType& x,
                                ::xml_schema::flags f = 0,
                                ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ClassificationNodeType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ClassificationNodeType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ClassificationNode_sequence ClassificationNode_;
        parent_optional parent_;
        code_optional code_;
        path_optional path_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ClassificationSchemeType schema type.
       *
       * ClassificationScheme is the mapping of the same named interface in
       * ebRIM.
       * It extends RegistryObject.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ClassificationSchemeType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name ClassificationNode
         *
         * @brief Accessor and modifier functions for the %ClassificationNode
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ClassificationNodeType ClassificationNode_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< ClassificationNode_type > ClassificationNode_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef ClassificationNode_sequence::iterator ClassificationNode_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef ClassificationNode_sequence::const_iterator ClassificationNode_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< ClassificationNode_type, char > ClassificationNode_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const ClassificationNode_sequence&
        ClassificationNode () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        ClassificationNode_sequence&
        ClassificationNode ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        ClassificationNode (const ClassificationNode_sequence& s);

        //@}

        /**
         * @name isInternal
         *
         * @brief Accessor and modifier functions for the %isInternal
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::boolean isInternal_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< isInternal_type, char > isInternal_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const isInternal_type&
        isInternal () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        isInternal_type&
        isInternal ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        isInternal (const isInternal_type& x);

        //@}

        /**
         * @name nodeType
         *
         * @brief Accessor and modifier functions for the %nodeType
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI nodeType_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< nodeType_type, char > nodeType_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const nodeType_type&
        nodeType () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        nodeType_type&
        nodeType ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        nodeType (const nodeType_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        nodeType (::std::auto_ptr< nodeType_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ClassificationSchemeType (const id_type&,
                                  const isInternal_type&,
                                  const nodeType_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ClassificationSchemeType (const ::xercesc::DOMElement& e,
                                  ::xml_schema::flags f = 0,
                                  ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ClassificationSchemeType (const ClassificationSchemeType& x,
                                  ::xml_schema::flags f = 0,
                                  ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ClassificationSchemeType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ClassificationSchemeType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ClassificationNode_sequence ClassificationNode_;
        ::xsd::cxx::tree::one< isInternal_type > isInternal_;
        ::xsd::cxx::tree::one< nodeType_type > nodeType_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ExternalIdentifierType schema type.
       *
       * ExternalIdentifier is the mapping of the same named interface in
       * ebRIM.
       * It extends RegistryObject.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ExternalIdentifierType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name registryObject
         *
         * @brief Accessor and modifier functions for the %registryObject
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI registryObject_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< registryObject_type, char > registryObject_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const registryObject_type&
        registryObject () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        registryObject_type&
        registryObject ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        registryObject (const registryObject_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        registryObject (::std::auto_ptr< registryObject_type > p);

        //@}

        /**
         * @name identificationScheme
         *
         * @brief Accessor and modifier functions for the %identificationScheme
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI identificationScheme_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< identificationScheme_type, char > identificationScheme_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const identificationScheme_type&
        identificationScheme () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        identificationScheme_type&
        identificationScheme ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        identificationScheme (const identificationScheme_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        identificationScheme (::std::auto_ptr< identificationScheme_type > p);

        //@}

        /**
         * @name value
         *
         * @brief Accessor and modifier functions for the %value
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::LongName value_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< value_type, char > value_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const value_type&
        value () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        value_type&
        value ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        value (const value_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        value (::std::auto_ptr< value_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ExternalIdentifierType (const id_type&,
                                const registryObject_type&,
                                const identificationScheme_type&,
                                const value_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ExternalIdentifierType (const ::xercesc::DOMElement& e,
                                ::xml_schema::flags f = 0,
                                ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ExternalIdentifierType (const ExternalIdentifierType& x,
                                ::xml_schema::flags f = 0,
                                ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ExternalIdentifierType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ExternalIdentifierType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< registryObject_type > registryObject_;
        ::xsd::cxx::tree::one< identificationScheme_type > identificationScheme_;
        ::xsd::cxx::tree::one< value_type > value_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ExternalLinkType schema type.
       *
       * ExternalLink is the mapping of the same named interface in ebRIM.
       * It extends RegistryObject.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ExternalLinkType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name externalURI
         *
         * @brief Accessor and modifier functions for the %externalURI
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::uri externalURI_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< externalURI_type, char > externalURI_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const externalURI_type&
        externalURI () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        externalURI_type&
        externalURI ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        externalURI (const externalURI_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        externalURI (::std::auto_ptr< externalURI_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ExternalLinkType (const id_type&,
                          const externalURI_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ExternalLinkType (const ::xercesc::DOMElement& e,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ExternalLinkType (const ExternalLinkType& x,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ExternalLinkType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ExternalLinkType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< externalURI_type > externalURI_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ExtrinsicObjectType schema type.
       *
       * ExtrinsicObject is the mapping of the same named interface in ebRIM.
       * It extends RegistryObject.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ExtrinsicObjectType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name ContentVersionInfo
         *
         * @brief Accessor and modifier functions for the %ContentVersionInfo
         * optional element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::VersionInfoType ContentVersionInfo_type;

        /**
         * @brief Element optional container type.
         */
        typedef ::xsd::cxx::tree::optional< ContentVersionInfo_type > ContentVersionInfo_optional;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< ContentVersionInfo_type, char > ContentVersionInfo_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const ContentVersionInfo_optional&
        ContentVersionInfo () const;

        /**
         * @brief Return a read-write reference to the element container.
         *
         * @return A reference to the optional container.
         */
        ContentVersionInfo_optional&
        ContentVersionInfo ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        ContentVersionInfo (const ContentVersionInfo_type& x);

        /**
         * @brief Set the element value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the element.
         * Otherwise the element container is set the 'not present' state.
         */
        void
        ContentVersionInfo (const ContentVersionInfo_optional& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        ContentVersionInfo (::std::auto_ptr< ContentVersionInfo_type > p);

        //@}

        /**
         * @name mimeType
         *
         * @brief Accessor and modifier functions for the %mimeType
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::LongName mimeType_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< mimeType_type, char > mimeType_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const mimeType_type&
        mimeType () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        mimeType_type&
        mimeType ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        mimeType (const mimeType_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        mimeType (::std::auto_ptr< mimeType_type > p);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return A read-only (constant) reference to the attribute's
         * default value.
         */
        static const mimeType_type&
        mimeType_default_value ();

        //@}

        /**
         * @name isOpaque
         *
         * @brief Accessor and modifier functions for the %isOpaque
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::boolean isOpaque_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< isOpaque_type, char > isOpaque_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const isOpaque_type&
        isOpaque () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        isOpaque_type&
        isOpaque ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        isOpaque (const isOpaque_type& x);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return The attribute's default value.
         */
        static isOpaque_type
        isOpaque_default_value ();

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ExtrinsicObjectType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ExtrinsicObjectType (const ::xercesc::DOMElement& e,
                             ::xml_schema::flags f = 0,
                             ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ExtrinsicObjectType (const ExtrinsicObjectType& x,
                             ::xml_schema::flags f = 0,
                             ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ExtrinsicObjectType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ExtrinsicObjectType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ContentVersionInfo_optional ContentVersionInfo_;
        ::xsd::cxx::tree::one< mimeType_type > mimeType_;
        static const mimeType_type mimeType_default_value_;
        ::xsd::cxx::tree::one< isOpaque_type > isOpaque_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %OrganizationType schema type.
       *
       * Mapping of the same named interface in ebRIM.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED OrganizationType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name Address
         *
         * @brief Accessor and modifier functions for the %Address
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::PostalAddressType Address_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< Address_type > Address_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef Address_sequence::iterator Address_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef Address_sequence::const_iterator Address_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< Address_type, char > Address_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const Address_sequence&
        Address () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        Address_sequence&
        Address ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        Address (const Address_sequence& s);

        //@}

        /**
         * @name TelephoneNumber
         *
         * @brief Accessor and modifier functions for the %TelephoneNumber
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::TelephoneNumberType TelephoneNumber_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< TelephoneNumber_type > TelephoneNumber_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef TelephoneNumber_sequence::iterator TelephoneNumber_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef TelephoneNumber_sequence::const_iterator TelephoneNumber_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< TelephoneNumber_type, char > TelephoneNumber_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const TelephoneNumber_sequence&
        TelephoneNumber () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        TelephoneNumber_sequence&
        TelephoneNumber ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        TelephoneNumber (const TelephoneNumber_sequence& s);

        //@}

        /**
         * @name EmailAddress
         *
         * @brief Accessor and modifier functions for the %EmailAddress
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::EmailAddressType EmailAddress_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< EmailAddress_type > EmailAddress_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef EmailAddress_sequence::iterator EmailAddress_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef EmailAddress_sequence::const_iterator EmailAddress_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< EmailAddress_type, char > EmailAddress_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const EmailAddress_sequence&
        EmailAddress () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        EmailAddress_sequence&
        EmailAddress ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        EmailAddress (const EmailAddress_sequence& s);

        //@}

        /**
         * @name parent
         *
         * @brief Accessor and modifier functions for the %parent
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI parent_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< parent_type > parent_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< parent_type, char > parent_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const parent_optional&
        parent () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        parent_optional&
        parent ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        parent (const parent_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        parent (const parent_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        parent (::std::auto_ptr< parent_type > p);

        //@}

        /**
         * @name primaryContact
         *
         * @brief Accessor and modifier functions for the %primaryContact
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI primaryContact_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< primaryContact_type > primaryContact_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< primaryContact_type, char > primaryContact_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const primaryContact_optional&
        primaryContact () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        primaryContact_optional&
        primaryContact ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        primaryContact (const primaryContact_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        primaryContact (const primaryContact_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        primaryContact (::std::auto_ptr< primaryContact_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        OrganizationType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        OrganizationType (const ::xercesc::DOMElement& e,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        OrganizationType (const OrganizationType& x,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual OrganizationType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~OrganizationType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        Address_sequence Address_;
        TelephoneNumber_sequence TelephoneNumber_;
        EmailAddress_sequence EmailAddress_;
        parent_optional parent_;
        primaryContact_optional primaryContact_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %PersonNameType schema type.
       *
       * Mapping of the same named interface in ebRIM.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED PersonNameType: public ::xml_schema::type
      {
        public:
        /**
         * @name firstName
         *
         * @brief Accessor and modifier functions for the %firstName
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ShortName firstName_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< firstName_type > firstName_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< firstName_type, char > firstName_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const firstName_optional&
        firstName () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        firstName_optional&
        firstName ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        firstName (const firstName_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        firstName (const firstName_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        firstName (::std::auto_ptr< firstName_type > p);

        //@}

        /**
         * @name middleName
         *
         * @brief Accessor and modifier functions for the %middleName
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ShortName middleName_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< middleName_type > middleName_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< middleName_type, char > middleName_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const middleName_optional&
        middleName () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        middleName_optional&
        middleName ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        middleName (const middleName_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        middleName (const middleName_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        middleName (::std::auto_ptr< middleName_type > p);

        //@}

        /**
         * @name lastName
         *
         * @brief Accessor and modifier functions for the %lastName
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ShortName lastName_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< lastName_type > lastName_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< lastName_type, char > lastName_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const lastName_optional&
        lastName () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        lastName_optional&
        lastName ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        lastName (const lastName_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        lastName (const lastName_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        lastName (::std::auto_ptr< lastName_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        PersonNameType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        PersonNameType (const ::xercesc::DOMElement& e,
                        ::xml_schema::flags f = 0,
                        ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        PersonNameType (const PersonNameType& x,
                        ::xml_schema::flags f = 0,
                        ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual PersonNameType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~PersonNameType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        firstName_optional firstName_;
        middleName_optional middleName_;
        lastName_optional lastName_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %EmailAddressType schema type.
       *
       * Mapping of the same named interface in ebRIM.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED EmailAddressType: public ::xml_schema::type
      {
        public:
        /**
         * @name address
         *
         * @brief Accessor and modifier functions for the %address
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ShortName address_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< address_type, char > address_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const address_type&
        address () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        address_type&
        address ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        address (const address_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        address (::std::auto_ptr< address_type > p);

        //@}

        /**
         * @name type
         *
         * @brief Accessor and modifier functions for the %type
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::String32 type_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< type_type > type_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< type_type, char > type_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const type_optional&
        type () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        type_optional&
        type ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        type (const type_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        type (const type_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        type (::std::auto_ptr< type_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        EmailAddressType (const address_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        EmailAddressType (const ::xercesc::DOMElement& e,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        EmailAddressType (const EmailAddressType& x,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual EmailAddressType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~EmailAddressType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< address_type > address_;
        type_optional type_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %PostalAddressType schema type.
       *
       * Mapping of the same named interface in ebRIM.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED PostalAddressType: public ::xml_schema::type
      {
        public:
        /**
         * @name city
         *
         * @brief Accessor and modifier functions for the %city
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ShortName city_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< city_type > city_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< city_type, char > city_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const city_optional&
        city () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        city_optional&
        city ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        city (const city_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        city (const city_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        city (::std::auto_ptr< city_type > p);

        //@}

        /**
         * @name country
         *
         * @brief Accessor and modifier functions for the %country
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ShortName country_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< country_type > country_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< country_type, char > country_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const country_optional&
        country () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        country_optional&
        country ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        country (const country_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        country (const country_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        country (::std::auto_ptr< country_type > p);

        //@}

        /**
         * @name postalCode
         *
         * @brief Accessor and modifier functions for the %postalCode
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ShortName postalCode_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< postalCode_type > postalCode_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< postalCode_type, char > postalCode_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const postalCode_optional&
        postalCode () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        postalCode_optional&
        postalCode ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        postalCode (const postalCode_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        postalCode (const postalCode_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        postalCode (::std::auto_ptr< postalCode_type > p);

        //@}

        /**
         * @name stateOrProvince
         *
         * @brief Accessor and modifier functions for the %stateOrProvince
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ShortName stateOrProvince_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< stateOrProvince_type > stateOrProvince_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< stateOrProvince_type, char > stateOrProvince_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const stateOrProvince_optional&
        stateOrProvince () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        stateOrProvince_optional&
        stateOrProvince ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        stateOrProvince (const stateOrProvince_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        stateOrProvince (const stateOrProvince_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        stateOrProvince (::std::auto_ptr< stateOrProvince_type > p);

        //@}

        /**
         * @name street
         *
         * @brief Accessor and modifier functions for the %street
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ShortName street_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< street_type > street_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< street_type, char > street_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const street_optional&
        street () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        street_optional&
        street ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        street (const street_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        street (const street_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        street (::std::auto_ptr< street_type > p);

        //@}

        /**
         * @name streetNumber
         *
         * @brief Accessor and modifier functions for the %streetNumber
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::String32 streetNumber_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< streetNumber_type > streetNumber_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< streetNumber_type, char > streetNumber_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const streetNumber_optional&
        streetNumber () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        streetNumber_optional&
        streetNumber ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        streetNumber (const streetNumber_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        streetNumber (const streetNumber_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        streetNumber (::std::auto_ptr< streetNumber_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        PostalAddressType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        PostalAddressType (const ::xercesc::DOMElement& e,
                           ::xml_schema::flags f = 0,
                           ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        PostalAddressType (const PostalAddressType& x,
                           ::xml_schema::flags f = 0,
                           ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual PostalAddressType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~PostalAddressType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        city_optional city_;
        country_optional country_;
        postalCode_optional postalCode_;
        stateOrProvince_optional stateOrProvince_;
        street_optional street_;
        streetNumber_optional streetNumber_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %VersionInfoType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED VersionInfoType: public ::xml_schema::type
      {
        public:
        /**
         * @name versionName
         *
         * @brief Accessor and modifier functions for the %versionName
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::String16 versionName_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< versionName_type, char > versionName_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const versionName_type&
        versionName () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        versionName_type&
        versionName ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        versionName (const versionName_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        versionName (::std::auto_ptr< versionName_type > p);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return A read-only (constant) reference to the attribute's
         * default value.
         */
        static const versionName_type&
        versionName_default_value ();

        //@}

        /**
         * @name comment
         *
         * @brief Accessor and modifier functions for the %comment
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::string comment_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< comment_type > comment_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< comment_type, char > comment_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const comment_optional&
        comment () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        comment_optional&
        comment ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        comment (const comment_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        comment (const comment_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        comment (::std::auto_ptr< comment_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        VersionInfoType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        VersionInfoType (const ::xercesc::DOMElement& e,
                         ::xml_schema::flags f = 0,
                         ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        VersionInfoType (const VersionInfoType& x,
                         ::xml_schema::flags f = 0,
                         ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual VersionInfoType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~VersionInfoType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< versionName_type > versionName_;
        static const versionName_type versionName_default_value_;
        comment_optional comment_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %RegistryPackageType schema type.
       *
       * RegistryPackage is the mapping of the same named interface in ebRIM.
       * It extends RegistryObject.
       * A RegistryPackage is a named collection of objects.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED RegistryPackageType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name RegistryObjectList
         *
         * @brief Accessor and modifier functions for the %RegistryObjectList
         * optional element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::RegistryObjectListType RegistryObjectList_type;

        /**
         * @brief Element optional container type.
         */
        typedef ::xsd::cxx::tree::optional< RegistryObjectList_type > RegistryObjectList_optional;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< RegistryObjectList_type, char > RegistryObjectList_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const RegistryObjectList_optional&
        RegistryObjectList () const;

        /**
         * @brief Return a read-write reference to the element container.
         *
         * @return A reference to the optional container.
         */
        RegistryObjectList_optional&
        RegistryObjectList ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        RegistryObjectList (const RegistryObjectList_type& x);

        /**
         * @brief Set the element value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the element.
         * Otherwise the element container is set the 'not present' state.
         */
        void
        RegistryObjectList (const RegistryObjectList_optional& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        RegistryObjectList (::std::auto_ptr< RegistryObjectList_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        RegistryPackageType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        RegistryPackageType (const ::xercesc::DOMElement& e,
                             ::xml_schema::flags f = 0,
                             ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        RegistryPackageType (const RegistryPackageType& x,
                             ::xml_schema::flags f = 0,
                             ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual RegistryPackageType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~RegistryPackageType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        RegistryObjectList_optional RegistryObjectList_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ServiceType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ServiceType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name ServiceBinding
         *
         * @brief Accessor and modifier functions for the %ServiceBinding
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ServiceBindingType ServiceBinding_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< ServiceBinding_type > ServiceBinding_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef ServiceBinding_sequence::iterator ServiceBinding_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef ServiceBinding_sequence::const_iterator ServiceBinding_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< ServiceBinding_type, char > ServiceBinding_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const ServiceBinding_sequence&
        ServiceBinding () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        ServiceBinding_sequence&
        ServiceBinding ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        ServiceBinding (const ServiceBinding_sequence& s);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ServiceType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ServiceType (const ::xercesc::DOMElement& e,
                     ::xml_schema::flags f = 0,
                     ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ServiceType (const ServiceType& x,
                     ::xml_schema::flags f = 0,
                     ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ServiceType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ServiceType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ServiceBinding_sequence ServiceBinding_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ServiceBindingType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ServiceBindingType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name SpecificationLink
         *
         * @brief Accessor and modifier functions for the %SpecificationLink
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::SpecificationLinkType SpecificationLink_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< SpecificationLink_type > SpecificationLink_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef SpecificationLink_sequence::iterator SpecificationLink_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef SpecificationLink_sequence::const_iterator SpecificationLink_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< SpecificationLink_type, char > SpecificationLink_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const SpecificationLink_sequence&
        SpecificationLink () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        SpecificationLink_sequence&
        SpecificationLink ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        SpecificationLink (const SpecificationLink_sequence& s);

        //@}

        /**
         * @name service
         *
         * @brief Accessor and modifier functions for the %service
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI service_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< service_type, char > service_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const service_type&
        service () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        service_type&
        service ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        service (const service_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        service (::std::auto_ptr< service_type > p);

        //@}

        /**
         * @name accessURI
         *
         * @brief Accessor and modifier functions for the %accessURI
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::uri accessURI_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< accessURI_type > accessURI_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< accessURI_type, char > accessURI_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const accessURI_optional&
        accessURI () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        accessURI_optional&
        accessURI ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        accessURI (const accessURI_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        accessURI (const accessURI_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        accessURI (::std::auto_ptr< accessURI_type > p);

        //@}

        /**
         * @name targetBinding
         *
         * @brief Accessor and modifier functions for the %targetBinding
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI targetBinding_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< targetBinding_type > targetBinding_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< targetBinding_type, char > targetBinding_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const targetBinding_optional&
        targetBinding () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        targetBinding_optional&
        targetBinding ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        targetBinding (const targetBinding_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        targetBinding (const targetBinding_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        targetBinding (::std::auto_ptr< targetBinding_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ServiceBindingType (const id_type&,
                            const service_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ServiceBindingType (const ::xercesc::DOMElement& e,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ServiceBindingType (const ServiceBindingType& x,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ServiceBindingType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ServiceBindingType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        SpecificationLink_sequence SpecificationLink_;
        ::xsd::cxx::tree::one< service_type > service_;
        accessURI_optional accessURI_;
        targetBinding_optional targetBinding_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %SpecificationLinkType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED SpecificationLinkType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name UsageDescription
         *
         * @brief Accessor and modifier functions for the %UsageDescription
         * optional element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::InternationalStringType UsageDescription_type;

        /**
         * @brief Element optional container type.
         */
        typedef ::xsd::cxx::tree::optional< UsageDescription_type > UsageDescription_optional;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< UsageDescription_type, char > UsageDescription_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const UsageDescription_optional&
        UsageDescription () const;

        /**
         * @brief Return a read-write reference to the element container.
         *
         * @return A reference to the optional container.
         */
        UsageDescription_optional&
        UsageDescription ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        UsageDescription (const UsageDescription_type& x);

        /**
         * @brief Set the element value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the element.
         * Otherwise the element container is set the 'not present' state.
         */
        void
        UsageDescription (const UsageDescription_optional& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        UsageDescription (::std::auto_ptr< UsageDescription_type > p);

        //@}

        /**
         * @name UsageParameter
         *
         * @brief Accessor and modifier functions for the %UsageParameter
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::FreeFormText UsageParameter_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< UsageParameter_type > UsageParameter_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef UsageParameter_sequence::iterator UsageParameter_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef UsageParameter_sequence::const_iterator UsageParameter_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< UsageParameter_type, char > UsageParameter_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const UsageParameter_sequence&
        UsageParameter () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        UsageParameter_sequence&
        UsageParameter ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        UsageParameter (const UsageParameter_sequence& s);

        //@}

        /**
         * @name serviceBinding
         *
         * @brief Accessor and modifier functions for the %serviceBinding
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI serviceBinding_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< serviceBinding_type, char > serviceBinding_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const serviceBinding_type&
        serviceBinding () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        serviceBinding_type&
        serviceBinding ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        serviceBinding (const serviceBinding_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        serviceBinding (::std::auto_ptr< serviceBinding_type > p);

        //@}

        /**
         * @name specificationObject
         *
         * @brief Accessor and modifier functions for the %specificationObject
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI specificationObject_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< specificationObject_type, char > specificationObject_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const specificationObject_type&
        specificationObject () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        specificationObject_type&
        specificationObject ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        specificationObject (const specificationObject_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        specificationObject (::std::auto_ptr< specificationObject_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        SpecificationLinkType (const id_type&,
                               const serviceBinding_type&,
                               const specificationObject_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        SpecificationLinkType (const ::xercesc::DOMElement& e,
                               ::xml_schema::flags f = 0,
                               ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        SpecificationLinkType (const SpecificationLinkType& x,
                               ::xml_schema::flags f = 0,
                               ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual SpecificationLinkType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~SpecificationLinkType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        UsageDescription_optional UsageDescription_;
        UsageParameter_sequence UsageParameter_;
        ::xsd::cxx::tree::one< serviceBinding_type > serviceBinding_;
        ::xsd::cxx::tree::one< specificationObject_type > specificationObject_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %TelephoneNumberType schema type.
       *
       * TelephoneNumber is the mapping of the same named interface in ebRIM.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED TelephoneNumberType: public ::xml_schema::type
      {
        public:
        /**
         * @name areaCode
         *
         * @brief Accessor and modifier functions for the %areaCode
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::String8 areaCode_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< areaCode_type > areaCode_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< areaCode_type, char > areaCode_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const areaCode_optional&
        areaCode () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        areaCode_optional&
        areaCode ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        areaCode (const areaCode_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        areaCode (const areaCode_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        areaCode (::std::auto_ptr< areaCode_type > p);

        //@}

        /**
         * @name countryCode
         *
         * @brief Accessor and modifier functions for the %countryCode
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::String8 countryCode_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< countryCode_type > countryCode_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< countryCode_type, char > countryCode_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const countryCode_optional&
        countryCode () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        countryCode_optional&
        countryCode ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        countryCode (const countryCode_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        countryCode (const countryCode_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        countryCode (::std::auto_ptr< countryCode_type > p);

        //@}

        /**
         * @name extension
         *
         * @brief Accessor and modifier functions for the %extension
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::String8 extension_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< extension_type > extension_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< extension_type, char > extension_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const extension_optional&
        extension () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        extension_optional&
        extension ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        extension (const extension_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        extension (const extension_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        extension (::std::auto_ptr< extension_type > p);

        //@}

        /**
         * @name number
         *
         * @brief Accessor and modifier functions for the %number
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::String16 number_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< number_type > number_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< number_type, char > number_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const number_optional&
        number () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        number_optional&
        number ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        number (const number_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        number (const number_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        number (::std::auto_ptr< number_type > p);

        //@}

        /**
         * @name phoneType
         *
         * @brief Accessor and modifier functions for the %phoneType
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::String32 phoneType_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< phoneType_type > phoneType_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< phoneType_type, char > phoneType_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const phoneType_optional&
        phoneType () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        phoneType_optional&
        phoneType ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        phoneType (const phoneType_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        phoneType (const phoneType_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        phoneType (::std::auto_ptr< phoneType_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        TelephoneNumberType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        TelephoneNumberType (const ::xercesc::DOMElement& e,
                             ::xml_schema::flags f = 0,
                             ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        TelephoneNumberType (const TelephoneNumberType& x,
                             ::xml_schema::flags f = 0,
                             ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual TelephoneNumberType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~TelephoneNumberType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        areaCode_optional areaCode_;
        countryCode_optional countryCode_;
        extension_optional extension_;
        number_optional number_;
        phoneType_optional phoneType_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %TelephoneNumberListType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED TelephoneNumberListType: public ::xml_schema::type
      {
        public:
        /**
         * @name TelephoneNumber
         *
         * @brief Accessor and modifier functions for the %TelephoneNumber
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::TelephoneNumberType TelephoneNumber_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< TelephoneNumber_type > TelephoneNumber_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef TelephoneNumber_sequence::iterator TelephoneNumber_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef TelephoneNumber_sequence::const_iterator TelephoneNumber_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< TelephoneNumber_type, char > TelephoneNumber_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const TelephoneNumber_sequence&
        TelephoneNumber () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        TelephoneNumber_sequence&
        TelephoneNumber ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        TelephoneNumber (const TelephoneNumber_sequence& s);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        TelephoneNumberListType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        TelephoneNumberListType (const ::xercesc::DOMElement& e,
                                 ::xml_schema::flags f = 0,
                                 ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        TelephoneNumberListType (const TelephoneNumberListType& x,
                                 ::xml_schema::flags f = 0,
                                 ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual TelephoneNumberListType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~TelephoneNumberListType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        TelephoneNumber_sequence TelephoneNumber_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %PersonType schema type.
       *
       * Mapping of the same named interface in ebRIM.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED PersonType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name Address
         *
         * @brief Accessor and modifier functions for the %Address
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::PostalAddressType Address_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< Address_type > Address_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef Address_sequence::iterator Address_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef Address_sequence::const_iterator Address_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< Address_type, char > Address_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const Address_sequence&
        Address () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        Address_sequence&
        Address ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        Address (const Address_sequence& s);

        //@}

        /**
         * @name PersonName
         *
         * @brief Accessor and modifier functions for the %PersonName
         * optional element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::PersonNameType PersonName_type;

        /**
         * @brief Element optional container type.
         */
        typedef ::xsd::cxx::tree::optional< PersonName_type > PersonName_optional;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< PersonName_type, char > PersonName_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const PersonName_optional&
        PersonName () const;

        /**
         * @brief Return a read-write reference to the element container.
         *
         * @return A reference to the optional container.
         */
        PersonName_optional&
        PersonName ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        PersonName (const PersonName_type& x);

        /**
         * @brief Set the element value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the element.
         * Otherwise the element container is set the 'not present' state.
         */
        void
        PersonName (const PersonName_optional& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        PersonName (::std::auto_ptr< PersonName_type > p);

        //@}

        /**
         * @name TelephoneNumber
         *
         * @brief Accessor and modifier functions for the %TelephoneNumber
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::TelephoneNumberType TelephoneNumber_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< TelephoneNumber_type > TelephoneNumber_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef TelephoneNumber_sequence::iterator TelephoneNumber_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef TelephoneNumber_sequence::const_iterator TelephoneNumber_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< TelephoneNumber_type, char > TelephoneNumber_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const TelephoneNumber_sequence&
        TelephoneNumber () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        TelephoneNumber_sequence&
        TelephoneNumber ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        TelephoneNumber (const TelephoneNumber_sequence& s);

        //@}

        /**
         * @name EmailAddress
         *
         * @brief Accessor and modifier functions for the %EmailAddress
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::EmailAddressType EmailAddress_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< EmailAddress_type > EmailAddress_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef EmailAddress_sequence::iterator EmailAddress_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef EmailAddress_sequence::const_iterator EmailAddress_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< EmailAddress_type, char > EmailAddress_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const EmailAddress_sequence&
        EmailAddress () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        EmailAddress_sequence&
        EmailAddress ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        EmailAddress (const EmailAddress_sequence& s);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        PersonType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        PersonType (const ::xercesc::DOMElement& e,
                    ::xml_schema::flags f = 0,
                    ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        PersonType (const PersonType& x,
                    ::xml_schema::flags f = 0,
                    ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual PersonType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~PersonType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        Address_sequence Address_;
        PersonName_optional PersonName_;
        TelephoneNumber_sequence TelephoneNumber_;
        EmailAddress_sequence EmailAddress_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %UserType schema type.
       *
       * Mapping of the same named interface in ebRIM.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED UserType: public ::Jade::OpenGIS::regrep_3_0::PersonType
      {
        public:
        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        UserType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        UserType (const ::xercesc::DOMElement& e,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        UserType (const UserType& x,
                  ::xml_schema::flags f = 0,
                  ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual UserType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~UserType ();
      };

      /**
       * @brief Class corresponding to the %RegistryType schema type.
       *
       * Mapping of the same named interface in ebRIM.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED RegistryType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name operator
         *
         * @brief Accessor and modifier functions for the %operator
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI operator_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< operator_type, char > operator_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const operator_type&
        operator_ () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        operator_type&
        operator_ ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        operator_ (const operator_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        operator_ (::std::auto_ptr< operator_type > p);

        //@}

        /**
         * @name specificationVersion
         *
         * @brief Accessor and modifier functions for the %specificationVersion
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::string specificationVersion_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< specificationVersion_type, char > specificationVersion_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const specificationVersion_type&
        specificationVersion () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        specificationVersion_type&
        specificationVersion ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        specificationVersion (const specificationVersion_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        specificationVersion (::std::auto_ptr< specificationVersion_type > p);

        //@}

        /**
         * @name replicationSyncLatency
         *
         * @brief Accessor and modifier functions for the %replicationSyncLatency
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::duration replicationSyncLatency_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< replicationSyncLatency_type, char > replicationSyncLatency_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const replicationSyncLatency_type&
        replicationSyncLatency () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        replicationSyncLatency_type&
        replicationSyncLatency ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        replicationSyncLatency (const replicationSyncLatency_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        replicationSyncLatency (::std::auto_ptr< replicationSyncLatency_type > p);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return A read-only (constant) reference to the attribute's
         * default value.
         */
        static const replicationSyncLatency_type&
        replicationSyncLatency_default_value ();

        //@}

        /**
         * @name catalogingLatency
         *
         * @brief Accessor and modifier functions for the %catalogingLatency
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::duration catalogingLatency_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< catalogingLatency_type, char > catalogingLatency_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const catalogingLatency_type&
        catalogingLatency () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        catalogingLatency_type&
        catalogingLatency ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        catalogingLatency (const catalogingLatency_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        catalogingLatency (::std::auto_ptr< catalogingLatency_type > p);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return A read-only (constant) reference to the attribute's
         * default value.
         */
        static const catalogingLatency_type&
        catalogingLatency_default_value ();

        //@}

        /**
         * @name conformanceProfile
         *
         * @brief Accessor and modifier functions for the %conformanceProfile
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::conformanceProfile conformanceProfile_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< conformanceProfile_type, char > conformanceProfile_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const conformanceProfile_type&
        conformanceProfile () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        conformanceProfile_type&
        conformanceProfile ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        conformanceProfile (const conformanceProfile_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        conformanceProfile (::std::auto_ptr< conformanceProfile_type > p);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return A read-only (constant) reference to the attribute's
         * default value.
         */
        static const conformanceProfile_type&
        conformanceProfile_default_value ();

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        RegistryType (const id_type&,
                      const operator_type&,
                      const specificationVersion_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        RegistryType (const ::xercesc::DOMElement& e,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        RegistryType (const RegistryType& x,
                      ::xml_schema::flags f = 0,
                      ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual RegistryType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~RegistryType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< operator_type > operator__;
        ::xsd::cxx::tree::one< specificationVersion_type > specificationVersion_;
        ::xsd::cxx::tree::one< replicationSyncLatency_type > replicationSyncLatency_;
        static const replicationSyncLatency_type replicationSyncLatency_default_value_;
        ::xsd::cxx::tree::one< catalogingLatency_type > catalogingLatency_;
        static const catalogingLatency_type catalogingLatency_default_value_;
        ::xsd::cxx::tree::one< conformanceProfile_type > conformanceProfile_;
        static const conformanceProfile_type conformanceProfile_default_value_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %FederationType schema type.
       *
       * Mapping of the same named interface in ebRIM.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED FederationType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name replicationSyncLatency
         *
         * @brief Accessor and modifier functions for the %replicationSyncLatency
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::duration replicationSyncLatency_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< replicationSyncLatency_type, char > replicationSyncLatency_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const replicationSyncLatency_type&
        replicationSyncLatency () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        replicationSyncLatency_type&
        replicationSyncLatency ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        replicationSyncLatency (const replicationSyncLatency_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        replicationSyncLatency (::std::auto_ptr< replicationSyncLatency_type > p);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return A read-only (constant) reference to the attribute's
         * default value.
         */
        static const replicationSyncLatency_type&
        replicationSyncLatency_default_value ();

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        FederationType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        FederationType (const ::xercesc::DOMElement& e,
                        ::xml_schema::flags f = 0,
                        ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        FederationType (const FederationType& x,
                        ::xml_schema::flags f = 0,
                        ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual FederationType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~FederationType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< replicationSyncLatency_type > replicationSyncLatency_;
        static const replicationSyncLatency_type replicationSyncLatency_default_value_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %AdhocQueryType schema type.
       *
       * A registry query.
       * A QueryExpression child element is not required when invoking a stored
       * query.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED AdhocQueryType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name QueryExpression
         *
         * @brief Accessor and modifier functions for the %QueryExpression
         * optional element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::QueryExpressionType QueryExpression_type;

        /**
         * @brief Element optional container type.
         */
        typedef ::xsd::cxx::tree::optional< QueryExpression_type > QueryExpression_optional;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< QueryExpression_type, char > QueryExpression_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const QueryExpression_optional&
        QueryExpression () const;

        /**
         * @brief Return a read-write reference to the element container.
         *
         * @return A reference to the optional container.
         */
        QueryExpression_optional&
        QueryExpression ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        QueryExpression (const QueryExpression_type& x);

        /**
         * @brief Set the element value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the element.
         * Otherwise the element container is set the 'not present' state.
         */
        void
        QueryExpression (const QueryExpression_optional& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        QueryExpression (::std::auto_ptr< QueryExpression_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        AdhocQueryType (const id_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        AdhocQueryType (const ::xercesc::DOMElement& e,
                        ::xml_schema::flags f = 0,
                        ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        AdhocQueryType (const AdhocQueryType& x,
                        ::xml_schema::flags f = 0,
                        ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual AdhocQueryType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~AdhocQueryType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        QueryExpression_optional QueryExpression_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %QueryExpressionType schema type.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED QueryExpressionType: public ::xml_schema::type
      {
        public:
        /**
         * @name any
         *
         * @brief Accessor and modifier functions for the any wildcard.
         */
        //@{

        /**
         * @brief DOM element optional container type.
         */
        typedef ::xsd::cxx::tree::element_optional any_optional;

        /**
         * @brief Return a read-only (constant) reference to the wildcard
         * element container.
         *
         * @return A constant reference to the optional container.
         */
        const any_optional&
        any () const;

        /**
         * @brief Return a read-write reference to the wildcard element
         * container.
         *
         * @return A reference to the optional container.
         */
        any_optional&
        any ();

        /**
         * @brief Set the wildcard content.
         *
         * @param e A new element to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new wildcard content.
         */
        void
        any (const ::xercesc::DOMElement& e);

        /**
         * @brief Set the wildcard content without copying.
         *
         * @param p A new element to use.
         *
         * This function will use the passed element directly instead
         * of making a copy. For this to work the element should belong
         * to the DOM document associated with this instance.
         *
         * @see dom_document
         */
        void
        any (::xercesc::DOMElement* p);

        /**
         * @brief Set the wildcard content.
         *
         * @param x An optional container with the new element to set.
         *
         * If the element is present in @a x then this function makes a 
         * copy of this element and sets it as the new wildcard content.
         * Otherwise the element container is set the 'not present' state.
         */
        void
        any (const any_optional& x);

        //@}

        /**
         * @name queryLanguage
         *
         * @brief Accessor and modifier functions for the %queryLanguage
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI queryLanguage_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< queryLanguage_type, char > queryLanguage_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const queryLanguage_type&
        queryLanguage () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        queryLanguage_type&
        queryLanguage ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        queryLanguage (const queryLanguage_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        queryLanguage (::std::auto_ptr< queryLanguage_type > p);

        //@}

        /**
         * @brief Return a read-only (constant) reference to the DOM
         * document associated with this instance.
         *
         * @return A constant reference to the DOM document.
         *
         * The DOM document returned by this function is used to store
         * the raw XML content corresponding to wildcards.
         */
        const ::xercesc::DOMDocument&
        dom_document () const;

        /**
         * @brief Return a read-write reference to the DOM document
         * associated with this instance.
         *
         * @return A reference to the DOM document.
         *
         * The DOM document returned by this function is used to store
         * the raw XML content corresponding to wildcards.
         */
        ::xercesc::DOMDocument&
        dom_document ();

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        QueryExpressionType (const queryLanguage_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        QueryExpressionType (const ::xercesc::DOMElement& e,
                             ::xml_schema::flags f = 0,
                             ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        QueryExpressionType (const QueryExpressionType& x,
                             ::xml_schema::flags f = 0,
                             ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual QueryExpressionType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~QueryExpressionType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument > dom_document_;

        any_optional any_;
        ::xsd::cxx::tree::one< queryLanguage_type > queryLanguage_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %NotificationType schema type.
       *
       * Notification of registry events.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED NotificationType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name RegistryObjectList
         *
         * @brief Accessor and modifier functions for the %RegistryObjectList
         * required element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::RegistryObjectListType RegistryObjectList_type;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< RegistryObjectList_type, char > RegistryObjectList_traits;

        /**
         * @brief Return a read-only (constant) reference to the element.
         *
         * @return A constant reference to the element.
         */
        const RegistryObjectList_type&
        RegistryObjectList () const;

        /**
         * @brief Return a read-write reference to the element.
         *
         * @return A reference to the element.
         */
        RegistryObjectList_type&
        RegistryObjectList ();

        /**
         * @brief Set the element value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the element.
         */
        void
        RegistryObjectList (const RegistryObjectList_type& x);

        /**
         * @brief Set the element value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        RegistryObjectList (::std::auto_ptr< RegistryObjectList_type > p);

        //@}

        /**
         * @name subscription
         *
         * @brief Accessor and modifier functions for the %subscription
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI subscription_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< subscription_type, char > subscription_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const subscription_type&
        subscription () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        subscription_type&
        subscription ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        subscription (const subscription_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        subscription (::std::auto_ptr< subscription_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        NotificationType (const id_type&,
                          const RegistryObjectList_type&,
                          const subscription_type&);

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes
         * (auto_ptr version).
         *
         * This constructor will try to use the passed values directly
         * instead of making copies.
         */
        NotificationType (const id_type&,
                          ::std::auto_ptr< RegistryObjectList_type >&,
                          const subscription_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        NotificationType (const ::xercesc::DOMElement& e,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        NotificationType (const NotificationType& x,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual NotificationType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~NotificationType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< RegistryObjectList_type > RegistryObjectList_;
        ::xsd::cxx::tree::one< subscription_type > subscription_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %SubscriptionType schema type.
       *
       * A Subscription for specified Events in an ebXML V3+ registry.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED SubscriptionType: public ::Jade::OpenGIS::regrep_3_0::RegistryObjectType
      {
        public:
        /**
         * @name Action
         *
         * @brief Accessor and modifier functions for the %Action
         * sequence element.
         */
        //@{

        /**
         * @brief Element type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::ActionType Action_type;

        /**
         * @brief Element sequence container type.
         */
        typedef ::xsd::cxx::tree::sequence< Action_type > Action_sequence;

        /**
         * @brief Element iterator type.
         */
        typedef Action_sequence::iterator Action_iterator;

        /**
         * @brief Element constant iterator type.
         */
        typedef Action_sequence::const_iterator Action_const_iterator;

        /**
         * @brief Element traits type.
         */
        typedef ::xsd::cxx::tree::traits< Action_type, char > Action_traits;

        /**
         * @brief Return a read-only (constant) reference to the element
         * sequence.
         *
         * @return A constant reference to the sequence container.
         */
        const Action_sequence&
        Action () const;

        /**
         * @brief Return a read-write reference to the element sequence.
         *
         * @return A reference to the sequence container.
         */
        Action_sequence&
        Action ();

        /**
         * @brief Copy elements from a given sequence.
         *
         * @param s A sequence to copy elements from.
         *
         * For each element in @a s this function makes a copy and adds it 
         * to the sequence. Note that this operation completely changes the 
         * sequence and all old elements will be lost.
         */
        void
        Action (const Action_sequence& s);

        //@}

        /**
         * @name selector
         *
         * @brief Accessor and modifier functions for the %selector
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI selector_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< selector_type, char > selector_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const selector_type&
        selector () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        selector_type&
        selector ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        selector (const selector_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        selector (::std::auto_ptr< selector_type > p);

        //@}

        /**
         * @name startTime
         *
         * @brief Accessor and modifier functions for the %startTime
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::date_time startTime_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< startTime_type > startTime_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< startTime_type, char > startTime_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const startTime_optional&
        startTime () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        startTime_optional&
        startTime ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        startTime (const startTime_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        startTime (const startTime_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        startTime (::std::auto_ptr< startTime_type > p);

        //@}

        /**
         * @name endTime
         *
         * @brief Accessor and modifier functions for the %endTime
         * optional attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::date_time endTime_type;

        /**
         * @brief Attribute optional container type.
         */
        typedef ::xsd::cxx::tree::optional< endTime_type > endTime_optional;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< endTime_type, char > endTime_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute
         * container.
         *
         * @return A constant reference to the optional container.
         */
        const endTime_optional&
        endTime () const;

        /**
         * @brief Return a read-write reference to the attribute container.
         *
         * @return A reference to the optional container.
         */
        endTime_optional&
        endTime ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        endTime (const endTime_type& x);

        /**
         * @brief Set the attribute value.
         *
         * @param x An optional container with the new value to set.
         *
         * If the value is present in @a x then this function makes a copy 
         * of this value and sets it as the new value of the attribute.
         * Otherwise the attribute container is set the 'not present' state.
         */
        void
        endTime (const endTime_optional& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly instead
         * of making a copy.
         */
        void
        endTime (::std::auto_ptr< endTime_type > p);

        //@}

        /**
         * @name notificationInterval
         *
         * @brief Accessor and modifier functions for the %notificationInterval
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::duration notificationInterval_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< notificationInterval_type, char > notificationInterval_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const notificationInterval_type&
        notificationInterval () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        notificationInterval_type&
        notificationInterval ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        notificationInterval (const notificationInterval_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        notificationInterval (::std::auto_ptr< notificationInterval_type > p);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return A read-only (constant) reference to the attribute's
         * default value.
         */
        static const notificationInterval_type&
        notificationInterval_default_value ();

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        SubscriptionType (const id_type&,
                          const selector_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        SubscriptionType (const ::xercesc::DOMElement& e,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        SubscriptionType (const SubscriptionType& x,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual SubscriptionType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~SubscriptionType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        Action_sequence Action_;
        ::xsd::cxx::tree::one< selector_type > selector_;
        startTime_optional startTime_;
        endTime_optional endTime_;
        ::xsd::cxx::tree::one< notificationInterval_type > notificationInterval_;
        static const notificationInterval_type notificationInterval_default_value_;

        //@endcond
      };

      /**
       * @brief Class corresponding to the %ActionType schema type.
       *
       * Abstract Base type for all types of Actions.
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED ActionType: public ::xml_schema::type
      {
        public:
        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        ActionType ();

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ActionType (const ::xercesc::DOMElement& e,
                    ::xml_schema::flags f = 0,
                    ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a DOM attribute.
         *
         * @param a A DOM attribute to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ActionType (const ::xercesc::DOMAttr& a,
                    ::xml_schema::flags f = 0,
                    ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a string fragment.
         *
         * @param s A string fragment to extract the data from.
         * @param e A pointer to DOM element containing the string fragment.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        ActionType (const ::std::string& s,
                    const ::xercesc::DOMElement* e,
                    ::xml_schema::flags f = 0,
                    ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        ActionType (const ActionType& x,
                    ::xml_schema::flags f = 0,
                    ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual ActionType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~ActionType ();
      };

      /**
       * @brief Class corresponding to the %NotifyActionType schema type.
       *
       * Abstract Base type for all types of Notify Actions
       *
       * @nosubgrouping
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED NotifyActionType: public ::Jade::OpenGIS::regrep_3_0::ActionType
      {
        public:
        /**
         * @name notificationOption
         *
         * @brief Accessor and modifier functions for the %notificationOption
         * optional attribute with a default value.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::Jade::OpenGIS::regrep_3_0::referenceURI notificationOption_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< notificationOption_type, char > notificationOption_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const notificationOption_type&
        notificationOption () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        notificationOption_type&
        notificationOption ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        notificationOption (const notificationOption_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        notificationOption (::std::auto_ptr< notificationOption_type > p);

        /**
         * @brief Return the default value for the attribute.
         *
         * @return A read-only (constant) reference to the attribute's
         * default value.
         */
        static const notificationOption_type&
        notificationOption_default_value ();

        //@}

        /**
         * @name endPoint
         *
         * @brief Accessor and modifier functions for the %endPoint
         * required attribute.
         */
        //@{

        /**
         * @brief Attribute type.
         */
        typedef ::xml_schema::uri endPoint_type;

        /**
         * @brief Attribute traits type.
         */
        typedef ::xsd::cxx::tree::traits< endPoint_type, char > endPoint_traits;

        /**
         * @brief Return a read-only (constant) reference to the attribute.
         *
         * @return A constant reference to the attribute.
         */
        const endPoint_type&
        endPoint () const;

        /**
         * @brief Return a read-write reference to the attribute.
         *
         * @return A reference to the attribute.
         */
        endPoint_type&
        endPoint ();

        /**
         * @brief Set the attribute value.
         *
         * @param x A new value to set.
         *
         * This function makes a copy of its argument and sets it as
         * the new value of the attribute.
         */
        void
        endPoint (const endPoint_type& x);

        /**
         * @brief Set the attribute value without copying.
         *
         * @param p A new value to use.
         *
         * This function will try to use the passed value directly
         * instead of making a copy.
         */
        void
        endPoint (::std::auto_ptr< endPoint_type > p);

        //@}

        /**
         * @name Constructors
         */
        //@{

        /**
         * @brief Create an instance from the ultimate base and
         * initializers for required elements and attributes.
         */
        NotifyActionType (const endPoint_type&);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        NotifyActionType (const ::xercesc::DOMElement& e,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        NotifyActionType (const NotifyActionType& x,
                          ::xml_schema::flags f = 0,
                          ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual NotifyActionType*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        //@}

        /**
         * @brief Destructor.
         */
        virtual 
        ~NotifyActionType ();

        // Implementation.
        //

        //@cond

        protected:
        void
        parse (::xsd::cxx::xml::dom::parser< char >&,
               ::xml_schema::flags);

        protected:
        ::xsd::cxx::tree::one< notificationOption_type > notificationOption_;
        static const notificationOption_type notificationOption_default_value_;
        ::xsd::cxx::tree::one< endPoint_type > endPoint_;

        //@endcond
      };

      /**
       * @brief Enumeration class corresponding to the %conformanceProfile
       * schema type.
       */
      class JADE_OPENGIS_REGREP_3_0_SHARED conformanceProfile: public ::xml_schema::ncname
      {
        public:

        /**
         * @brief Underlying enum type.
         */
        enum value
        {
          registryFull,
          registryLite
        };

        /**
         * @brief Create an instance from the underlying enum value.
         *
         * @param v A enum value.
         */
        conformanceProfile (value v);

        /**
         * @brief Create an instance from a C string.
         *
         * @param v A string value.
         */
        conformanceProfile (const char* v);

        /**
         * @brief Create an instance from a string.
         *
         * @param v A string value.
         */
        conformanceProfile (const ::std::string& v);

        /**
         * @brief Create an instance from the base value.
         *
         * @param v A base value.
         */
        conformanceProfile (const ::xml_schema::ncname& v);

        /**
         * @brief Create an instance from a DOM element.
         *
         * @param e A DOM element to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        conformanceProfile (const ::xercesc::DOMElement& e,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a DOM attribute.
         *
         * @param a A DOM attribute to extract the data from.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        conformanceProfile (const ::xercesc::DOMAttr& a,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Create an instance from a string fragment.
         *
         * @param s A string fragment to extract the data from.
         * @param e A pointer to DOM element containing the string fragment.
         * @param f Flags to create the new instance with.
         * @param c A pointer to the object that will contain the new
         * instance.
         */
        conformanceProfile (const ::std::string& s,
                            const ::xercesc::DOMElement* e,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Copy constructor.
         *
         * @param x An instance to make a copy of.
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         *
         * For polymorphic object models use the @c _clone function instead.
         */
        conformanceProfile (const conformanceProfile& x,
                            ::xml_schema::flags f = 0,
                            ::xml_schema::container* c = 0);

        /**
         * @brief Copy the instance polymorphically.
         *
         * @param f Flags to create the copy with.
         * @param c A pointer to the object that will contain the copy.
         * @return A pointer to the dynamically allocated copy.
         *
         * This function ensures that the dynamic type of the instance is
         * used for copying and should be used for polymorphic object
         * models instead of the copy constructor.
         */
        virtual conformanceProfile*
        _clone (::xml_schema::flags f = 0,
                ::xml_schema::container* c = 0) const;

        /**
         * @brief Assign the underlying enum value.
         *
         * @param v A enum value.
         * @return A refernce to the instance.
         */
        conformanceProfile&
        operator= (value v);

        /**
         * @brief Implicit conversion operator to the underlying
         * enum value.
         *
         * @return A enum value.
         */
        virtual
        operator value () const
        {
          return _xsd_conformanceProfile_convert ();
        }

        //@cond

        protected:
        value
        _xsd_conformanceProfile_convert () const;

        public:
        static const char* const _xsd_conformanceProfile_literals_[2];
        static const value _xsd_conformanceProfile_indexes_[2];

        //@endcond
      };
    }
  }
}

#include <iosfwd>

#include <xercesc/sax/InputSource.hpp>
#include <xercesc/dom/DOMDocument.hpp>
#include <xercesc/dom/DOMErrorHandler.hpp>

namespace Jade
{
  namespace OpenGIS
  {
    namespace regrep_3_0
    {
      /**
       * @name Parsing functions for the %RegistryPackage document root.
       */
      //@{

      /**
       * @brief Parse a URI or a local file.
       *
       * @param uri A URI or a local file name.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * This function uses exceptions to report parsing errors.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (const ::std::string& uri,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a URI or a local file with an error handler.
       *
       * @param uri A URI or a local file name.
       * @param eh An error handler.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * This function reports parsing errors by calling the error handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (const ::std::string& uri,
                       ::xml_schema::error_handler& eh,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a URI or a local file with a Xerces-C++ DOM error
       * handler.
       *
       * @param uri A URI or a local file name.
       * @param eh A Xerces-C++ DOM error handler.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * This function reports parsing errors by calling the error handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (const ::std::string& uri,
                       ::xercesc::DOMErrorHandler& eh,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a standard input stream.
       *
       * @param is A standrad input stream.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * This function uses exceptions to report parsing errors.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (::std::istream& is,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a standard input stream with an error handler.
       *
       * @param is A standrad input stream.
       * @param eh An error handler.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * This function reports parsing errors by calling the error handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (::std::istream& is,
                       ::xml_schema::error_handler& eh,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a standard input stream with a Xerces-C++ DOM error
       * handler.
       *
       * @param is A standrad input stream.
       * @param eh A Xerces-C++ DOM error handler.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * This function reports parsing errors by calling the error handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (::std::istream& is,
                       ::xercesc::DOMErrorHandler& eh,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a standard input stream with a resource id.
       *
       * @param is A standrad input stream.
       * @param id A resource id.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * The resource id is used to identify the document being parsed in
       * diagnostics as well as to resolve relative paths.
       *
       * This function uses exceptions to report parsing errors.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (::std::istream& is,
                       const ::std::string& id,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a standard input stream with a resource id and an
       * error handler.
       *
       * @param is A standrad input stream.
       * @param id A resource id.
       * @param eh An error handler.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * The resource id is used to identify the document being parsed in
       * diagnostics as well as to resolve relative paths.
       *
       * This function reports parsing errors by calling the error handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (::std::istream& is,
                       const ::std::string& id,
                       ::xml_schema::error_handler& eh,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a standard input stream with a resource id and a
       * Xerces-C++ DOM error handler.
       *
       * @param is A standrad input stream.
       * @param id A resource id.
       * @param eh A Xerces-C++ DOM error handler.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * The resource id is used to identify the document being parsed in
       * diagnostics as well as to resolve relative paths.
       *
       * This function reports parsing errors by calling the error handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (::std::istream& is,
                       const ::std::string& id,
                       ::xercesc::DOMErrorHandler& eh,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a Xerces-C++ input source.
       *
       * @param is A Xerces-C++ input source.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * This function uses exceptions to report parsing errors.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (::xercesc::InputSource& is,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a Xerces-C++ input source with an error handler.
       *
       * @param is A Xerces-C++ input source.
       * @param eh An error handler.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * This function reports parsing errors by calling the error handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (::xercesc::InputSource& is,
                       ::xml_schema::error_handler& eh,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a Xerces-C++ input source with a Xerces-C++ DOM
       * error handler.
       *
       * @param is A Xerces-C++ input source.
       * @param eh A Xerces-C++ DOM error handler.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * This function reports parsing errors by calling the error handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (::xercesc::InputSource& is,
                       ::xercesc::DOMErrorHandler& eh,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a Xerces-C++ DOM document.
       *
       * @param d A Xerces-C++ DOM document.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (const ::xercesc::DOMDocument& d,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      /**
       * @brief Parse a Xerces-C++ DOM document.
       *
       * @param d A pointer to the Xerces-C++ DOM document.
       * @param f Parsing flags.
       * @param p Parsing properties. 
       * @return A pointer to the root of the object model.
       *
       * This function is normally used together with the keep_dom and
       * own_dom parsing flags to assign ownership of the DOM document
       * to the object model.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::std::auto_ptr< ::Jade::OpenGIS::regrep_3_0::RegistryPackageType >
      RegistryPackage (::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument >& d,
                       ::xml_schema::flags f = 0,
                       const ::xml_schema::properties& p = ::xml_schema::properties ());

      //@}
    }
  }
}

#include <iosfwd>

#include <xercesc/dom/DOMDocument.hpp>
#include <xercesc/dom/DOMErrorHandler.hpp>
#include <xercesc/framework/XMLFormatter.hpp>

#include <xsd/cxx/xml/dom/auto-ptr.hxx>

namespace Jade
{
  namespace OpenGIS
  {
    namespace regrep_3_0
    {
      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const referenceURI&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMAttr&, const referenceURI&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xml_schema::list_stream&,
                  const referenceURI&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const String4&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMAttr&, const String4&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xml_schema::list_stream&,
                  const String4&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const String8&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMAttr&, const String8&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xml_schema::list_stream&,
                  const String8&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const String16&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMAttr&, const String16&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xml_schema::list_stream&,
                  const String16&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const String32&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMAttr&, const String32&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xml_schema::list_stream&,
                  const String32&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ShortName&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMAttr&, const ShortName&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xml_schema::list_stream&,
                  const ShortName&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const LongName&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMAttr&, const LongName&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xml_schema::list_stream&,
                  const LongName&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const FreeFormText&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMAttr&, const FreeFormText&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xml_schema::list_stream&,
                  const FreeFormText&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const InternationalStringType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const LocalizedStringType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const SlotType1&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ValueListType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const SlotListType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const IdentifiableType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ObjectRefType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ObjectRefListType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const RegistryObjectType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const RegistryObjectListType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const AssociationType1&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const AuditableEventType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ClassificationType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ClassificationNodeType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ClassificationSchemeType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ExternalIdentifierType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ExternalLinkType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ExtrinsicObjectType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const OrganizationType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const PersonNameType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const EmailAddressType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const PostalAddressType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const VersionInfoType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const RegistryPackageType&);

      /**
       * @name Serialization functions for the %RegistryPackage document root.
       */
      //@{

      /**
       * @brief Serialize to a standard output stream.
       *
       * @param os A standrad output stream.
       * @param x An object model to serialize.
       * @param m A namespace information map.
       * @param e A character encoding to produce XML in.
       * @param f Serialization flags.
       *
       * This function uses exceptions to report serialization errors.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      RegistryPackage (::std::ostream& os,
                       const ::Jade::OpenGIS::regrep_3_0::RegistryPackageType& x, 
                       const ::xml_schema::namespace_infomap& m = ::xml_schema::namespace_infomap (),
                       const ::std::string& e = "UTF-8",
                       ::xml_schema::flags f = 0);

      /**
       * @brief Serialize to a standard output stream with an error handler.
       *
       * @param os A standrad output stream.
       * @param x An object model to serialize.
       * @param eh An error handler.
       * @param m A namespace information map.
       * @param e A character encoding to produce XML in.
       * @param f Serialization flags.
       *
       * This function reports serialization errors by calling the error
       * handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      RegistryPackage (::std::ostream& os,
                       const ::Jade::OpenGIS::regrep_3_0::RegistryPackageType& x, 
                       ::xml_schema::error_handler& eh,
                       const ::xml_schema::namespace_infomap& m = ::xml_schema::namespace_infomap (),
                       const ::std::string& e = "UTF-8",
                       ::xml_schema::flags f = 0);

      /**
       * @brief Serialize to a standard output stream with a Xerces-C++ DOM
       * error handler.
       *
       * @param os A standrad output stream.
       * @param x An object model to serialize.
       * @param eh A Xerces-C++ DOM error handler.
       * @param m A namespace information map.
       * @param e A character encoding to produce XML in.
       * @param f Serialization flags.
       *
       * This function reports serialization errors by calling the error
       * handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      RegistryPackage (::std::ostream& os,
                       const ::Jade::OpenGIS::regrep_3_0::RegistryPackageType& x, 
                       ::xercesc::DOMErrorHandler& eh,
                       const ::xml_schema::namespace_infomap& m = ::xml_schema::namespace_infomap (),
                       const ::std::string& e = "UTF-8",
                       ::xml_schema::flags f = 0);

      /**
       * @brief Serialize to a Xerces-C++ XML format target.
       *
       * @param ft A Xerces-C++ XML format target.
       * @param x An object model to serialize.
       * @param m A namespace information map.
       * @param e A character encoding to produce XML in.
       * @param f Serialization flags.
       *
       * This function uses exceptions to report serialization errors.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      RegistryPackage (::xercesc::XMLFormatTarget& ft,
                       const ::Jade::OpenGIS::regrep_3_0::RegistryPackageType& x, 
                       const ::xml_schema::namespace_infomap& m = ::xml_schema::namespace_infomap (),
                       const ::std::string& e = "UTF-8",
                       ::xml_schema::flags f = 0);

      /**
       * @brief Serialize to a Xerces-C++ XML format target with an error
       * handler.
       *
       * @param ft A Xerces-C++ XML format target.
       * @param x An object model to serialize.
       * @param eh An error handler.
       * @param m A namespace information map.
       * @param e A character encoding to produce XML in.
       * @param f Serialization flags.
       *
       * This function reports serialization errors by calling the error
       * handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      RegistryPackage (::xercesc::XMLFormatTarget& ft,
                       const ::Jade::OpenGIS::regrep_3_0::RegistryPackageType& x, 
                       ::xml_schema::error_handler& eh,
                       const ::xml_schema::namespace_infomap& m = ::xml_schema::namespace_infomap (),
                       const ::std::string& e = "UTF-8",
                       ::xml_schema::flags f = 0);

      /**
       * @brief Serialize to a Xerces-C++ XML format target with a
       * Xerces-C++ DOM error handler.
       *
       * @param ft A Xerces-C++ XML format target.
       * @param x An object model to serialize.
       * @param eh A Xerces-C++ DOM error handler.
       * @param m A namespace information map.
       * @param e A character encoding to produce XML in.
       * @param f Serialization flags.
       *
       * This function reports serialization errors by calling the error
       * handler.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      RegistryPackage (::xercesc::XMLFormatTarget& ft,
                       const ::Jade::OpenGIS::regrep_3_0::RegistryPackageType& x, 
                       ::xercesc::DOMErrorHandler& eh,
                       const ::xml_schema::namespace_infomap& m = ::xml_schema::namespace_infomap (),
                       const ::std::string& e = "UTF-8",
                       ::xml_schema::flags f = 0);

      /**
       * @brief Serialize to an existing Xerces-C++ DOM document.
       *
       * @param d A Xerces-C++ DOM document.
       * @param x An object model to serialize.
       * @param f Serialization flags.
       *
       * Note that it is your responsibility to create the DOM document
       * with the correct root element as well as set the necessary
       * namespace mapping attributes.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      RegistryPackage (::xercesc::DOMDocument& d,
                       const ::Jade::OpenGIS::regrep_3_0::RegistryPackageType& x,
                       ::xml_schema::flags f = 0);

      /**
       * @brief Serialize to a new Xerces-C++ DOM document.
       *
       * @param x An object model to serialize.
       * @param m A namespace information map.
       * @param f Serialization flags.
       * @return A pointer to the new Xerces-C++ DOM document.
       */
      JADE_OPENGIS_REGREP_3_0_SHARED
      ::xml_schema::dom::auto_ptr< ::xercesc::DOMDocument >
      RegistryPackage (const ::Jade::OpenGIS::regrep_3_0::RegistryPackageType& x, 
                       const ::xml_schema::namespace_infomap& m = ::xml_schema::namespace_infomap (),
                       ::xml_schema::flags f = 0);

      //@}

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ServiceType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ServiceBindingType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const SpecificationLinkType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const TelephoneNumberType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const TelephoneNumberListType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const PersonType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const UserType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const RegistryType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const FederationType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const AdhocQueryType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const QueryExpressionType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const NotificationType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const SubscriptionType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const ActionType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMAttr&, const ActionType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xml_schema::list_stream&,
                  const ActionType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const NotifyActionType&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMElement&, const conformanceProfile&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xercesc::DOMAttr&, const conformanceProfile&);

      JADE_OPENGIS_REGREP_3_0_SHARED
      void
      operator<< (::xml_schema::list_stream&,
                  const conformanceProfile&);
    }
  }
}

#include <xsd/cxx/post.hxx>

// Begin epilogue.
//
//
// End epilogue.

#endif // E__WORK_JSMOMS_JADE_JADE_OPEN_GIS_SCHEMAS_REGREP_3_0_RIM_H


More information about the xsd-users mailing list