<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.wst.common.project.facet.core" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.wst.common.project.facet.core" id="groups" name="Project Facet Groups Extension Point"/>
      </appInfo>
      <documentation>
         A group is a collection of project facets that&apos;s used to provide a level of indirection between facets. For instance, instead of specifying a dependency on a specific facet or a list of facets, a facet can specify a dependency on a group. Facets can join or leave the group as requirements change without directly impacting the facet that is specifying the dependency.
      </documentation>
   </annotation>

   <element name="extension">
      <annotation>
         <appInfo>
            <meta.element />
         </appInfo>
      </annotation>
      <complexType>
         <choice minOccurs="0" maxOccurs="unbounded">
            <element ref="group"/>
            <element ref="members"/>
         </choice>
         <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>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="group">
      <annotation>
         <documentation>
            Defines a project facet group.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="label"/>
            <element ref="description" minOccurs="0" maxOccurs="1"/>
            <element ref="include" minOccurs="0" maxOccurs="unbounded"/>
         </sequence>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  Group identifier.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="label" type="string">
      <annotation>
         <documentation>
            The localizable name that is presented to the user. If not specified, the id will be used for a label.
         </documentation>
      </annotation>
   </element>

   <element name="description" type="string">
      <annotation>
         <documentation>
            The description text.
         </documentation>
      </annotation>
   </element>

   <element name="include">
      <annotation>
         <documentation>
            Specifies that one or more version of the facet should be included in the group.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="facet" type="string" use="required">
            <annotation>
               <documentation>
                  The facet id.
               </documentation>
               <appInfo>
                  <meta.attribute kind="identifier" basedOn="org.eclipse.wst.common.project.facet.core.facets/project-facet/@id"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="versions" type="string">
            <annotation>
               <documentation>
                  Specifies the match expression for the facet version. The expression should be of the form &quot;2.2,2.5,[3.0-5.3],(7.3&quot;, where the comas function as an OR. Brackets and parenthesis are used as part of the range notation. A bracket means inclusive while a parenthesis means exclusive.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="members">
      <annotation>
         <documentation>
            Used by third-partys to enlist facets into a group.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="include" minOccurs="0" maxOccurs="unbounded"/>
         </sequence>
         <attribute name="group" type="string" use="required">
            <annotation>
               <documentation>
                  The group id.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>


   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         &lt;p&gt;The following example illustrates creation of a group and various ways that facets can join the group.&lt;/p&gt;

&lt;pre&gt;&lt;extension point=&quot;org.eclipse.wst.common.project.facet.core.groups&quot;&gt;

  &lt;!-- 
    Groups do not have to be explicitly defined. They come into existence when the
    first member is added, however explicit definition is recommended as that&apos;s the
    only way to specify a label and a description for the group. You can also 
    enlist facets into the group as part of that group&apos;s definition.
  --&gt;
  
  &lt;group id=&quot;gr&quot;&gt;
    &lt;label&gt;Test Group&lt;/label&gt;
    &lt;description&gt;Test group of facets.&lt;/description&gt;
    &lt;include facet=&quot;a&quot;/&gt;
    &lt;include facet=&quot;b&quot; versions=&quot;1.2&quot;/&gt;
    &lt;include facet=&quot;c&quot; versions=&quot;[1.3-2.0)&quot;/&gt;
  &lt;/group&gt;
  
  &lt;!--
    This is the most flexible way of enlisting facets into the group. This
    declaration can be made by a third party that is neither the facet author
    nor the group creator.
  --&gt;
  
  &lt;members group=&quot;gr&quot;&gt;
    &lt;include facet=&quot;d&quot; versions=&quot;2.3,2.4,2.7&quot;/&gt;
    &lt;include facet=&quot;e&quot;/&gt;
  &lt;/members&gt;
  
&lt;/extension&gt;

&lt;!-- Facet can be enlisted into one or more group as part of facet definition. --&gt;

&lt;extension point=&quot;org.eclipse.wst.common.project.facet.core.facets&quot;&gt;
  &lt;project-facet id=&quot;f&quot;&gt;
    ...
  &lt;/project-facet&gt;
  &lt;project-facet-version facet=&quot;f&quot; version=&quot;1.0&quot;&gt;
    ...
    &lt;group-member id=&quot;gr&quot;/&gt;
    ...
  &lt;/project-facet-version&gt;
&lt;/extension&gt;&lt;/pre&gt;
      </documentation>
   </annotation>



   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         Copyright (c) 2010 Oracle 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 v1.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>
