<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
  xmlns:tns="http://www.jooq.org/xsd/jooq-codegen-3.11.0.xsd"
  xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
  targetNamespace="http://www.jooq.org/xsd/jooq-codegen-3.11.0.xsd"
  elementFormDefault="qualified"
  jxb:version="2.1">

  <element name="configuration">
    <complexType>
      <all>
        <element name="logging" type="tns:Logging" minOccurs="0" maxOccurs="1">
          <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The logging configuration element specifies the code generation logging threshold.]]></jxb:javadoc></jxb:property></appinfo></annotation>
        </element>

        <element name="jdbc" type="tns:Jdbc" minOccurs="0"  maxOccurs="1">
          <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The JDBC configuration element contains information about how to set up the database connection used for source code generation.]]></jxb:javadoc></jxb:property></appinfo></annotation>
        </element>

        <element name="generator" type="tns:Generator" minOccurs="1" maxOccurs="1">
          <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The GENERATOR configuration element contains information about source code generation itself.]]></jxb:javadoc></jxb:property></appinfo></annotation>
        </element>
      </all>
    </complexType>
  </element>

  <simpleType name="Logging">
    <restriction base="string">
      <enumeration value="TRACE"/>
      <enumeration value="DEBUG"/>
      <enumeration value="INFO"/>
      <enumeration value="WARN"/>
      <enumeration value="ERROR"/>
      <enumeration value="FATAL"/>
    </restriction>
  </simpleType>

  <complexType name="Jdbc">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[JDBC connection configuration.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="driver" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The JDBC driver class.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="url" type="string" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The JDBC connection URL.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="schema" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[@deprecated Use database schema configuration elements instead.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="user" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The JDBC connection user. Be sure this user has all required GRANTs to the dictionary views/tables to generate the desired artefacts]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="username" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Just a synonym for "user" to be compatible with other Maven plugins.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="password" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The JDBC connection password.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="properties" type="tns:Properties" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Enlist custom JDBC driver properties that are provided to the java.sql.DriverManager when fetching a connection]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="Properties">
    <sequence>
      <element name="property" type="tns:Property" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="Property">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Custom properties that are useful for Database implementations like
<code>JPADatabase</code>, <code>XMLDatabase</code>, or <code>DDLDatabase</code>, or to pass to JDBC drivers.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="key" type="string" minOccurs="1" maxOccurs="1"/>
      <element name="value" type="string" minOccurs="1" maxOccurs="1"/>
    </all>
  </complexType>

  <complexType name="Generator">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Configuration that affects the way code is being generated.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="name" type="string" default="org.jooq.codegen.DefaultGenerator" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The class used to generate source code. This can be overridden with a custom code generator implementation.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <!-- The naming strategy used for class and field names -->
      <element name="strategy" type="tns:Strategy" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Definitions of custom naming strategies (declarative or programmatic) to define how generated Java objects should be named.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="database" type="tns:Database" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Configuration of the database meta data source.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="generate" type="tns:Generate" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Options strictly related to generated code.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="target" type="tns:Target" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Options to define where the generated code should be located.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="Strategy">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Definitions of custom naming strategies (declarative or programmatic) to define how generated Java objects should be named.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <choice>
      <element name="name" type="string" minOccurs="0" maxOccurs="1" default="org.jooq.codegen.DefaultGeneratorStrategy">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The class used to provide a naming strategy for generated source code. You may override this with your custom naming strategy. This cannot be combined with a matcher configuration.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="matchers" type="tns:Matchers" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The matcher strategy configuration used when applying an XML-based strategy. This cannot be combined with a named strategy configuration.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </choice>
  </complexType>

  <complexType name="Matchers">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <sequence>
      <element name="schemas" type="tns:MatchersSchemasType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Declarative naming strategy configuration for schema names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="tables" type="tns:MatchersTablesType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Declarative naming strategy configuration for table names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="fields" type="tns:MatchersFieldsType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Declarative naming strategy configuration for field names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="routines" type="tns:MatchersRoutinesType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Declarative naming strategy configuration for routine names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="sequences" type="tns:MatchersSequencesType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Declarative naming strategy configuration for sequence names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="enums" type="tns:MatchersEnumsType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Declarative naming strategy configuration for enum names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </sequence>
  </complexType>

  <complexType name="MatchersSchemasType">
    <sequence>
      <element name="schema" type="tns:MatchersSchemaType" minOccurs="1" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MatchersSchemaType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration for schema names.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This schema matcher applies to all unqualified or qualified schema names matched by this expression. If left empty, this matcher applies to all schemas.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="schemaClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.Schema} object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="schemaIdentifier" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.Schema} identifier.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="schemaImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated {@link org.jooq.Schema} should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="MatchersTablesType">
    <sequence>
      <element name="table" type="tns:MatchersTableType" minOccurs="1" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MatchersTableType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration for table names.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This table matcher applies to all unqualified or qualified table names matched by this expression. If left empty, this matcher applies to all tables.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="tableClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.Table} object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="tableIdentifier" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.Table} identifier.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="tableImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated {@link org.jooq.Table} should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.TableRecord} object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated {@link org.jooq.TableRecord} should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="interfaceClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated interface implemented by the {@link org.jooq.TableRecord} and/or the POJO.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="interfaceImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated interface (which is implemented by the {@link org.jooq.TableRecord} and/or POJO) should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="daoClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.DAO} object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="daoImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated {@link org.jooq.DAO} should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojoClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated POJOs object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojoExtends" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides a super class that a generated POJO should extend.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojoImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated POJO should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="MatchersFieldsType">
    <sequence>
      <element name="field" type="tns:MatchersFieldType" minOccurs="1" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MatchersFieldType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration for field names.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This field matcher applies to all unqualified or qualified field names matched by this expression. If left empty, this matcher applies to all fields.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="fieldIdentifier" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.Field} identifier.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="fieldMember" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of generated members (e.g. in POJOs) corresponding to this {@link org.jooq.Field}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="fieldSetter" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of generated setters (e.g. in {@link org.jooq.TableRecord} and/or POJOs) corresponding to this {@link org.jooq.Field}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="fieldGetter" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of generated getters (e.g. in {@link org.jooq.TableRecord} and/or POJOs) corresponding to this {@link org.jooq.Field}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="MatchersRoutinesType">
    <sequence>
      <element name="routine" type="tns:MatchersRoutineType" minOccurs="1" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MatchersRoutineType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration for routine names.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This routine matcher applies to all unqualified or qualified routine names matched by this expression. If left empty, this matcher applies to all routines.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="routineClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.Routine} object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="routineMethod" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of generated convenience methods used to call the {@link org.jooq.Routine}.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="routineImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated {@link org.jooq.Routine} should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="MatchersSequencesType">
    <sequence>
      <element name="sequence" type="tns:MatchersSequenceType" minOccurs="1" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MatchersSequenceType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration for sequence names.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This sequence matcher applies to all unqualified or qualified sequence names matched by this expression. If left empty, this matcher applies to all sequences.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="sequenceIdentifier" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.Sequence} identifier.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="MatchersEnumsType">
    <sequence>
      <element name="enum" type="tns:MatchersEnumType" minOccurs="1" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MatchersEnumType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration for enum names.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This sequence matcher applies to all unqualified or qualified enum names matched by this expression. If left empty, this matcher applies to all enums.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="enumClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.EnumType} object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="enumImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated {@link org.jooq.EnumType} should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="MatcherRule">
    <all>
      <element name="transform" type="tns:MatcherTransformType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A pre-defined transformation type that transforms this rule's output into a specific format.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="expression" type="string" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A replacement expression that transforms the matched expression in a new value.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <simpleType name="MatcherTransformType">
    <restriction base="string">
      <enumeration value="AS_IS"/>
      <enumeration value="LOWER"/>
      <enumeration value="UPPER"/>
      <enumeration value="CAMEL"/>
      <enumeration value="PASCAL"/>
    </restriction>
  </simpleType>

  <complexType name="Database">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Configuration of the database meta data source.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <!--

        -->
      <element name="name" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The database dialect from jooq-meta.
Available dialects are named <code>org.util.[database].[database]Database</code>.
<p>
Natively supported values are:
<ul>
<li>{@link org.jooq.meta.ase.ASEDatabase}</li>
<li>{@link org.jooq.meta.cubrid.CUBRIDDatabase}</li>
<li>{@link org.jooq.meta.db2.DB2Database}</li>
<li>{@link org.jooq.meta.derby.DerbyDatabase}</li>
<li>{@link org.jooq.meta.firebird.FirebirdDatabase}</li>
<li>{@link org.jooq.meta.h2.H2Database}</li>
<li>{@link org.jooq.meta.hana.HanaDatabase}</li>
<li>{@link org.jooq.meta.hsqldb.HSQLDBDatabase}</li>
<li>{@link org.jooq.meta.informix.InformixDatabase}</li>
<li>{@link org.jooq.meta.ingres.IngresDatabase}</li>
<li>{@link org.jooq.meta.mariadb.MariaDBDatabase}</li>
<li>{@link org.jooq.meta.mysql.MySQLDatabase}</li>
<li>{@link org.jooq.meta.oracle.OracleDatabase}</li>
<li>{@link org.jooq.meta.postgres.PostgresDatabase}</li>
<li>{@link org.jooq.meta.redshift.RedshiftDatabase}</li>
<li>{@link org.jooq.meta.sqlite.SQLiteDatabase}</li>
<li>{@link org.jooq.meta.sqlserver.SQLServerDatabase}</li>
<li>{@link org.jooq.meta.sybase.SybaseDatabase}</li>
<li>{@link org.jooq.meta.vertica.VerticaDatabase}</li>
</ul>
<p>
This value can be used to reverse-engineer generic JDBC DatabaseMetaData (e.g. for MS Access).
<ul>
<li>{@link org.jooq.meta.jdbc.JDBCDatabase}</li>
</ul>
<p>
This value can be used to reverse-engineer standard jOOQ-meta XML formats.
<ul>
<li>{@link org.jooq.meta.xml.XMLDatabase}</li>
</ul>
<p>
This value can be used to reverse-engineer JPA annotated entities
<ul>
<li>{@link org.jooq.meta.extensions.jpa.JPADatabase}</li>
</ul>
<p>
You can also provide your own org.jooq.meta.Database implementation
here, if your database is currently not supported]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="properties" type="tns:Properties" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The properties that will be passed to the Database instance as configured above.
<p>
Known supported properties include:
<p>
<ul>
<li>{@link org.jooq.meta.xml.XMLDatabase}<p>
<pre>dialect=ORACLE
xml-file=C:\path\to\database.xml
xsl-files=C:\path\to\1.xsl,C:\path\to\2.xsl</pre></li>
<li>{@link org.jooq.meta.extensions.jpa.JPADatabase}<p>
<pre>packages=com.example.entities</pre></li>
<li>{@link org.jooq.meta.extensions.ddl.DDLDatabase}<p>
<pre>scripts=C:\path\to\database.sql
encoding=UTF-8</pre></li>
</ul>]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="regexFlags" type="tns:RegexFlags" minOccurs="0" maxOccurs="1" default="COMMENTS CASE_INSENSITIVE">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The flags that will be applied to all regular expressions from this configuration by default.
<p>
The default value is "COMMENTS CASE_INSENSITIVE"]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includes" type="string" default=".*" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[All elements that are generated from your schema.
<p>
This is a Java regular expression. Use the pipe to separate several expressions.
Watch out for case-sensitivity. Depending on your database, this might be
important!
<p>
You can create case-insensitive regular expressions
using this syntax: <code>(?i:expr)</code>
<p>
Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="excludes" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[All elements that are excluded from your schema.
<p>
This is a Java regular expression. Use the pipe to separate several expressions.
Excludes match before includes, i.e. excludes have a higher priority.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeExcludeColumns" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether include / exclude patterns should also match columns within tables.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeTables" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether tables should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeRoutines" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether routines should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeTriggerRoutines" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether trigger implementation routines should be included in output produced by this database (e.g. in PostgreSQL)]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includePackages" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether packages should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includePackageRoutines" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether routines contained in packages should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includePackageUDTs" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether UDTs contained in packages should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includePackageConstants" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether constants contained in packages should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeUDTs" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether udts should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeSequences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether sequences should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeIndexes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether indexes should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includePrimaryKeys" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether primary keys should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeUniqueKeys" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether unique keys should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeForeignKeys" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether foreign keys should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordVersionFields" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[All table and view columns that are used as "version" fields for optimistic locking.
<p>
This is a Java regular expression. Use the pipe to separate several expressions.
See {@link org.jooq.UpdatableRecord.store()} and {@link org.jooq.UpdatableRecord.delete()} for details about optimistic locking.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordTimestampFields" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[All table and view columns that are used as "timestamp" fields for optimistic locking.
<p>
This is a Java regular expression. Use the pipe to separate several expressions.
See {@link org.jooq.UpdatableRecord.store()} and {@link org.jooq.UpdatableRecord.delete()} for details about optimistic locking.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="syntheticIdentities" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all columns that represent identities.
<p>
To be used if columns are not detected as automatically as identities.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="syntheticPrimaryKeys" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all columns that participate in "synthetic" primary keys,
which should be placed on generated {@link org.jooq.UpdatableRecord}
<p>
To be used with:
<ul>
<li>{@link org.jooq.UpdatableRecord.store()}</li>
<li>{@link org.jooq.UpdatableRecord.update()}</li>
<li>{@link org.jooq.UpdatableRecord.delete()}</li>
<li>{@link org.jooq.UpdatableRecord.refresh()}</li>
</ul>
<p>
Synthetic primary keys will override existing primary keys.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="overridePrimaryKeys" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[All (UNIQUE) key names that should be used instead of primary keys on
generated {@link org.jooq.UpdatableRecord}.
<p>
To be used with:
<ul>
<li>{@link org.jooq.UpdatableRecord.store()}</li>
<li>{@link org.jooq.UpdatableRecord.update()}</li>
<li>{@link org.jooq.UpdatableRecord.delete()}</li>
<li>{@link org.jooq.UpdatableRecord.refresh()}</li>
</ul>
<p>
If several keys match, a warning is emitted and the first one encountered will be used.
<p>
This flag will also replace synthetic primary keys, if it matches.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="dateAsTimestamp" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate {@link java.sql.Timestamp} fields for DATE columns. This is particularly useful for Oracle databases]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="ignoreProcedureReturnValues" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Ignore procedure return values in Transact-SQL generated code.
<p>
In jOOQ 3.6.0, #4106 was implemented to support Transact-SQL's
optional return values from stored procedures. This turns all procedures
into Routine<Integer> (instead of Routine<Void>). For backwards-
compatibility reasons, users can suppress this change in jOOQ 3.x
<p>
@deprecated This feature is deprecated as of jOOQ 3.6.0 and will be removed again in
jOOQ 4.0.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="unsignedTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate jOOU data types for your unsigned data types, which are not natively supported in Java]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="inputCatalog" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The catalog that is used locally as a source for meta information.
<p>
This cannot be combined with the {@link #getCatalogs()} configuration element.
If left empty (and without any {@link #getCatalogs()} configuration  element), jOOQ will generate all available catalogs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="outputCatalog" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The catalog that is used in generated source code.
<p>
Use this to override your local development
catalog name for source code generation. If not specified, this
will be the same as {@link #getInputCatalog()}
<p>
This will be ignored if {@link #isOutputCatalogToDefault()} is set to true]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="outputCatalogToDefault" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A flag to indicate that the outputCatalog should be the "default" catalog,
which generates catalog-less, unqualified tables, procedures, etc.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="inputSchema" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The schema that is used locally as a source for meta information.
<p>
This cannot be combined with the {@link #getSchemata()} configuration element.
If left empty (and without any {@link #getSchemata()} configuration element), jOOQ will generate all available schemata.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="outputSchema" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The schema that is used in generated source code.
<p>
Use this to override your local development
schema name for source code generation. If not specified, this
will be the same as {@link #getInputSchema()}.

This will be ignored if {@link #isOutputSchemaToDefault()} is set to true]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="outputSchemaToDefault" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A flag to indicate that the outputSchema should be the "default" schema,
which generates schema-less, unqualified tables, procedures, etc.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="catalogs" type="tns:Catalogs" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A configuration element to configure several input and/or output
catalogs for jooq-meta, in case you're using jooq-meta in a multi-catalog environment.
<p>
This configuration element cannot be used at the same time as the {@link #getSchemata()} configuration element.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="schemata" type="tns:Schemata" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A configuration element to configure several input and/or output
schemata for jooq-meta, in case you're using jooq-meta in a multi-schema environment.
<p>
Using this configuration element in an enviroment that supports multiple
catalogs means that all catalogs are generated.
<p>
This configuration element cannot be used at the same time as the {@link #getCatalogs()} configuration element.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="schemaVersionProvider" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A custom version number that, if available, will be used to assess whether the
{@link #getInputSchema()} will need to be regenerated.
<p>
There are three operation modes for this element:
<ul>
<li>The value is a class that can be found on the classpath and that implements
  {@link org.jooq.meta.SchemaVersionProvider}. Such classes must provide a default constructor</li>
<li>The value is a SELECT statement that returns one record with one column. The
  SELECT statement may contain a named variable called :schema_name</li>
<li>The value is a constant, such as a Maven property</li>
</ul>
<p>
Schema versions will be generated into the {@link javax.annotation.Generated} annotation on
generated artefacts.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="catalogVersionProvider" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A custom version number that, if available, will be used to assess whether the
{@link #getInputCatalog()} from a given catalog will need to be regenerated.
<p>
There are three operation modes for this element:
<ul>
<li>The value is a class that can be found on the classpath and that implements
  {@link org.jooq.meta.CatalogVersionProvider}. Such classes must provide a default constructor</li>
<li>The value is a SELECT statement that returns one record with one column. The
  SELECT statement may contain a named variable called :catalog_name</li>
<li>The value is a constant, such as a Maven property</li>
<p>
Catalog versions will be generated into the {@link javax.annotation.Generated} annotation on
generated artefacts.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="orderProvider" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A custom {@link java.util.Comparator} that can compare two {@link org.jooq.meta.Definition} objects to determine their order.
<p>
This comparator can be used to influence the order of any object that is produced by jOOQ meta, and thus, indirectly, the order of declared objects in generated code.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="customTypes" type="tns:CustomTypes" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[@deprecated Use {@link #getForcedTypes()} only]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="enumTypes" type="tns:EnumTypes" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[@deprecated]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="forcedTypes" type="tns:ForcedTypes" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Configure type overrides for generated fields, attributes, sequences, parameters.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="forceIntegerTypesOnZeroScaleDecimals" type="boolean" minOccurs="0" maxOccurs="1" default="true">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Historically, zero-scale decimal types are generated as their most appropriate, corresponding integer type (e.g. NUMBER(2, 0) and less: Byte). This allows for turning off this feature. In case of conflict between this rule and actual {@link #getForcedTypes()}, the latter will win.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="tableValuedFunctions" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether table valued functions should be reported as tables.
<p>
If this is deactivated, such functions are not generated as tables, but
as ordinary routines. This is particularly useful for backwards-
compatibility between jOOQ 3.8 and previous versions, when using TABLE
and VARRAY types in Oracle.
<p>
While this flag defaults to true for most databases, it defaults to false
for Oracle.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="logSlowQueriesAfterSeconds" type="int" minOccurs="0" maxOccurs="1" default="5">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The number of seconds that are considered "slow" before a query is logged to indicate a bug, 0 for not logging.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="Catalogs">
    <sequence>
      <element name="catalog" type="tns:Catalog" minOccurs="1" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="Catalog">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Configuration of an input catalog and its mappings.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="inputCatalog" type="string" default="" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[See also {@link Database#getInputCatalog()}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="outputCatalog" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[See also {@link Database#getOutputCatalog()}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="outputCatalogToDefault" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[See also {@link Database#isOutputCatalogToDefault()}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="schemata" type="tns:Schemata" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The configuration of schemas inside of this catalog, if any.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="Schemata">
    <sequence>
      <element name="schema" type="tns:Schema" minOccurs="1" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="Schema">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Configuration of an input schema and its mappings.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="inputSchema" type="string" default="" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[See also {@link Database#getInputSchema()}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="outputSchema" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[See also {@link Database#getOutputSchema()}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="outputSchemaToDefault" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[See also {@link Database#isOutputSchemaToDefault()}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="CustomTypes">
    <sequence>
      <element name="customType" type="tns:CustomType" minOccurs="0" maxOccurs="unbounded" />
    </sequence>
  </complexType>

  <complexType name="EnumTypes">
    <sequence>
      <element name="enumType" type="tns:EnumType" minOccurs="0" maxOccurs="unbounded" />
    </sequence>
  </complexType>

  <complexType name="ForcedTypes">
    <sequence>
      <element name="forcedType" type="tns:ForcedType" minOccurs="0" maxOccurs="unbounded" />
    </sequence>
  </complexType>

  <complexType name="CustomType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="name" type="string" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="type" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="converter" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="enumConverter" type="boolean" minOccurs="0" maxOccurs="1" fixed="true">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="binding" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="EnumType">
    <all>
      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
      <element name="literals" type="string" minOccurs="1" maxOccurs="1" />
    </all>
  </complexType>

  <complexType name="ForcedType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[A forced type declaration]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="name" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The name (in {@link org.jooq.impl.SQLDataType}) to force any matches to]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="userType" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The type of the user type - e.g. java.time.LocalDateTime.
<p>
If provided, {@link #getName()} will be ignored, and either {@link #getConverter()}
or {@link #getBinding()} is required]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="converter" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A converter implementation for the {@link #getUserType()}.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="enumConverter" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether the converter is an {@link org.jooq.impl.EnumConverter}.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="binding" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A {@link org.jooq.Binding} implementation for the custom type.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A Java regular expression matching columns, parameters, attributes,
etc to be forced to have this type. If provided, both "expressions" and
"types" must match.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="expressions" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The same as expression. This is kept for backwards compatibility reasons.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="types" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A Java regular expression matching data types to be forced to have this
type. If provided, both "expression" and "types" must match.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="nullability" type="tns:Nullability" default="ALL" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether this forced type should apply to nullable / non-nullable / all columns]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="Generate">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Options strictly related to generated code.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="indexes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate index information.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="relations" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Primary key / foreign key relations should be generated and used.
This is a prerequisite for various advanced features]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="implicitJoinPathsToOne" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate implicit join path constructors on generated tables for outgoing foreign key relationships (to-one relationships)]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="deprecated" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate deprecated code for backwards compatibility]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="deprecationOnUnknownTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate deprecation annotations on references to unknown data types.
This helps to identify columns, attributes, and parameters, which may not be usable through
jOOQ API, without adding custom data type bindings to them.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="instanceFields" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[@deprecated]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="generatedAnnotation" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate the {@link javax.annotation.Generated} annotation to indicate
jOOQ version used for source code]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="routines" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate Routine classes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="sequences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate Sequence classes. ]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="udts" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate UDT classes. ]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="queues" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate Queue classes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="links" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate database Link classes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="keys" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate Key classes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="tables" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate Table classes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="records" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate TableRecord classes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordsImplementingRecordN" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate TableRecord classes that implement Record[N] super types]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojos" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate POJOs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojosEqualsAndHashCode" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate basic equals() and hashCode() methods in POJOs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojosToString" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate basic toString() methods in POJOs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="immutablePojos" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate immutable POJOs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="serializablePojos" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate serializable POJOs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="interfaces" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generated interfaces to be implemented by records and/or POJOs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="immutableInterfaces" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate immutable interfaces.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="serializableInterfaces" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate serializable interfaces.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="daos" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate DAOs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="jpaAnnotations" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Annotate POJOs and Records with JPA annotations.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="jpaVersion" type="tns:JpaVersion" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Version of JPA specification is to be used to generate version-specific annotations. If it is omitted, the latest version is used by default.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="validationAnnotations" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Annotate POJOs and Records with JSR-303 validation annotations]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="springAnnotations" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Annotate DAOs with useful spring annotations such as @Repository or @Autowired.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalObjectReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all global object references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalCatalogReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global catalog references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalSchemaReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global schema references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalTableReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global table references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalSequenceReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global sequence references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalUDTReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global UDT references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalRoutineReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global routine references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalQueueReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global queue references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalLinkReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global database link references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalKeyReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global key references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="javadoc" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of Javadoc on all objects.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="comments" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all objects.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnCatalogs" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all catalogs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnSchemas" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all schemas.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnTables" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all tables.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnColumns" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all columns.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnUDTs" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all UDTs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnAttributes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all attributes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnPackages" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all packages.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnRoutines" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all routines.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnParameters" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all parameters.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnSequences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all sequences.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnLinks" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all links.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnQueues" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all queues.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnKeys" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all keys.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="fluentSetters" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate fluent setters in records, POJOs, interfaces.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <!--
        Modify DefaultGeneratorStrategy behaviour to generate getters and setters in JavaBeans style in

        - records
        - pojos
        - interfaces

        If this flag is set to false, then:

        - Column name   : X_INDEX
        - Attribute name: xIndex
        - Getter name   : getXIndex()
        - Setter name   : setXIndex()

        If this flag is set to false, then:

        - Getter name   : getxIndex()
        - Setter name   : setxIndex()

        Custom GeneratorStrategy implementations are unaffected.
        -->
      <element name="javaBeansGettersAndSetters" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Modify DefaultGeneratorStrategy behaviour to generate getters and setters in JavaBeans style in records, POJOs, interfaces.
<p>
If this flag is set to false, then:
<p>
<ul>
<li>Column name   : X_INDEX</li>
<li>Attribute name: xIndex</li>
<li>Getter name   : getXIndex()</li>
<li>Setter name   : setXIndex()</li>
</ul>
<p>
If this flag is set to true, then:
<ul>
<li>Getter name   : getxIndex()</li>
<li>Setter name   : setxIndex()</li>
</ul>
<p>
Custom GeneratorStrategy implementations are unaffected]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="varargSetters" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate varargs setters for array types for convenience.
<p>
This may lead to compilation warnings in current Java versions.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="fullyQualifiedTypes" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all the types in generated code that should be fully qualified.
<p>
This can be useful if you have a database object that generates a String
class, and you want to avoid naming clashes with the java.lang package
by specifying <code>java\.lang\..*</code>]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="emptyCatalogs" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether empty catalogs (e.g. empty because of <excludes/> configurations) should still be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="emptySchemas" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether empty schemas (e.g. empty because of <excludes/> configurations) should still be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="javaTimeTypes" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A flag indicating whether Java 8's java.time types should be used by the
source code generator, rather than JDBC's java.sql types.
<p>
This flag is ignored in the commercial Java 6 distribution of jOOQ 3.9+ ]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="primaryKeyTypes" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether wrapper types should be generated for primary key columns, and for their referencing foreign keys.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="Target">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Options to define where the generated code should be located.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="packageName" type="string" default="org.jooq.generated" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The destination package of your generated classes (within the destination directory)
<p>
jOOQ may append the schema name to this package if generating multiple schemas,
e.g. org.jooq.generated.schema1, org.jooq.generated.schema2]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="directory" type="string" default="target/generated-sources/jooq" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The destination directory of your generated classes]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="encoding" type="string" default="UTF-8" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The file encoding to be used with all output files.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="clean" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether the target package should be cleaned to contain only generated code after a generation run.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <simpleType name="RegexFlags">
    <list itemType="tns:RegexFlag"/>
  </simpleType>

  <simpleType name="RegexFlag">
    <restriction base="string">
      <enumeration value="UNIX_LINES"/>
      <enumeration value="CASE_INSENSITIVE"/>
      <enumeration value="COMMENTS"/>
      <enumeration value="MULTILINE"/>
      <enumeration value="LITERAL"/>
      <enumeration value="DOTALL"/>
      <enumeration value="UNICODE_CASE"/>
      <enumeration value="CANON_EQ"/>
      <enumeration value="UNICODE_CHARACTER_CLASS"/>
    </restriction>
  </simpleType>

  <simpleType name="JpaVersion">
    <restriction base="string">
      <enumeration value="1.0"/>
      <enumeration value="2.0"/>
      <enumeration value="2.1"/>
      <enumeration value="2.2"/>
    </restriction>
  </simpleType>

  <simpleType name="Nullability">
    <restriction base="string">
      <enumeration value="ALL"/>
      <enumeration value="NULL"/>
      <enumeration value="NOT_NULL"/>
    </restriction>
  </simpleType>
</schema>
