<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.ant.core">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.ant.core" id="antProperties" name="Ant Properties"/>
      </appInfo>
      <documentation>
         Allows plug-ins to define Ant properties for use in Ant build files.
      </documentation>
   </annotation>

   <element name="extension">
      <complexType>
         <sequence>
            <element ref="antProperty" minOccurs="0" maxOccurs="unbounded"/>
         </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">
            <annotation>
               <documentation>
                  an optional identifier of the extension instance
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  an optional name of the extension instance
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="antProperty">
      <annotation>
         <appInfo>
            <meta.element labelAttribute="name"/>
         </appInfo>
      </annotation>
      <complexType>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  The name of the property.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="value" type="string">
            <annotation>
               <documentation>
                  The value of the property.
                  If a value is provided here, the &quot;class&quot; attribute is ignored.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="class" type="string">
            <annotation>
               <documentation>
                  If there is no &apos;value&apos; attribute provided, this class is called to return the dynamic value for the Ant property.  If null is returned, the value is not set.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.ant.core.IAntPropertyProvider"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="headless" type="string">
            <annotation>
               <documentation>
                  indicates whether this property is suitable for use in a &quot;headless&quot; Ant environment. If running headless and the attribute is &quot;false&quot;, 
                  the property will not be set and any specified &lt;samp&gt;org.eclipse.ant.core.IAntPropertyProvider&lt;/samp&gt; will not be instantiated.
                  The implied value is true, when not specified.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="eclipseRuntime" type="string">
            <annotation>
               <documentation>
                  indicates whether this property should only be considered when run in the same VM as Eclipse. The implied value is true, when not specified.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appInfo>
         <meta.section type="since"/>
      </appInfo>
      <documentation>
         3.0
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         The following is an example of an Ant properties extension point: 
&lt;p&gt;
&lt;pre&gt;
   &lt;extension point=&quot;org.eclipse.ant.core.antProperties&quot;&gt;
      &lt;antProperty name=&quot;eclipse.home&quot;
           class=&quot;org.eclipse.ant.internal.core.AntPropertyValueProvider&quot;/&gt;
      &lt;antProperty name=&quot;eclipse.running&quot;
           value=&quot;true&quot;/&gt;
   &lt;/extension&gt; 
&lt;/pre&gt;
&lt;/p&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="apiInfo"/>
      </appInfo>
      <documentation>
         The class named in the &lt;samp&gt;class&lt;/samp&gt; property must implement the &lt;samp&gt;org.eclipse.ant.core.IAntPropertyProvider&lt;/samp&gt; interface.
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="implementation"/>
      </appInfo>
      <documentation>
         The platform uses this mechanism to set the Ant property eclipse.home to the Eclipse installation directory and to set the eclipse.running property.
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         &lt;a href=&quot;hglegal.htm&quot;&gt;&lt;img SRC=&quot;ngibmcpy.gif&quot; ALT=&quot;Copyright IBM Corp. 2003.  All Rights Reserved.&quot; BORDER=0 height=12 width=195&gt;&lt;/a&gt;
      </documentation>
   </annotation>

</schema>
