<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.wst.validation" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.wst.validation" id="validator" name="Validator"/>
      </appInfo>
      <documentation>
         This extension point give the ability to create a new validator that can validate resources in a Java Project. The validator needs to registered for a given nature of the project for it to run on that project. The user can specifiy file filters to filter out files that need to be validated. The new validator registered by the project nature on the project can be run manually or incrementally if  Auto Build is turned on, during incremental builds the changed delta of files are only validated if those files are part of the validation filters specified.
      </documentation>
   </annotation>

   <include schemaLocation="schema://org.eclipse.core.expressions/schema/expressionLanguage.exsd"/>

   <element name="extension">
      <annotation>
         <appInfo>
            <meta.element />
         </appInfo>
      </annotation>
      <complexType>
         <sequence>
            <element ref="validator"/>
         </sequence>
         <attribute name="point" type="string" use="required">
            <annotation>
               <documentation>
                  A fully qualified identifier of the target extension point
               </documentation>
            </annotation>
         </attribute>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  An optional identifier of the extension instance
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  An optional name of the extension instance
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="validator">
      <complexType>
         <sequence>
            <element ref="projectNature" minOccurs="0" maxOccurs="unbounded"/>
            <element ref="filter" minOccurs="0" maxOccurs="unbounded"/>
            <element ref="enablement" minOccurs="0" maxOccurs="unbounded"/>
            <element ref="helper"/>
            <element ref="dependentValidator" minOccurs="0" maxOccurs="1"/>
            <element ref="run"/>
            <element ref="markerId" minOccurs="0" maxOccurs="1"/>
            <element ref="facet" minOccurs="0" maxOccurs="unbounded"/>
            <element ref="contentTypeBinding" minOccurs="0" maxOccurs="unbounded"/>
            <element ref="runStrategy"/>
         </sequence>
         <attribute name="to" type="string">
            <annotation>
               <documentation>
                  Optional migration tag
               </documentation>
            </annotation>
         </attribute>
         <attribute name="from" type="string">
            <annotation>
               <documentation>
                  Optional migration tag
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="projectNature">
      <complexType>
         <sequence>
         </sequence>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="include" type="boolean">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="contentTypeBinding">
      <annotation>
         <appInfo>
            <meta.element labelAttribute="contentTypeId"/>
         </appInfo>
         <documentation>
            Associates a particular content type with the current validator, and enables the validator to be run on resources of the specified content type.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="contentTypeId" type="string" use="required">
            <annotation>
               <documentation>
                  The content type identifier. This is an ID defined by the &apos;org.eclipse.core.runtime.contentTypes&apos; extension point.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="filter">
      <complexType>
         <attribute name="objectClass" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="nameFilter" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="caseSensitive" type="boolean">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="action" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="helper">
      <complexType>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="dependentValidator">
      <complexType>
         <attribute name="depValValue" type="boolean">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="run">
      <complexType>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="incremental" type="boolean">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="enabled" type="boolean">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="fullBuild" type="boolean">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="async" type="boolean">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="markerId">
      <annotation>
         <documentation>
            The markerId element is is used to get a custom problem marker for the custom validator implemented using this extension point

This markerId element also needs a corresponding problemMarker extension to be defined bythis validator with the same Id as the makerIdValue for the validator to have its own marker type. Here is an example of the a problemMarker extension defined for a markerIdValue &quot;FooMarker&quot;

 &lt;extension
         id=&quot;FooMarker&quot;
         name=&quot;%EJB_VALIDATION_PROBLEMMARKER_NAME&quot;
         point=&quot;org.eclipse.core.resources.markers&quot;&gt;
      &lt;super
            type=&quot;org.eclipse.wst.validation.problemmarker&quot;&gt;
      &lt;/super&gt;
      &lt;persistent
            value=&quot;true&quot;&gt;
      &lt;/persistent&gt;
      &lt;attribute
            name=&quot;owner&quot;&gt;
      &lt;/attribute&gt;
      &lt;attribute
            name=&quot;validationSeverity&quot;&gt;
      &lt;/attribute&gt;
      &lt;attribute
            name=&quot;targetObject&quot;&gt;
      &lt;/attribute&gt;
      &lt;attribute
            name=&quot;groupName&quot;&gt;
      &lt;/attribute&gt;
      &lt;attribute
            name=&quot;messageId&quot;&gt;
      &lt;/attribute&gt;
   &lt;/extension&gt;
   
   Without a problemMarker extension defined, the customer validator will use the base Validation Message problemMarker type.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="markerIdValue" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="facet">
      <annotation>
         <appInfo>
            <meta.element deprecated="true"/>
         </appInfo>
         <documentation>
            This element is deprecated and enablement is the new recommended approach to filter validators based on facets.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="facetId" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="runStrategy">
      <complexType>
         <attribute name="project" type="boolean">
            <annotation>
               <documentation>
                  If true then the validator is only called once per project. If false (or missing) then the validator could be called once per resource (based on the other filter rules).
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>


   <annotation>
      <appInfo>
         <meta.section type="since"/>
      </appInfo>
      <documentation>
         &lt;b&gt;This extension point is part of an interim API that is still under development and expected to change significantly before reaching stability. It is being made available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.&lt;/b&gt;
      </documentation>
   </annotation>



   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         Copyright (c) 2005, 2010 IBM Corporation and others.&lt;br&gt;
All rights reserved. This program and the accompanying materials are made 
available under the terms of the Eclipse Public License v2.0 which accompanies 
this distribution, and is available at &lt;a
href=&quot;https://www.eclipse.org/legal/epl-2.0/
&quot;&gt;https://www.eclipse.org/legal/epl-2.0/
&lt;/a&gt;
      </documentation>
   </annotation>

</schema>
