<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.search">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.search" id="textSearchEngine" name="Text Search Engine"/>
      </appInfo>
      <documentation>
         The extension point allows to register a text search engine that is used to search for text in files of the workspace.
      </documentation>
   </annotation>

   <element name="extension">
      <complexType>
         <sequence>
            <element ref="textSearchEngine" minOccurs="1" maxOccurs="unbounded"/>
         </sequence>
         <attribute name="point" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="id" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="textSearchEngine">
      <complexType>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  Used to distinguish different search engines.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="label" type="string" use="required">
            <annotation>
               <documentation>
                  Used when search engine is presented in UI.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  The class implementing org.eclipse.search.core.text.TextSearchEngine.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.search.core.text.TextSearchEngine"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appInfo>
         <meta.section type="since"/>
      </appInfo>
      <documentation>
         3.2
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         As an example, here is the markup for suppling a search engine

&lt;p&gt;
&lt;pre&gt;
&lt;extension id=&quot;MyEngine&quot;
      point=&quot;org.eclipse.search.textSearchEngine&quot;&gt;
   &lt;textSearchEngine
         id=&quot;com.windriver.textSearchEngine&quot;
         label=&quot;Wind River Search&quot;
         class=&quot;com.windriver.text.SearchEngine&quot; /&gt;
&lt;/extension&gt;
&lt;/pre&gt;
&lt;/p&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="apiInfo"/>
      </appInfo>
      <documentation>
         The contributed class must implement &lt;code&gt;org.eclipse.search.core.text.TextSearchEngine&lt;/code&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="implementation"/>
      </appInfo>
      <documentation>
         
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         Copyright (c) 2006 Wind River Systems and others.
 All rights reserved. This program and the accompanying materials 
 are made available under the terms of the Eclipse Public License v1.0 
 which accompanies this distribution, and is available at &lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
      </documentation>
   </annotation>

</schema>
