<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.wst.sse.ui" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.wst.sse.ui" id="commentingStrategy" name="Commenting Strategy"/>
      </appInfo>
      <documentation>
         This extension point allows the contribution of commenting strategy&apos;s to participate in the commenting actions, such as adding and removing commenting blocks and toggling line comments.
      </documentation>
   </annotation>

   <element name="extension">
      <annotation>
         <appInfo>
            <meta.element />
         </appInfo>
      </annotation>
      <complexType>
         <sequence>
            <choice minOccurs="1" maxOccurs="unbounded">
               <element ref="blockCommentingStrategy" minOccurs="0" maxOccurs="unbounded"/>
               <element ref="lineCommentingStrategy" minOccurs="0" maxOccurs="unbounded"/>
            </choice>
         </sequence>
         <attribute name="point" type="string" use="required">
            <annotation>
               <documentation>
                  
               </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>
                  
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="blockCommentingStrategy">
      <annotation>
         <documentation>
            Defines a block commenting strategy
         </documentation>
      </annotation>
      <complexType>
         <sequence minOccurs="1" maxOccurs="unbounded">
            <element ref="contentType"/>
         </sequence>
         <attribute name="prefix" type="string" use="required">
            <annotation>
               <documentation>
                  The prefix of the block comment this strategy impliments
               </documentation>
            </annotation>
         </attribute>
         <attribute name="suffix" type="string" use="required">
            <annotation>
               <documentation>
                  The suffix of the block comment this strategy impliments
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="lineCommentingStrategy">
      <annotation>
         <documentation>
            Deefines a line commenting strategy
         </documentation>
      </annotation>
      <complexType>
         <sequence minOccurs="1" maxOccurs="unbounded">
            <element ref="contentType"/>
         </sequence>
         <attribute name="prefix" type="string" use="required">
            <annotation>
               <documentation>
                  The prefix of the block comment this strategy impliments
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="contentType">
      <annotation>
         <documentation>
            A content type that the strategy is applicable for
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <choice>
               <element ref="requiredPartitionTypes"/>
               <element ref="allowablePartitionTypes"/>
               <sequence>
                  <element ref="requiredPartitionTypes"/>
                  <element ref="allowablePartitionTypes"/>
               </sequence>
            </choice>
         </sequence>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  The ID of the content type
               </documentation>
               <appInfo>
                  <meta.attribute kind="identifier" basedOn="org.eclipse.core.contenttype.contentTypes/content-type/@id"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="associatedCommentPartitionTypeID" type="string">
            <annotation>
               <documentation>
                  The partition type ID of the comment partition that is associated with the strategy in this content type
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="requiredPartitionTypes">
      <annotation>
         <documentation>
            List of partition types in the associated content type that are requried for the strategy to be applicable.  Only one of these partition types must be present in a selection for the strategy to be applicable.
         </documentation>
      </annotation>
      <complexType>
         <sequence minOccurs="1" maxOccurs="unbounded">
            <element ref="partitionType"/>
         </sequence>
      </complexType>
   </element>

   <element name="allowablePartitionTypes">
      <annotation>
         <documentation>
            The partition types that are allowed in a user selection for the strategy to be valid.  It is assumed that any partition types listed in the &lt;code&gt;requiredPartitionTypes&lt;/code&gt; are also allowable.  This list is ignored if the value of &lt;code&gt;anyPartitionType&lt;/code&gt; is &lt;code&gt;true&lt;/code&gt;.  If this list is not provided then it is assumed the value of &lt;code&gt;anyPartitionType&lt;/code&gt; is false.
         </documentation>
      </annotation>
      <complexType>
         <sequence minOccurs="0" maxOccurs="unbounded">
            <element ref="partitionType"/>
         </sequence>
         <attribute name="anyPartitionType" type="boolean" use="default" value="false">
            <annotation>
               <documentation>
                  If &lt;code&gt;true&lt;/code&gt; then the strategy is valid for any partition type in the associated &lt;code&gt;contentType&lt;/code&gt;, this means that any &lt;code&gt;partionType&lt;/code&gt;s listed here would be ignored.  If &lt;code&gt;false&lt;/code&gt; then only the &lt;code&gt;partitionType&lt;/code&gt;s listed here are allowed in a user selection (allong with any specified requried partition types) for the strategy to be valid.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="partitionType">
      <annotation>
         <documentation>
            A partition type associated with the parenting content type
         </documentation>
      </annotation>
      <complexType>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  The ID of the partition type.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>


   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         &lt;p&gt;&lt;b&gt;Example 1:&lt;/b&gt; A simple example for block comments on XML documents&lt;/p&gt;&lt;pre&gt;&lt;extension point=&quot;org.eclipse.wst.sse.ui.commentingStrategy&quot;&gt;
  &lt;blockCommentingStrategy
      prefix=&quot;&amp;lt;!--&quot;
      suffix=&quot;--&amp;gt;&quot;&gt;
    &lt;contentType
        id=&quot;org.eclipse.core.runtime.xml&quot;
        associatedCommentPartitionTypeID=&quot;org.eclipse.wst.xml.XML_COMMENT&quot;&gt;
      &lt;allowablePartitionTypes
          anyPartitionType=&quot;true&quot;&gt;
      &lt;/allowablePartitionTypes&gt;
    &lt;/contentType&gt;
  &lt;/blockCommentingStrategy&gt;
&lt;/extension&gt;&lt;/pre&gt;

&lt;p&gt;&lt;b&gt;Example 2:&lt;/b&gt; A more complex example for adding CSS comenting to both CSS and HTML documents&lt;/p&gt;&lt;pre&gt;&lt;extension point=&quot;org.eclipse.wst.sse.ui.commentingStrategy&quot;&gt;
  &lt;blockCommentingStrategy
      prefix=&quot;/*&quot;
      suffix=&quot;*/&quot;&gt;
    &lt;contentType
        associatedCommentPartitionTypeID=&quot;org.eclipse.wst.css.COMMENT&quot;
        id=&quot;org.eclipse.wst.css.core.csssource&quot;&gt;
      &lt;allowablePartitionTypes
          anyPartitionType=&quot;true&quot;&gt;
      &lt;/allowablePartitionTypes&gt;
    &lt;/contentType&gt;
    &lt;contentType
        id=&quot;org.eclipse.wst.html.core.htmlsource&quot;&gt;
      &lt;allowablePartitionTypes
          anyPartitionType=&quot;false&quot;&gt;
      &lt;/allowablePartitionTypes&gt;
      &lt;requiredPartitionTypes
          requireAll=&quot;true&quot;&gt;
        &lt;partitionType
            id=&quot;org.eclipse.wst.css.STYLE&quot;&gt;
        &lt;/partitionType&gt;
      &lt;/requiredPartitionTypes&gt;
    &lt;/contentType&gt;
  &lt;/blockCommentingStrategy&gt;
&lt;/extension&gt;&lt;/pre&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="apiinfo"/>
      </appInfo>
      <documentation>
         The user of this extension point does not need to impliment any classes themselves but for their contributions to work in any given content type then the following handlers must be registered for the content type in question by using the &lt;code&gt;org.eclipse.ui.handlers&lt;/code&gt; extension point.
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;org.eclipse.wst.sse.ui.handlers.AddBlockCommentHandler&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;org.eclipse.wst.sse.ui.handlers.RemoveBlockCommentHandler&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;org.eclipse.wst.sse.ui.handlers.ToggleLineCommentHandler&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
      </documentation>
   </annotation>


   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         Copyright (c) 2010 IBM Corporation and others.
All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.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>
