﻿<?xml version="1.0" encoding="utf-8" ?>
<xs:schema elementFormDefault="qualified"
           xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import namespace="http://microsoft.com/wsdl/types/" />
  <xs:simpleType name="guid">
    <xs:restriction base="xs:string">
      <xs:pattern value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-&#xA;                         [0-9a-fA-F]{4}-[0-9a-fA-F]{12}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="settings"
              type="SerializableDefinedDatabases"
              nillable="true">
    <xs:annotation>
      <xs:documentation>
        Specifications for all known databases.
      </xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="SerializableDefinedDatabases">
    <xs:sequence>
      <xs:element name="group"
                  type="SerializableDatabaseGroup"
                  minOccurs="0"
                  maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
           Group of databases. Databases are typically grouped per used company, but other groupings are possible too.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="default"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional label of the default database to use when no other database is presented by the user. The label consists of the group name, a backslash ('\') and the database name. Not all products cover the use of default database.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="version"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>The version of the settings.xml format. New versions typically add new XML elements and attributes, but remain backward compatible. The current version is 5. The Version attribute was introduced with version 3 of the settings.xml format.        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="VersionUpdatedBy"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>
          Whom updated the version of the settings.xml last.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="VersionUpdateDate"
                  type="xs:dateTime"
                  use="required">
      <xs:annotation>
        <xs:documentation>
          When the version of the settings.xml was updated last (UTC).
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="VersionUpdatedOn"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>
          The name of the machine that updated the version of the settings.xml last.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="forcedefault"
                  default="false"
                  type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          Obsoleted.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="enableRequestLogging"
                  type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          Obsoleted.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="sqlTrace"
                  default="false"
                  type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          Obsoleted.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="SerializableDatabaseGroup">
    <xs:sequence>
      <xs:element name="connection"
                  type="SerializableDatabase"
                  minOccurs="0"
                  maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>A database. Each session on an Invantive product connects to at most one database at the same time.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="id"
                  type="guid"
                  use="required">
      <xs:annotation>
        <xs:documentation>Optional unique ID of the database group. Used to identify a database group across name changes.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="name"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Required name of this database group. The name can not contain a backslash. Some Invantive applications allow the use of non-unique names, but it is recommended to choose unique names for usability.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="sortingOrder"
                  type="xs:int"
                  use="required">
      <xs:annotation>
        <xs:documentation>Optional numeric sorting order of the database group. Database groups are typically presented to an end user sorted ascendingly according to sorting order.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="iconResourceName32"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional name of pre-defined file with icon 32x32 within Resources folder of Invantive Producer.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="shortDescription"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional one-line description of the database group.   </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="comment"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional comment on the database group.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="description"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional multi-line description.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="createdOn"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Machine this object was created on.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="createdBy"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>User that created this object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="creationDate"
                  type="xs:dateTime">
      <xs:annotation>
        <xs:documentation>Date when this object was created (UTC).</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="SerializableDatabase">
    <xs:sequence>
      <xs:element name="provider"
                  type="SerializableDatabaseProvider"
                  minOccurs="0"
                  maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Additional connector to load into memory when using the database.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:choice minOccurs="0"
                 maxOccurs="unbounded">
        <xs:element name="database"
                    type="SerializableDataContainer"
                    minOccurs="0"
                    maxOccurs="1">
          <xs:annotation>
            <xs:documentation>Direct connection to a data container provided by a data platform using a locally installed connector.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="webservice"
                    type="SerializableWebServiceDataContainer"
                    minOccurs="0"
                    maxOccurs="1">
          <xs:annotation>
            <xs:documentation>Connection to a data container provided by a data platform through a remote server running Invantive Web Service.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
      <xs:element name="failover"
                  type="SerializableFailoverDataContainerCluster"
                  minOccurs="0"
                  maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>An alternative set of connection data to access the data containers of the database in case the preferred route is not available or reliable.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="creationDate"
                  type="xs:dateTime">
      <xs:annotation>
        <xs:documentation>Date when this object was created (UTC).</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="IconResourceName16"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional name of pre-defined file with icon 16x16 within Resources folder of Invantive Producer.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="passwordMode"
                  type="Editability">
      <xs:annotation>
        <xs:documentation>Obsolete. Whether to show the password and whether it is changeable by the user. Replaced by data container specific settings.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="createdOn"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Machine this object was created on.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="manual"
                  default="false"
                  type="xs:boolean">
      <xs:annotation>
        <xs:documentation>Whether the database definition was created manually. Set to true when edit by user. Setting to true avoids replacement of database properties by discovery.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="createdBy"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>User that created this object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="enableRequestLogging"
                  default="false"
                  type="xs:boolean">
      <xs:annotation>
        <xs:documentation>Obsolete.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="encryptedDataDictionaryConnectionString"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional encrypted Invantive Data Dictionary connection settings.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="dataDictionaryConnectionString"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional Invantive Data Dictionary connection settings.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="usernameMode"
                  type="Editability">
      <xs:annotation>
        <xs:documentation>Obsolete. Replaced by data container specific settings.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="defaultUsername"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Obsolete. Replaced by data container specific settings.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="encryptedDataCacheConnectionString"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional encrypted Invantive Data Cache or Data Replicator connection settings.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="forceNative"
                  default="false"
                  type="xs:boolean">
      <xs:annotation>
        <xs:documentation>Whether to enforce use of native database language instead of Invantive SQL.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="lastUsedDate"
                  type="xs:dateTime">
      <xs:annotation>
        <xs:documentation>When the database was last used (UTC).</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="iuidSource"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional alias of a deviating data container to retrieve IUID from.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="dataCacheConnectionString"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional Invantive Data Cache or Data Replicator connection settings.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="sqlTrace"
                  default="false"
                  type="xs:boolean">
      <xs:annotation>
        <xs:documentation>Whether SQL tracing is allowed.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="comment"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional comment on the database.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="sortingOrder"
                  type="xs:int"
                  use="required">
      <xs:annotation>
        <xs:documentation>Numeric sorting order of the database. Databases are typically presented to an end user sorted within a group ascendingly according to sorting order.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="starred"
                  default="false"
                  type="xs:boolean">
      <xs:annotation>
        <xs:documentation>Whether the database is starred and should be shown as preferred in a user interface.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="id"
                  type="guid"
                  use="required" />
    <xs:attribute name="name"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Required name of this database. The name can not contain a backslash. Some Invantive applications allow the use of non-unique names, but it is recommended to choose unique names for usability.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="shortDescription"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional one-line description of the database.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="description"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional multi-line description.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="PasswordHint"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Obsolete. Replaced by data container specific settings.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="PasswordLabel"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Obsolete. Replaced by data container specific settings.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="UserLogonCodeHint"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Obsolete. Replaced by data container specific settings.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="UserLogonCodeLabel"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Obsolete. Replaced by data container specific settings.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="defaultUserLogonCode"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Obsolete. Replaced by data container specific settings.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="authentication"
                  type="AuthenticationMode"
                  use="required">
      <xs:annotation>
        <xs:documentation>Obsolete. Replaced by data container specific settings.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="defaultPassword"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Obsolete. Replaced by data container specific settings.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="userLogonCodeMode"
                  type="Editability">
      <xs:annotation>
        <xs:documentation>Obsolete. Whether to show the user logon code and whether it is changeable by the user. Replaced by data container specific settings.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="SerializableDatabaseProvider">
    <xs:sequence>
      <xs:element name="attribute"
                  type="SerializableDatabaseProviderAttributeValue"
                  minOccurs="0"
                  maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Connector attribute value assignments.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="order"
                  type="xs:int"
                  use="required">
      <xs:annotation>
        <xs:documentation>Required unique order in which the provider is tried. A connector with a higher order number is asked first to handle a request.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="file"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Name of the file containing the class, for example 'System.Data.OracleClient'.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="class"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Name of the .net class for the connector.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="comment"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional comment on the additional connector.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="createdBy"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>User that created this object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="createdOn"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Machine this object was created on.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="creationDate"
                  type="xs:dateTime">
      <xs:annotation>
        <xs:documentation>Date when this object was created (UTC).</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="SerializableDatabaseProviderAttributeValue">
    <xs:attribute name="code"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Required unique code of the connector attribute.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="value"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Value to assign to the connector attribute.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="SerializableDataContainer">
    <xs:complexContent mixed="false">
      <xs:extension base="DataContainer">
        <xs:attribute name="connectionString"
                      type="xs:string">
          <xs:annotation>
            <xs:documentation>Optional connection string to pass to the connector.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="encryptedConnectionString"
                      type="xs:string">
          <xs:annotation>
            <xs:documentation>Optional encrypted connection string to pass to the connector.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="AllowConnectionStringRewrite"
                      default="true"
                      type="xs:boolean">
          <xs:annotation>
            <xs:documentation>Whether to allow rewriting the connection string values, such as user name, password or attribute values.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="AllowConnectionPooling"
                      default="true"
                      type="xs:boolean">
          <xs:annotation>
            <xs:documentation>Whether to allow connection pooling on connections.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType abstract="true"
                  name="DataContainer">
    <xs:annotation>
      <xs:documentation>A data container stored on a data platform.</xs:documentation>
    </xs:annotation>
    <xs:attribute name="order"
                  type="xs:int"
                  use="required">
      <xs:annotation>
        <xs:documentation>Non-unique numeric order of the data container used for sorting data containers of a database.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="createdBy"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>User that created this object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="createdOn"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Machine this object was created on.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="creationDate"
                  type="xs:dateTime">
      <xs:annotation>
        <xs:documentation>Date when this object was created (UTC).</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="description"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional multi-line description of the data container.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="comment"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional comment on the data container.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="alias"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional alias of the data container, unique within the database.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="provider"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Required code of the connector to use for connection.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="defaultUserLogonCode"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional default user logon code.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="userLogonCodeMode"
                  default="Auto"
                  type="Editability">
      <xs:annotation>
        <xs:documentation>Whether to show the user logon code and whether it is changeable by the user.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="defaultPassword"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional default password.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="PasswordLabel"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional password label.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="PasswordHint"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional password hint.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="UserLogonCodeLabel"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional user logon code label.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="UserLogonCodeHint"
                  type="xs:string">
      <xs:annotation>
        <xs:documentation>Optional user logon code hint.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="passwordMode"
                  default="Auto"
                  type="Editability">
      <xs:annotation>
        <xs:documentation>Whether to show or hide the password and whether it can be edited.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="SerializableWebServiceDataContainer">
    <xs:complexContent mixed="false">
      <xs:extension base="DataContainer">
        <xs:attribute name="url"
                      type="xs:string">
          <xs:annotation>
            <xs:documentation>Required URL of the Invantive Web Service to use.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="encoding"
                      default="binary"
                      type="xs:string">
          <xs:annotation>
            <xs:documentation>Message encoding of the Invantive Web Service to use, either 'text' or 'binary'.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="compression"
                      type="xs:string">
          <xs:annotation>
            <xs:documentation>Whether to apply compression, one of 'Auto', 'True' or 'False'.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="testurl"
                      type="xs:string">
          <xs:annotation>
            <xs:documentation>Optional URL to ping for check whether the connection is alive.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="testduration"
                      type="xs:int"
                      use="required">
          <xs:annotation>
            <xs:documentation>Optional maximum test duration in milliseconds when checking whether the connection is alive. -1 means forever</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="testconnection"
                      default="false"
                      type="xs:boolean">
          <xs:annotation>
            <xs:documentation>Whether to check if the connection is alive before really logging on to the web service.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="remoteconnectionname"
                      type="xs:string">
          <xs:annotation>
            <xs:documentation>Full remote database name in the format GROUP\NAME.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="AllowConnectionStringRewrite"
                      default="true"
                      type="xs:boolean">
          <xs:annotation>
            <xs:documentation>Whether to allow rewriting the connection string values, such as user name, password or attribute values.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="SerializableFailoverDataContainerCluster">
    <xs:sequence>
      <xs:choice minOccurs="0"
                 maxOccurs="unbounded">
        <xs:element name="database"
                    type="SerializableDataContainer"
                    minOccurs="0"
                    maxOccurs="1">
          <xs:annotation>
            <xs:documentation>Direct connection to a data container of a data platform using a locally installed connector.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="webservice"
                    type="SerializableWebServiceDataContainer"
                    minOccurs="0"
                    maxOccurs="1">
          <xs:annotation>
            <xs:documentation>Connection to a data container of a data platform through a remote server running Invantive Web Service.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="Editability">
    <xs:annotation>
      <xs:documentation>Whether values are editable by an end-user, read-only visible or hidden.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="Auto" />
      <xs:enumeration value="ReadOnly" />
      <xs:enumeration value="Hidden" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="AuthenticationMode">
    <xs:annotation>
      <xs:documentation>Approach to use for authentication. Use the default except when using Invantive business solutions with a middle-tier.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="Default">
        <xs:annotation>
          <xs:documentation>Use database authentication mode.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Application">
        <xs:annotation>
          <xs:documentation>
            Middle-tier specific authentication. Used in combination with Invantive business solutions that provide a middle-tier, such as Invantive Estate and Invantive Studio. 
            Instead of authenticating on the database layer with the provided credentials, a connection is first made using default credentials to the database with severely restricted privileges
            and then the middle-tier is used to authenticate and open up the full functionality.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Database">
        <xs:annotation>
          <xs:documentation>
            Default authentication model, used for most applications.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>