<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:mule="http://www.mulesoft.org/schema/mule/core" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://www.mulesoft.org/schema/mule/validation">
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"></xs:import>
  <xs:import schemaLocation="http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" namespace="http://www.springframework.org/schema/beans"></xs:import>
  <xs:import schemaLocation="http://www.mulesoft.org/schema/mule/core/current/mule.xsd" namespace="http://www.mulesoft.org/schema/mule/core"></xs:import>
  <xs:import schemaLocation="http://www.mulesoft.org/schema/mule/devkit/current/mule-devkit.xsd" namespace="http://www.mulesoft.org/schema/mule/devkit"></xs:import>
  <xs:simpleType name="integerType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:integer"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="decimalType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:decimal"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="floatType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:float"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="doubleType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:double"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="dateTimeType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:dateTime"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="longType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:long"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="byteType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:byte"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="booleanType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:boolean"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="anyUriType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:anyURI"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="charType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:minLength value="1"></xs:minLength>
          <xs:maxLength value="1"></xs:maxLength>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:complexType name="XmlType">
    <xs:sequence>
      <xs:any maxOccurs="unbounded" minOccurs="0" processContents="lax"></xs:any>
    </xs:sequence>
    <xs:attribute name="ref" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation>The reference object for this parameter</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:element xmlns:devkit="http://www.mulesoft.org/schema/mule/devkit" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="config" substitutionGroup="mule:abstract-extension" devkit:javaClass="org.mule.modules.validation.adapters.ValidationModuleLifecycleAdapter">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mule:abstractExtensionType">
          <xs:annotation>
            <xs:documentation>A common issue when receiving data either electronically or from user input is verifying the integrity of the data.
This work is repetitive and becomes even more complicated when different sets of validation rules need to be applied
to the same set of data based on locale. Error messages may also vary by locale. This module addresses some of
these issues to speed development and maintenance of validation rules.</xs:documentation>
          </xs:annotation>
          <xs:attribute name="name" use="optional" type="xs:string">
            <xs:annotation>
              <xs:documentation>Give a name to this configuration so it can be later referenced by config-ref.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/validation" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="validate-domain" substitutionGroup="mule:abstract-message-processor" type="ValidateDomainType">
    <xs:annotation>
      <xs:documentation>If the specified &lt;code&gt;domain&lt;/code&gt; does not parses as a valid domain name with a recognized top-level domain then
throw an exception.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValidateDomainType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="domain" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Domain name to validate</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="exceptionClassName" default="org.mule.modules.validation.InvalidException" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Class name of the exception to throw</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/validation" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="validate-top-level-domain" substitutionGroup="mule:abstract-message-processor" type="ValidateTopLevelDomainType">
    <xs:annotation>
      <xs:documentation>If if the specified &lt;code&gt;topLevelDomain&lt;/code&gt; does not matches any IANA-defined top-level domain throw an exception.
Leading dots are ignored if present. The search is case-sensitive.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValidateTopLevelDomainType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="topLevelDomain" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Domain name to validate</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="exceptionClassName" default="org.mule.modules.validation.InvalidException" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Class name of the exception to throw</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/validation" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="validate-top-level-domain-country" substitutionGroup="mule:abstract-message-processor" type="ValidateTopLevelDomainCountryType">
    <xs:annotation>
      <xs:documentation>If if the specified &lt;code&gt;countryCode&lt;/code&gt; does not matches any IANA-defined top-level domain throw an exception.
Leading dots are ignored if present. The search is case-sensitive.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValidateTopLevelDomainCountryType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="countryCode" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Country code to validate</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="exceptionClassName" default="org.mule.modules.validation.InvalidException" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Class name of the exception to throw</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/validation" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="validate-credit-card-number" substitutionGroup="mule:abstract-message-processor" type="ValidateCreditCardNumberType">
    <xs:annotation>
      <xs:documentation>If if the specified &lt;code&gt;creditCardNumber&lt;/code&gt; is not a valid credit card number throw an exception.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValidateCreditCardNumberType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:sequence>
          <xs:element name="credit-card-types" maxOccurs="1" minOccurs="1">
            <xs:annotation>
              <xs:documentation>Credit card types to validate</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:sequence>
                <xs:element name="credit-card-type" maxOccurs="unbounded" minOccurs="0">
                  <xs:complexType>
                    <xs:simpleContent>
                      <xs:extension xmlns="http://www.mulesoft.org/schema/mule/validation" base="CreditCardTypeEnumType"></xs:extension>
                    </xs:simpleContent>
                  </xs:complexType>
                </xs:element>
              </xs:sequence>
              <xs:attribute name="ref" use="optional" type="xs:string">
                <xs:annotation>
                  <xs:documentation>The reference object for this parameter</xs:documentation>
                </xs:annotation>
              </xs:attribute>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="creditCardNumber" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Credit card number to validate</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="exceptionClassName" default="org.mule.modules.validation.InvalidException" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Class name of the exception to throw</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/validation" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="validate-email" substitutionGroup="mule:abstract-message-processor" type="ValidateEmailType">
    <xs:annotation>
      <xs:documentation>If the specified &lt;code&gt;emailAddress&lt;/code&gt; is not a valid one throw an exception.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValidateEmailType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="emailAddress" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Email address to validate</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="exceptionClassName" default="org.mule.modules.validation.InvalidException" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Class name of the exception to throw</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/validation" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="validate-ip-address" substitutionGroup="mule:abstract-message-processor" type="ValidateIpAddressType">
    <xs:annotation>
      <xs:documentation>If the specified &lt;code&gt;ipAddress&lt;/code&gt; is not a valid one throw an exception.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValidateIpAddressType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="ipAddress" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>IP address to validate</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="exceptionClassName" default="org.mule.modules.validation.InvalidException" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Class name of the exception to throw</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/validation" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="validate-percentage" substitutionGroup="mule:abstract-message-processor" type="ValidatePercentageType">
    <xs:annotation>
      <xs:documentation>If the specified &lt;code&gt;percentage&lt;/code&gt; is not a valid one throw an exception.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValidatePercentageType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="percentage" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Percentage to validate</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="exceptionClassName" default="org.mule.modules.validation.InvalidException" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Class name of the exception to throw</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/validation" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="validate-isbn10" substitutionGroup="mule:abstract-message-processor" type="Validate-isbn10Type">
    <xs:annotation>
      <xs:documentation>If the specified &lt;code&gt;isbnCode&lt;/code&gt; is not a valid one throw an exception.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="Validate-isbn10Type">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="isbnCode" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>ISBN code to validate</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="exceptionClassName" default="org.mule.modules.validation.InvalidException" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Class name of the exception to throw</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/validation" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="validate-isbn13" substitutionGroup="mule:abstract-message-processor" type="Validate-isbn13Type">
    <xs:annotation>
      <xs:documentation>If the specified &lt;code&gt;isbnCode&lt;/code&gt; is not a valid one throw an exception.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="Validate-isbn13Type">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="isbnCode" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>ISBN code to validate</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="exceptionClassName" default="org.mule.modules.validation.InvalidException" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Class name of the exception to throw</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/validation" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="validate-url" substitutionGroup="mule:abstract-message-processor" type="ValidateUrlType">
    <xs:annotation>
      <xs:documentation>If the specified &lt;code&gt;url&lt;/code&gt; is not a valid one throw an exception.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValidateUrlType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="url" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>URL to validate</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="allowTwoSlashes" default="false" use="optional" type="booleanType">
          <xs:annotation>
            <xs:documentation>Allow two slashes in the path component of the URL.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="allowAllSchemes" default="false" use="optional" type="booleanType">
          <xs:annotation>
            <xs:documentation>Allows all validly formatted schemes to pass validation instead of supplying a set of valid schemes.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="allowLocalURLs" default="false" use="optional" type="booleanType">
          <xs:annotation>
            <xs:documentation>Allow local URLs, such as http://localhost/ or http://machine/ .</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="noFragments" default="false" use="optional" type="booleanType">
          <xs:annotation>
            <xs:documentation>Enabling this options disallows any URL fragments.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="exceptionClassName" default="org.mule.modules.validation.InvalidException" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Class name of the exception to throw</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/validation" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="validate-time" substitutionGroup="mule:abstract-message-processor" type="ValidateTimeType">
    <xs:annotation>
      <xs:documentation>If the specified &lt;code&gt;time&lt;/code&gt; is not a valid one throw an exception.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValidateTimeType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="time" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Time to validate</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="locale" default="US" use="optional" type="LocaleEnumType">
          <xs:annotation>
            <xs:documentation>The locale to use for the format</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="pattern" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>The pattern used to format the value</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="exceptionClassName" default="org.mule.modules.validation.InvalidException" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Class name of the exception to throw</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/validation" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="validate-date" substitutionGroup="mule:abstract-message-processor" type="ValidateDateType">
    <xs:annotation>
      <xs:documentation>If the specified &lt;code&gt;date&lt;/code&gt; is not a valid one throw an exception.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValidateDateType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="date" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Date to validate</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="locale" default="US" use="optional" type="LocaleEnumType">
          <xs:annotation>
            <xs:documentation>The locale to use for the format</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="pattern" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>The pattern used to format the value</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="exceptionClassName" default="org.mule.modules.validation.InvalidException" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Class name of the exception to throw</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/validation" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="validate-using-regex" substitutionGroup="mule:abstract-message-processor" type="ValidateUsingRegexType">
    <xs:annotation>
      <xs:documentation>If the specified &lt;code&gt;value&lt;/code&gt; does not match any of the regexs then throw an exception.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValidateUsingRegexType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:sequence>
          <xs:element name="regexs" maxOccurs="1" minOccurs="1">
            <xs:annotation>
              <xs:documentation>Set of regular expressions to test against</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:sequence>
                <xs:element name="regex" maxOccurs="unbounded" minOccurs="0">
                  <xs:complexType>
                    <xs:simpleContent>
                      <xs:extension base="xs:string">
                        <xs:attribute name="value-ref" use="optional" type="xs:string"></xs:attribute>
                      </xs:extension>
                    </xs:simpleContent>
                  </xs:complexType>
                </xs:element>
              </xs:sequence>
              <xs:attribute name="ref" use="optional" type="xs:string">
                <xs:annotation>
                  <xs:documentation>The reference object for this parameter</xs:documentation>
                </xs:annotation>
              </xs:attribute>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="value" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Value to match</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="caseSensitive" default="false" use="optional" type="booleanType">
          <xs:annotation>
            <xs:documentation>when true matching is case sensitive, otherwise matching is case in-sensitive</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="exceptionClassName" default="org.mule.modules.validation.InvalidException" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Class name of the exception to throw</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/validation" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="validate-long" substitutionGroup="mule:abstract-message-processor" type="ValidateLongType">
    <xs:annotation>
      <xs:documentation>If the specified &lt;code&gt;value&lt;/code&gt; is not a valid  throw an exception.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValidateLongType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="value" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Value to validate</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="locale" default="US" use="optional" type="LocaleEnumType">
          <xs:annotation>
            <xs:documentation>The locale to use for the format</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="pattern" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>The pattern used to format the value</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="minValue" use="optional" type="longType">
          <xs:annotation>
            <xs:documentation>The minimum value</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="maxValue" use="optional" type="longType">
          <xs:annotation>
            <xs:documentation>The maximum value</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="exceptionClassName" default="org.mule.modules.validation.InvalidException" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Class name of the exception to throw</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/validation" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="validate-integer" substitutionGroup="mule:abstract-message-processor" type="ValidateIntegerType">
    <xs:annotation>
      <xs:documentation>If the specified &lt;code&gt;value&lt;/code&gt; is not a valid  throw an exception.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValidateIntegerType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="value" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Value to validate</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="locale" default="US" use="optional" type="LocaleEnumType">
          <xs:annotation>
            <xs:documentation>The locale to use for the format</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="pattern" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>The pattern used to format the value</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="minValue" use="optional" type="integerType">
          <xs:annotation>
            <xs:documentation>The minimum value</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="maxValue" use="optional" type="integerType">
          <xs:annotation>
            <xs:documentation>The maximum value</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="exceptionClassName" default="org.mule.modules.validation.InvalidException" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Class name of the exception to throw</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/validation" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="validate-float" substitutionGroup="mule:abstract-message-processor" type="ValidateFloatType">
    <xs:annotation>
      <xs:documentation>If the specified &lt;code&gt;value&lt;/code&gt; is not a valid  throw an exception.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValidateFloatType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="value" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Value to validate</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="locale" default="US" use="optional" type="LocaleEnumType">
          <xs:annotation>
            <xs:documentation>The locale to use for the format</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="pattern" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>The pattern used to format the value</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="minValue" use="optional" type="floatType">
          <xs:annotation>
            <xs:documentation>The minimum value</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="maxValue" use="optional" type="floatType">
          <xs:annotation>
            <xs:documentation>The maximum value</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="exceptionClassName" default="org.mule.modules.validation.InvalidException" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Class name of the exception to throw</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/validation" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="validate-double" substitutionGroup="mule:abstract-message-processor" type="ValidateDoubleType">
    <xs:annotation>
      <xs:documentation>If the specified &lt;code&gt;value&lt;/code&gt; is not a valid  throw an exception.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValidateDoubleType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="value" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Value to validate</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="locale" default="US" use="optional" type="LocaleEnumType">
          <xs:annotation>
            <xs:documentation>The locale to use for the format</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="pattern" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>The pattern used to format the value</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="minValue" use="optional" type="doubleType">
          <xs:annotation>
            <xs:documentation>The minimum value</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="maxValue" use="optional" type="doubleType">
          <xs:annotation>
            <xs:documentation>The maximum value</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="exceptionClassName" default="org.mule.modules.validation.InvalidException" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Class name of the exception to throw</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/validation" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="validate-short" substitutionGroup="mule:abstract-message-processor" type="ValidateShortType">
    <xs:annotation>
      <xs:documentation>If the specified &lt;code&gt;value&lt;/code&gt; is not a valid  throw an exception.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValidateShortType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="value" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Value to validate</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="locale" default="US" use="optional" type="LocaleEnumType">
          <xs:annotation>
            <xs:documentation>The locale to use for the format</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="pattern" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>The pattern used to format the value</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="minValue" use="optional" type="integerType">
          <xs:annotation>
            <xs:documentation>The minimum value</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/validation" name="maxValue" use="optional" type="integerType">
          <xs:annotation>
            <xs:documentation>The maximum value</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="exceptionClassName" default="org.mule.modules.validation.InvalidException" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Class name of the exception to throw</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/validation" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="validate-not-empty" substitutionGroup="mule:abstract-message-processor" type="ValidateNotEmptyType">
    <xs:annotation>
      <xs:documentation>If the specified &lt;code&gt;object&lt;/code&gt; is empty or null throw an exception.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ValidateNotEmptyType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="object-ref" default="#[payload]" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Object to validate</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="exceptionClassName" default="org.mule.modules.validation.InvalidException" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Class name of the exception to throw</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="CreditCardTypeEnumType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="VISA"></xs:enumeration>
          <xs:enumeration value="MASTERCARD"></xs:enumeration>
          <xs:enumeration value="DINERS"></xs:enumeration>
          <xs:enumeration value="DISCOVER"></xs:enumeration>
          <xs:enumeration value="AMEX"></xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="LocaleEnumType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="ENGLISH"></xs:enumeration>
          <xs:enumeration value="FRENCH"></xs:enumeration>
          <xs:enumeration value="GERMAN"></xs:enumeration>
          <xs:enumeration value="ITALIAN"></xs:enumeration>
          <xs:enumeration value="JAPANESE"></xs:enumeration>
          <xs:enumeration value="KOREAN"></xs:enumeration>
          <xs:enumeration value="CHINESE"></xs:enumeration>
          <xs:enumeration value="SIMPLIFIED_CHINESE"></xs:enumeration>
          <xs:enumeration value="TRADITIONAL_CHINESE"></xs:enumeration>
          <xs:enumeration value="FRANCE"></xs:enumeration>
          <xs:enumeration value="GERMANY"></xs:enumeration>
          <xs:enumeration value="ITALY"></xs:enumeration>
          <xs:enumeration value="JAPAN"></xs:enumeration>
          <xs:enumeration value="KOREA"></xs:enumeration>
          <xs:enumeration value="CHINA"></xs:enumeration>
          <xs:enumeration value="PRC"></xs:enumeration>
          <xs:enumeration value="TAIWAN"></xs:enumeration>
          <xs:enumeration value="UK"></xs:enumeration>
          <xs:enumeration value="US"></xs:enumeration>
          <xs:enumeration value="CANADA"></xs:enumeration>
          <xs:enumeration value="CANADA_FRENCH"></xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
</xs:schema>