<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Check out chapter 7 of the spec.<div>It includes all the overriding rules. I adjusted a bit the schema as well.</div><div><br></div><div>The full spec is available on demand.</div><div><span class="Apple-style-span" style="font-family: -webkit-sans-serif; font-size: 14px; "><div class="titlepage" style="font-family: sans-serif; font-size: 14px; "><div style="font-family: sans-serif; font-size: 14px; "><div style="font-family: sans-serif; font-size: 14px; "><h2 class="title" style="font-family: sans-serif; color: rgb(0, 51, 153); font-size: 140%; margin-top: 10px; padding-top: 5px; font-weight: bold; ">Chapter&nbsp;7.&nbsp;XML deployment descriptor</h2></div></div><div style="font-family: sans-serif; font-size: 14px; "></div></div><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">Two kind of XML descriptors are used by Bean Validation. The first one describes the Bean Validation configuration provided as&nbsp;<tt class="filename" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">META-INF/validation.xml</tt>. The second one describes constraints declarations and closely matches the annotations declaration approach.</p><div class="section" lang="en" style="font-family: sans-serif; font-size: 14px; "><div class="titlepage" style="font-family: sans-serif; font-size: 14px; "><div style="font-family: sans-serif; font-size: 14px; "><div style="font-family: sans-serif; font-size: 14px; "><h2 class="title" style="clear: both; font-family: sans-serif; color: rgb(0, 51, 153); font-size: 140%; margin-top: 10px; padding-top: 5px; font-weight: bold; "><a name="d0e4394" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 204); "></a>7.1.&nbsp;Constraint definition and declaration</h2></div></div><div style="font-family: sans-serif; font-size: 14px; "></div></div><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">Bean Validation lets you declare constraints via XML rather than annotations. You can either ignore constraints declared via annotations or consider XML as adding additional constraints on top of annotation constraints. While it is not possible to define a new constraint via XML, you can redefine the list of&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ConstraintValidator</tt>&nbsp;classes associated to a given constraint definition.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">There is no distinction between an annotation based constraint declaration and an XML based constraint declaration: they are considered equivalent and should be treaded as such by the Bean Validation provider.. Specifically when exploring metadata, the Bean Validation provider must ensure that an annotation instance corresponding to the XML declaration is provided via<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ConstraintDescriptor.getAnnnotation()</tt>. The annotation elements as well as&nbsp;<tt class="methodname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ConstraintValidator.getParameters()</tt>&nbsp;must reflect the values described in the XML declaration (see<a href="file:///Users/manu/projects/specs/303/specbook/build/en/html/ch07.html#xml-mapping-typeconversion" title="7.1.3.&nbsp;Converting the string representation of a value" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 204); ">Section&nbsp;7.1.3, “Converting the string representation of a value”</a>). Likewise,&nbsp;<tt class="methodname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ConstraintDescriptor.getConstraintValidatorClasses()</tt>&nbsp;must reflect XML based constraint definition overriding (see&nbsp;<a href="file:///Users/manu/projects/specs/303/specbook/build/en/html/ch07.html#xml-mapping-constraintdefinition" title="7.1.2.&nbsp;Overriding constraint definitions in XML" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 204); ">Section&nbsp;7.1.2, “Overriding constraint definitions in XML”</a>).</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">A given class must not be described more than once amongst the XML mapping descriptors. A given field or getter must not be described more than once on a given class description. A given constraint definition must not be overridden more than once amongst the XML mapping descriptors. If any of these rule is violated in a given validation deployment, a<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">DuplicateMappingException</tt>&nbsp;is raised during the creation of the&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ValidatorFactory</tt>.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">The schema is provided in&nbsp;<a href="file:///Users/manu/projects/specs/303/specbook/build/en/html/ch07.html#xml-mapping-xsd" title="7.1.4.&nbsp;XML Schema" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 204); ">Section&nbsp;7.1.4, “XML Schema”</a>.</p><div class="section" lang="en" style="font-family: sans-serif; font-size: 14px; "><div class="titlepage" style="font-family: sans-serif; font-size: 14px; "><div style="font-family: sans-serif; font-size: 14px; "><div style="font-family: sans-serif; font-size: 14px; "><h3 class="title" style="font-family: sans-serif; color: rgb(0, 51, 153); font-size: 120%; margin-top: 10px; padding-top: 5px; font-weight: bold; "><a name="d0e4429" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 204); "></a>7.1.1.&nbsp;Constraint declaration in XML</h3></div></div><div style="font-family: sans-serif; font-size: 14px; "></div></div><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">If&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">default-package</tt>&nbsp;is set, all unqualified class names (including annotations) are considered part of the package described by&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">default-package</tt>.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">A given JavaBean is described by the&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">bean</tt>&nbsp;element. The name of the class is mandatory. By default, all constraint declarations expressed via annotation are ignored for classes described in XML. You can force Bean Validation to consider both annotation and XML constraint declarations by using&nbsp;<tt class="code" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ignore-annotation="false"</tt>&nbsp;on&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">bean</tt>.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">If the name of the class does refer to a class not present in in the classpath, a&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ConfigurationException</tt>&nbsp;is raised.</p><div class="example" style="font-family: sans-serif; font-size: 14px; "><a name="d0e4456" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 204); "></a><p class="title" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); margin-top: 10px; padding-top: 5px; font-weight: bold; "><b style="font-family: sans-serif; font-size: 14px; ">Example&nbsp;7.1.&nbsp;Example of bean XML declaration</b></p><pre class="programlisting" style="font-size: 100%; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); background-color: rgb(244, 244, 244); font-family: monospace; width: auto; ">&lt;constraint-mappings
        xmlns="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a>"
        xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>"
        xsi:schemaLocation="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a> validation-mapping-1.0.xsd">

    &lt;default-package>com.acme.app.domain&lt;/default-package>

    &lt;bean class="Customer" ignore-annotations="false">
        [...]
    &lt;/bean>
    &lt;bean class="com.acme.common.model.Address">
        [...]
    &lt;/bean>
&lt;/constraint-mappings></pre></div><div class="section" lang="en" style="font-family: sans-serif; font-size: 14px; "><div class="titlepage" style="font-family: sans-serif; font-size: 14px; "><div style="font-family: sans-serif; font-size: 14px; "><div style="font-family: sans-serif; font-size: 14px; "><h4 class="title" style="font-family: sans-serif; color: rgb(0, 51, 153); font-size: 100%; margin-top: 10px; padding-top: 5px; font-weight: bold; "><a name="d0e4461" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 204); "></a>7.1.1.1.&nbsp;Class-level overriding</h4></div></div><div style="font-family: sans-serif; font-size: 14px; "></div></div><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">Class level annotations are described via the&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">class</tt>&nbsp;element. If&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ignore-annotations</tt>&nbsp;is declared, Bean Validation must honor the explicit value for this element. If not declared, the default value for the bean is considered.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">When ignore annotations is true, class-level Bean Validation annotations are ignored for this class (including the&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">@GroupSequence</tt>). When ignore annotations is false:</p><div class="itemizedlist" style="font-family: sans-serif; font-size: 14px; "><ul type="disc" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><li style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">Constraints declared in XML and constraints declared in annotations are added and form the list of class-level declared constraints.</p></li><li style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">@GroupSequence</tt>&nbsp;is considered unless&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">group-sequence</tt>&nbsp;element is explicitly used.</p></li></ul></div><div class="example" style="font-family: sans-serif; font-size: 14px; "><a name="d0e4489" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 204); "></a><p class="title" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); margin-top: 10px; padding-top: 5px; font-weight: bold; "><b style="font-family: sans-serif; font-size: 14px; ">Example&nbsp;7.2.&nbsp;Example of class-level declaration</b></p><pre class="programlisting" style="font-size: 100%; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); background-color: rgb(244, 244, 244); font-family: monospace; width: auto; ">&lt;constraint-mappings
        xmlns="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a>"
        xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>"
        xsi:schemaLocation="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a> validation-mapping-1.0.xsd">
    &lt;default-package>com.acme.app.domain&lt;/default-package>
    &lt;bean class="Customer" ignore-annotations="false">
        &lt;class ignore-annotations="true">
            [...]
        &lt;/class>
    &lt;/bean>
    &lt;bean class="com.acme.common.model.Address">
        &lt;class>
            [...]
        &lt;/class>
    &lt;/bean>
&lt;/constraint-mappings></pre></div></div><div class="section" lang="en" style="font-family: sans-serif; font-size: 14px; "><div class="titlepage" style="font-family: sans-serif; font-size: 14px; "><div style="font-family: sans-serif; font-size: 14px; "><div style="font-family: sans-serif; font-size: 14px; "><h4 class="title" style="font-family: sans-serif; color: rgb(0, 51, 153); font-size: 100%; margin-top: 10px; padding-top: 5px; font-weight: bold; "><a name="d0e4494" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 204); "></a>7.1.1.2.&nbsp;Field-level overriding</h4></div></div><div style="font-family: sans-serif; font-size: 14px; "></div></div><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">Field level annotations are described via the&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">field</tt>&nbsp;element. The&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">name</tt>&nbsp;attribute correspond to the name of the field considered. If&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ignore-annotations</tt>&nbsp;is declared, Bean Validation must honor the explicit value for this element. If not declared, the default value for the bean is considered.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">When ignore annotations is true, field-level Bean Validation annotations on the targeted field are ignored (including the&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">@Valid</tt>). When ignore annotations is false:</p><div class="itemizedlist" style="font-family: sans-serif; font-size: 14px; "><ul type="disc" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><li style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">Constraints declared in XML and constraints declared in annotations are added and form the list of field-level declared constraints.</p></li><li style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">@Valid</tt>&nbsp;is considered unless&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">valid</tt>&nbsp;element is explicitly use. Note that the only way to disable cascading on a field marked as&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">@Valid</tt>&nbsp;is to use&nbsp;<tt class="code" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ignore-validation=true</tt>.</p></li></ul></div><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">If the name of the field does not correspond to a field in the given bean a&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ConfigurationException</tt>&nbsp;is raised.</p><div class="example" style="font-family: sans-serif; font-size: 14px; "><a name="d0e4536" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 204); "></a><p class="title" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); margin-top: 10px; padding-top: 5px; font-weight: bold; "><b style="font-family: sans-serif; font-size: 14px; ">Example&nbsp;7.3.&nbsp;Field-level declaration</b></p><pre class="programlisting" style="font-size: 100%; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); background-color: rgb(244, 244, 244); font-family: monospace; width: auto; ">&lt;constraint-mappings
        xmlns="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a>"
        xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>"
        xsi:schemaLocation="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a> validation-mapping-1.0.xsd">
    &lt;default-package>com.acme.app.domain&lt;/default-package>
    &lt;bean class="Customer" ignore-annotations="false">
        &lt;field name="firstName">
            [...]
        &lt;/field>
        &lt;field name="orders">
            &lt;valid/>
            [...]
        &lt;/field>
    &lt;/bean>
&lt;/constraint-mappings></pre></div></div><div class="section" lang="en" style="font-family: sans-serif; font-size: 14px; "><div class="titlepage" style="font-family: sans-serif; font-size: 14px; "><div style="font-family: sans-serif; font-size: 14px; "><div style="font-family: sans-serif; font-size: 14px; "><h4 class="title" style="font-family: sans-serif; color: rgb(0, 51, 153); font-size: 100%; margin-top: 10px; padding-top: 5px; font-weight: bold; "><a name="d0e4541" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 204); "></a>7.1.1.3.&nbsp;Property-level overriding</h4></div></div><div style="font-family: sans-serif; font-size: 14px; "></div></div><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">Property-level annotations are described via the&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">getter</tt>&nbsp;element. The&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">name</tt>&nbsp;attribute correspond to the name of the property considered as defined in&nbsp;<a href="file:///Users/manu/projects/specs/303/specbook/build/en/html/constraintdeclarationvalidationprocess.html#constraintdeclarationvalidationprocess-requirements-property" title="3.1.2.&nbsp;Field and property validation" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 204); ">Section&nbsp;3.1.2, “Field and property validation”</a>&nbsp;(for example a getter&nbsp;<tt class="code" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">String getAge()</tt>&nbsp;would have&nbsp;<tt class="code" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">&lt;getter name="age"/></tt>&nbsp;as a corresponding descriptor). If&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ignore-annotations</tt>&nbsp;is declared, Bean Validation must honor the explicit value for this element. If not declared, the default value for the bean is considered.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">When ignore annotations is true, property-level Bean Validation annotations on the targeted property are ignored (including the&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">@Valid</tt>). When ignore annotations is false:</p><div class="itemizedlist" style="font-family: sans-serif; font-size: 14px; "><ul type="disc" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><li style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">Constraints declared in XML and constraints declared in annotations are added and form the list of property-level declared constraints.</p></li><li style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">@Valid</tt>&nbsp;is considered unless&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">valid</tt>&nbsp;element is explicitly use. Note that the only way to disable cascading on a field marked as&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">@Valid</tt>&nbsp;is to use&nbsp;<tt class="code" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ignore-validation=true</tt>.</p></li></ul></div><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">If the name of the property does not correspond to a property in the given bean a&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ConfigurationException</tt>&nbsp;is raised.</p><div class="example" style="font-family: sans-serif; font-size: 14px; "><a name="d0e4591" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 204); "></a><p class="title" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); margin-top: 10px; padding-top: 5px; font-weight: bold; "><b style="font-family: sans-serif; font-size: 14px; ">Example&nbsp;7.4.&nbsp;Property-level declaration</b></p><pre class="programlisting" style="font-size: 100%; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); background-color: rgb(244, 244, 244); font-family: monospace; width: auto; ">&lt;constraint-mappings
        xmlns="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a>"
        xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>"
        xsi:schemaLocation="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a> validation-mapping-1.0.xsd">
    &lt;default-package>com.acme.app.domain&lt;/default-package>
    &lt;bean class="Customer" ignore-annotations="false">
        &lt;getter name="firstName">
            [...]
        &lt;/getter>
        &lt;getter name="orders">
            &lt;valid/>
            [...]
        &lt;/getter>
    &lt;/bean>
&lt;/constraint-mappings></pre></div></div><div class="section" lang="en" style="font-family: sans-serif; font-size: 14px; "><div class="titlepage" style="font-family: sans-serif; font-size: 14px; "><div style="font-family: sans-serif; font-size: 14px; "><div style="font-family: sans-serif; font-size: 14px; "><h4 class="title" style="font-family: sans-serif; color: rgb(0, 51, 153); font-size: 100%; margin-top: 10px; padding-top: 5px; font-weight: bold; "><a name="d0e4596" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 204); "></a>7.1.1.4.&nbsp;Constraint declaration</h4></div></div><div style="font-family: sans-serif; font-size: 14px; "></div></div><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">A new constraint declaration is represented by the&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">constraint</tt>&nbsp;element. The annotation&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">attribute</tt>&nbsp;is the class name of the annotation representing the constraint. Message and groups are defined respectively by the&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">message</tt>&nbsp;and&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">groups</tt>&nbsp;elements.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">Other custom elements of an annotation are represented by&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">element</tt>. The&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">name</tt>&nbsp;attribute is mandatory and represents the name of the element in the constraint declaration. “<span class="quote" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">message</span>”, “<span class="quote" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">groups</span>” are not permitted names, use the&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">message</tt>&nbsp;or&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">groups</tt>&nbsp;elements instead.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">If the element represents a primitive type, a class or an enum, the string representation of its value is placed in the element itself. See&nbsp;<a href="file:///Users/manu/projects/specs/303/specbook/build/en/html/ch07.html#xml-mapping-typeconversion" title="7.1.3.&nbsp;Converting the string representation of a value" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 204); ">Section&nbsp;7.1.3, “Converting the string representation of a value”</a>&nbsp;for a detailed explanation of the conversion rules from string to the type.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">If the element represents a primitive type array, a class array or an enum array, the string representation of each value is placed in a&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">value</tt>&nbsp;element placed under the element itself.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">If the element represents an annotation, the&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">annotation</tt>&nbsp;element is used to represent the annotation and placed under&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">element</tt>. An&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">annotation</tt>&nbsp;element contains&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">element</tt>&nbsp;elements.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">If the element represents an array of annotations, one or more&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">annotation</tt>&nbsp;elements are placed under&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">element</tt>.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">Elements with default values in the annotation definition do not have to be represented in XML: the default value will be used in this case. If an XML constraint declaration is missing mandatory elements, or if it contains elements not part of the constraint definition, a&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ConfigurationException</tt>&nbsp;is raised.</p><div class="example" style="font-family: sans-serif; font-size: 14px; "><a name="d0e4669" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 204); "></a><p class="title" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); margin-top: 10px; padding-top: 5px; font-weight: bold; "><b style="font-family: sans-serif; font-size: 14px; ">Example&nbsp;7.5.&nbsp;Constraint declaration</b></p><pre class="programlisting" style="font-size: 100%; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); background-color: rgb(244, 244, 244); font-family: monospace; width: auto; ">&lt;constraint-mappings
        xmlns="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a>"
        xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>"
        xsi:schemaLocation="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a> validation-mapping-1.0.xsd">
    &lt;default-package>com.acme.app.domain&lt;/default-package>
    &lt;bean class="Customer" ignore-annotations="false">

        &lt;field name="firstName">


            &lt;!-- @LooksLike(patterns={
                      @Pattern(value="myRegExp", flag=PatternFlag.INSENSITIVE),
                      @Pattern(value="my2ndRegExp")}
                  )
             -->
            &lt;constraint annotation="com.acme.app.constraint.LooksLike">
                &lt;element name="patterns">
                    &lt;annotation>
                        &lt;element name="value">myRegExp&lt;/element>
                        &lt;element name="flag">
                            &lt;value>INSENSITIVE&lt;/value>
                        &lt;/element>
                    &lt;/annotation>
                    &lt;annotation>
                        &lt;element name="value">my2ndRegExp&lt;/element>
                    &lt;/annotation>
                &lt;/element>
            &lt;/constraint>


        &lt;/field>
        &lt;field name="orders">
            &lt;valid/>


            &lt;!-- @DiscreteSize(value={ 0, 20 } )
             -->
            &lt;constraint annotation="com.acme.app.constraint.DiscreteSize">
                &lt;element name="value">
                    &lt;value>0&lt;/value>
                    &lt;value>20&lt;/value>
                &lt;/element>
            &lt;/constraint>


        &lt;/field>

        &lt;getter name="orders">
            &lt;valid/>


            &lt;!-- @Size(message="Size is limited",
                       groups={Default.class, LightValidation.class},
                       max=30
                 )
            -->
            &lt;constraint annotation="javax.validation.constraint.Size">
                &lt;message>Size is limited&lt;/message>
                &lt;groups>
                    &lt;value>com.acme.app.model.LightValidation&lt;/value>
                    &lt;value>javax.persistence.Default&lt;/value>
                &lt;/groups>
                &lt;element name="max">30&lt;/element>
            &lt;/constraint>


        &lt;/getter>
    &lt;/bean>
&lt;/constraint-mappings></pre></div></div></div><div class="section" lang="en" style="font-family: sans-serif; font-size: 14px; "><div class="titlepage" style="font-family: sans-serif; font-size: 14px; "><div style="font-family: sans-serif; font-size: 14px; "><div style="font-family: sans-serif; font-size: 14px; "><h3 class="title" style="font-family: sans-serif; color: rgb(0, 51, 153); font-size: 120%; margin-top: 10px; padding-top: 5px; font-weight: bold; "><a name="xml-mapping-constraintdefinition" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 204); "></a>7.1.2.&nbsp;Overriding constraint definitions in XML</h3></div></div><div style="font-family: sans-serif; font-size: 14px; "></div></div><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">A constraint definition (ie. the annotation representing a constraint), cannot be fully expressed in XML but the list of&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ConstraintValidator</tt>&nbsp;associated to a given constraint can be altered.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">A constraint definition is represented by a&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">constraint-definition</tt>&nbsp;element. The&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">annotation</tt>&nbsp;attribute represents the constraint annotation being altered. The&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">validated-by</tt>&nbsp;elements represent the (ordered) list of&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ConstraintValidator</tt>&nbsp;implementations associated to the constraint.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">If&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">include-existing-validator</tt>&nbsp;is set to false,&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ConstraintValidator</tt>&nbsp;defined on the constraint annotation are ignored. If set to true, the list of&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ConstraintValidator</tt>s described in XML are concatenated to the list of&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ConstraintValidator</tt>&nbsp;described on the annotation to form a new array of&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ConstraintValidator</tt>&nbsp;evaluated. Annotation based&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ConstraintValidator</tt>&nbsp;come before XML based&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ConstraintValidatot</tt>&nbsp;in the array. The new array is returned by&nbsp;<tt class="methodname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ConstraintDescriptor.getConstraintValidatorClasses()</tt>.</p><div class="example" style="font-family: sans-serif; font-size: 14px; "><a name="d0e4722" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 204); "></a><p class="title" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); margin-top: 10px; padding-top: 5px; font-weight: bold; "><b style="font-family: sans-serif; font-size: 14px; ">Example&nbsp;7.6.&nbsp;Overriding constraint definitions</b></p><pre class="programlisting" style="font-size: 100%; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); background-color: rgb(244, 244, 244); font-family: monospace; width: auto; ">&lt;constraint-mappings
        xmlns="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a>"
        xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>"
        xsi:schemaLocation="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a> validation-mapping-1.0.xsd">
   &lt;default-package>com.acme.app.domain&lt;/default-package>
   &lt;bean class="com.acme.common.model.Address">
       [...]
    &lt;/bean>

    &lt;constraint-definition annotation="javax.validation.constraint.Size">
        &lt;validated-by include-existing-validators="true">
            &lt;value>com.acme.app.constraint.SizeValidatorForDictionary&lt;/value>
        &lt;/validated-by>
    &lt;/constraint-definition>
    &lt;constraint-definition annotation="AcmeOrderNumber">
        [...]
    &lt;/constraint-definition>
&lt;/constraint-mappings></pre></div></div><div class="section" lang="en" style="font-family: sans-serif; font-size: 14px; "><div class="titlepage" style="font-family: sans-serif; font-size: 14px; "><div style="font-family: sans-serif; font-size: 14px; "><div style="font-family: sans-serif; font-size: 14px; "><h3 class="title" style="font-family: sans-serif; color: rgb(0, 51, 153); font-size: 120%; margin-top: 10px; padding-top: 5px; font-weight: bold; "><a name="xml-mapping-typeconversion" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 204); "></a>7.1.3.&nbsp;Converting the string representation of a value</h3></div></div><div style="font-family: sans-serif; font-size: 14px; "></div></div><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">Primitive types,&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">Class</tt>&nbsp;and&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">Enum</tt>&nbsp;are represented as strings in the XML descriptor. Elements of an array are represented by the&nbsp;<tt class="literal" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">value</tt>&nbsp;element.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">byte</tt>&nbsp;are represented according to the rules defined in&nbsp;<tt class="methodname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">Byte.parseByte(String)</tt>.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">short</tt>&nbsp;are represented according to the rules defined in&nbsp;<tt class="methodname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">Short.parseShort(String)</tt>.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">int</tt>&nbsp;are represented according to the rules defined in&nbsp;<tt class="methodname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">Integer.parseInt(String)</tt>.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">long</tt>&nbsp;are represented according to the rules defined in&nbsp;<tt class="methodname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">Long.parseLong(String)</tt>.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">float</tt>&nbsp;are represented according to the rules defined in&nbsp;<tt class="methodname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">Float.parseFloat(String)</tt>.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">double</tt>&nbsp;are represented according to the rules defined in&nbsp;<tt class="methodname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">Double.parseDouble(String)</tt>.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">boolean</tt>&nbsp;are represented according to the rules defined in&nbsp;<tt class="methodname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">Boolean.parseBoolean(String)</tt>.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">char</tt>&nbsp;are represented according to the following rules:</p><div class="itemizedlist" style="font-family: sans-serif; font-size: 14px; "><ul type="disc" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><li style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">the string must be of one character long</p></li><li style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); "><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">the character extracted from the string is the returned&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">char</tt></p></li></ul></div><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">A&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">Class</tt>&nbsp;is represented by the fully qualified class name of the class. Note that if the raw string is unqualified, default package is taken into account.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">An enum is represented by its&nbsp;<tt class="code" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">enum.name()</tt>&nbsp;value.</p><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">If any of the string representation does not match its type counterpart, a&nbsp;<tt class="classname" style="font-size: 100%; color: rgb(17, 17, 17); font-family: monospace; ">ConfigurationException</tt>&nbsp;is raised.</p></div><div class="section" lang="en" style="font-family: sans-serif; font-size: 14px; "><div class="titlepage" style="font-family: sans-serif; font-size: 14px; "><div style="font-family: sans-serif; font-size: 14px; "><div style="font-family: sans-serif; font-size: 14px; "><h3 class="title" style="font-family: sans-serif; color: rgb(0, 51, 153); font-size: 120%; margin-top: 10px; padding-top: 5px; font-weight: bold; "><a name="xml-mapping-xsd" style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 204); "></a>7.1.4.&nbsp;XML Schema</h3></div></div><div style="font-family: sans-serif; font-size: 14px; "></div></div><p style="font-family: sans-serif; font-size: 14px; color: rgb(0, 0, 0); ">This section contains the XML schema used for constraint mapping.</p><pre class="programlisting" style="font-size: 100%; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); background-color: rgb(244, 244, 244); font-family: monospace; width: auto; position: static; z-index: auto; ">&lt;?xml version="1.0" encoding="UTF-8"?>
&lt;xs:schema attributeFormDefault="unqualified"
           elementFormDefault="qualified"
           targetNamespace="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a>"
           xmlns:xs="<a href="http://www.w3.org/2001/XMLSchema">http://www.w3.org/2001/XMLSchema</a>"
           version="1.0">
    &lt;xs:element name="constraint-mappings"
                type="map:constraint-mappingsType"
                xmlns:map="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a>"/>

    &lt;xs:complexType name="groupsType">
        &lt;xs:sequence>
            &lt;xs:element type="xs:string" name="value" maxOccurs="unbounded" minOccurs="0"/>
        &lt;/xs:sequence>
    &lt;/xs:complexType>
    &lt;xs:complexType name="groupSequenceType">
        &lt;xs:sequence>
            &lt;xs:element type="xs:string" name="value" maxOccurs="unbounded" minOccurs="0"/>
        &lt;/xs:sequence>
    &lt;/xs:complexType>
    &lt;xs:complexType name="constraint-mappingsType">
        &lt;xs:sequence>
            &lt;xs:element type="xs:string" name="default-package" minOccurs="0"/>
            &lt;xs:element type="map:beanType"
                        name="bean"
                        maxOccurs="unbounded"
                        minOccurs="0"
                        xmlns:map="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a>"/>
            &lt;xs:element type="map:constraint-definitionType"
                        name="constraint-definition"
                        maxOccurs="unbounded"
                        minOccurs="0"
                        xmlns:map="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a>"/>
        &lt;/xs:sequence>
    &lt;/xs:complexType>
    &lt;xs:complexType name="validated-byType">
        &lt;xs:sequence>
            &lt;xs:element type="xs:string" name="value" maxOccurs="unbounded" minOccurs="0"/>
        &lt;/xs:sequence>
        &lt;xs:attribute type="xs:boolean" name="include-existing-validators" use="optional"/>
    &lt;/xs:complexType>
    &lt;xs:complexType name="constraintType">
        &lt;xs:sequence>
            &lt;xs:element type="xs:string" name="message" minOccurs="0"/>
            &lt;xs:element type="map:groupsType"
                        name="groups"
                        minOccurs="0"
                        xmlns:map="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a>"/>
            &lt;xs:element type="map:elementType"
                        name="element"
                        maxOccurs="unbounded"
                        minOccurs="0"
                        xmlns:map="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a>"/>
        &lt;/xs:sequence>
        &lt;xs:attribute type="xs:string" name="annotation" use="required"/>
    &lt;/xs:complexType>
    &lt;xs:complexType name="elementType" mixed="true">
        &lt;xs:sequence>
            &lt;xs:element type="xs:string" name="value" maxOccurs="unbounded" minOccurs="0"/>
            &lt;xs:element type="map:annotationType"
                        name="annotation"
                        maxOccurs="unbounded"
                        minOccurs="0"
                        xmlns:map="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a>"/>
        &lt;/xs:sequence>
        &lt;xs:attribute type="xs:string" name="name" use="required"/>
    &lt;/xs:complexType>
    &lt;xs:complexType name="classType">
        &lt;xs:sequence>
            &lt;xs:element type="groupSequenceType" name="group-sequence" minOccurs="0"/>
            &lt;xs:element type="xs:simpleType" name="stop-constraint-inheritance" fixed="" minOccurs="0"/>
            &lt;xs:element type="map:constraintType"
                        name="constraint"
                        maxOccurs="unbounded"
                        minOccurs="0"
                        xmlns:map="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a>"/>
        &lt;/xs:sequence>
        &lt;xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
    &lt;/xs:complexType>
    &lt;xs:complexType name="beanType">
        &lt;xs:sequence>
            &lt;xs:element type="map:classType"
                        name="class"
                        minOccurs="0"
                        xmlns:map="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a>">
            &lt;/xs:element>
            &lt;xs:element type="map:fieldType"
                        name="field"
                        minOccurs="0"
                        maxOccurs="unbounded"
                        xmlns:map="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a>"/>
            &lt;xs:element type="map:getterType"
                        name="getter"
                        minOccurs="0"
                        maxOccurs="unbounded"
                        xmlns:map="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a>"/>
        &lt;/xs:sequence>
        &lt;xs:attribute type="xs:string" name="class" use="required"/>
        &lt;xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
    &lt;/xs:complexType>
    &lt;xs:complexType name="annotationType">
        &lt;xs:sequence>
            &lt;xs:element type="map:elementType"
                        name="element"
                        maxOccurs="unbounded"
                        minOccurs="0"
                        xmlns:map="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a>"/>
        &lt;/xs:sequence>
    &lt;/xs:complexType>
    &lt;xs:complexType name="getterType">
        &lt;xs:sequence>
            &lt;xs:element type="xs:string" name="valid" minOccurs="0" fixed=""/>
            &lt;xs:element type="xs:string" name="stop-constraint-inheritance" minOccurs="0" fixed=""/>
            &lt;xs:element type="map:constraintType"
                        name="constraint"
                        minOccurs="0"
                        maxOccurs="unbounded"
                        xmlns:map="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a>"/>
        &lt;/xs:sequence>
        &lt;xs:attribute type="xs:string" name="name" use="required"/>
        &lt;xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
    &lt;/xs:complexType>
    &lt;xs:complexType name="constraint-definitionType">
        &lt;xs:sequence>
            &lt;xs:element type="map:validated-byType"
                        name="validated-by"
                        xmlns:map="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a>"/>
        &lt;/xs:sequence>
        &lt;xs:attribute type="xs:string" name="annotation" use="required"/>
    &lt;/xs:complexType>
    &lt;xs:complexType name="fieldType">
        &lt;xs:sequence>
            &lt;xs:element type="xs:string" name="valid" minOccurs="0" fixed=""/>
            &lt;xs:element type="xs:string" name="stop-constraint-inheritance" minOccurs="0" fixed=""/>
            &lt;xs:element type="map:constraintType"
                        name="constraint"
                        minOccurs="0"
                        maxOccurs="unbounded"
                        xmlns:map="<a href="http://jboss.org/xml/ns/javax/validation/mapping">http://jboss.org/xml/ns/javax/validation/mapping</a>"/>
        &lt;/xs:sequence>
        &lt;xs:attribute type="xs:string" name="name" use="required"/>
        &lt;xs:attribute type="xs:boolean" name="ignore-annotations" use="optional"/>
    &lt;/xs:complexType>
&lt;/xs:schema></pre></div></div></span></div><div><br></div><div><br></div><div><br></div><div></div></div><span></span></body></html>