<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.tracecompass.tmf.analysis.xml.core" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
      <appinfo>
         <meta.schema plugin="org.eclipse.tracecompass.tmf.analysis.xml.core" id="org.eclipse.tracecompass.tmf.analysis.xml.core.xsd" name="%extensionpoint.xsd.name"/>
      </appinfo>
      <documentation>
         This extension point allows other plugins to add XSD files that will allow to extend the XML functionnalities
      </documentation>
   </annotation>

   <element name="extension">
      <annotation>
         <appinfo>
            <meta.element />
         </appinfo>
      </annotation>
      <complexType>
         <sequence>
            <element ref="xsdfile" minOccurs="1" maxOccurs="unbounded"/>
            <element ref="schemaParser" minOccurs="1" 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>
               <appinfo>
                  <meta.attribute translatable="true"/>
               </appinfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="xsdfile">
      <complexType>
         <attribute name="file" type="string" use="required">
            <annotation>
               <documentation>
                  The path to the XSD file that contains the additional schema information for user-defined analyses
               </documentation>
               <appinfo>
                  <meta.attribute kind="resource"/>
               </appinfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="schemaParser">
      <complexType>
         <attribute name="class" type="string">
            <annotation>
               <documentation>
                  The class that contains the extra schema parsing information.
               </documentation>
               <appinfo>
                  <meta.attribute kind="java" basedOn=":org.eclipse.tracecompass.internal.tmf.analysis.xml.core.module.ITmfXmlSchemaParser"/>
               </appinfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appinfo>
         <meta.section type="since"/>
      </appinfo>
      <documentation>
         2.1
      </documentation>
   </annotation>

   <annotation>
      <appinfo>
         <meta.section type="examples"/>
      </appinfo>
      <documentation>
         &lt;p&gt;
The XSD file path is relative to the plugin&apos;s root directory. Here is an example where a plugin adds an XSD file named &apos;extension.xsd&apos; located in the &apos;test_xml_files&apos; directory.
&lt;/p&gt;

&lt;extension
      point=&quot;org.eclipse.tracecompass.tmf.analysis.xml.core.xsd&quot;&gt;
    &lt;xsdfile
         file=&quot;test_xml_files/extension.xsd&quot;&gt;
    &lt;/xmlfile&gt;
&lt;/extension&gt;

&lt;p&gt;
The base XSD file has some extension possibilities. There is an &quot;extra&quot; element that can be used as a base to add a new one. The following XSD file adds a new element type to the schema
&lt;/p&gt;

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;
&lt;xs:schema xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot;
 attributeFormDefault=&quot;unqualified&quot; elementFormDefault=&quot;qualified&quot;&gt;

 &lt;xs:element name=&quot;my&quot; substitutionGroup=&quot;extra&quot; type=&quot;myType&quot;/&gt;
 &lt;xs:element name=&quot;abc&quot; substitutionGroup=&quot;extra&quot; type=&quot;myType&quot;/&gt;

 &lt;xs:complexType name=&quot;myType&quot;&gt;
  &lt;xs:complexContent&gt;
   &lt;xs:extension base=&quot;extraType&quot;&gt;
    &lt;xs:sequence&gt;
     &lt;xs:element maxOccurs=&quot;unbounded&quot; minOccurs=&quot;0&quot; name=&quot;mySubElement&quot; type=&quot;xs:string&quot; /&gt;
    &lt;/xs:sequence&gt;
    &lt;xs:attribute name=&quot;name&quot; type=&quot;xs:string&quot; use=&quot;optional&quot; /&gt;
   &lt;/xs:extension&gt;
  &lt;/xs:complexContent&gt;
 &lt;/xs:complexType&gt;

&lt;/xs:schema&gt;
      </documentation>
   </annotation>

   <annotation>
      <appinfo>
         <meta.section type="apiinfo"/>
      </appinfo>
      <documentation>
         &lt;p&gt;
The XSD file advertised by this extension point should be a valid XSD files. A failure in the XSD may cause some XML files to be impossible to read.
&lt;/p&gt;
      </documentation>
   </annotation>


   <annotation>
      <appinfo>
         <meta.section type="copyright"/>
      </appinfo>
      <documentation>
         Copyright (c) 2017 École Polytechnique de Montréal

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 &amp;lt;a href=&amp;quot;https://www.eclipse.org/legal/epl-2.0/&amp;quot;&amp;gt;https://www.eclipse.org/legal/epl-2.0/&amp;lt;/a&amp;gt;

SPDX-License-Identifier: EPL-2.0
      </documentation>
   </annotation>

</schema>
