<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="com.ssaglobal.generator">
<annotation>
      <appInfo>
         <meta.schema plugin="com.ssaglobal.generator" id="templatepackage" name="Template Package"/>
      </appInfo>
      <documentation>
         Define a group of templates that can be processed against an EMF model.
      </documentation>
   </annotation>

   <element name="extension">
      <complexType>
         <sequence>
            <element ref="Base"/>
            <element ref="Template" minOccurs="1" maxOccurs="unbounded"/>
            <element ref="Helper" minOccurs="0" maxOccurs="unbounded"/>
            <element ref="Property" minOccurs="0" maxOccurs="unbounded"/>
            <element ref="PrebuildScript" minOccurs="0" maxOccurs="1"/>
            <element ref="BuildScript" minOccurs="0" maxOccurs="1"/>
         </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>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="Template">
      <annotation>
         <documentation>
            Defines a template to be processed by the generator.
&lt;p&gt;
Each template is actually a pair of templates - one provides the name of the file generated by the template, and the other provides the contents of the file.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="Condition" minOccurs="0" maxOccurs="1"/>
         </sequence>
         <attribute name="engine" use="default" value="FreeMarker">
            <annotation>
               <documentation>
                  Identifies the template engine that will process the template - choices are FreeMarker, Jamon, and StringTemplate.
&lt;p&gt;
Please select FreeMarker - the Jamon and StringTemplate integrations haven&apos;t been updated to allow reading the templates from the plugin resources.
               </documentation>
            </annotation>
            <simpleType>
               <restriction base="string">
                  <enumeration value="FreeMarker">
                  </enumeration>
               </restriction>
            </simpleType>
         </attribute>
         <attribute name="template" type="string" use="required">
            <annotation>
               <documentation>
                  Path to the template file that will generate the content of the generated file.
&lt;p&gt;
The path is relative to the templateRoot attribute of the Base element.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="nameTemplate" type="string" use="required">
            <annotation>
               <documentation>
                  Path to the template file that will generate the name of the generated file.
&lt;p&gt;
The path is relative to the templateRoot attribute of the Base element.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="writer">
            <annotation>
               <documentation>
                  Select the TemplateWriter that should be used to process the template output.
&lt;p&gt;
The only writer currently implemented is PDF.  To use it, the template identified by the template attribute must produce an XSL:FO (XSL Formatting Objects) document.  The PDF writer transforms the XSL:FO document into a PDF file.
&lt;p&gt;
Note that when using the PDF writer the nameTemplate attribute should generate the name of the .pdf file, e.g., documentation.pdf.
               </documentation>
            </annotation>
            <simpleType>
               <restriction base="string">
                  <enumeration value="none">
                  </enumeration>
                  <enumeration value="PDF">
                  </enumeration>
               </restriction>
            </simpleType>
         </attribute>
         <attribute name="mergeClass" type="string">
            <annotation>
               <documentation>
                  Fully-qualified name of a Java class that will be used to merge the template output with an existing file of the same name.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="appliesToClass" type="string" use="required">
            <annotation>
               <documentation>
                  Fully-qualified name of the Java class that the template processes.
&lt;p&gt;
The class must be an EMF model object, i.e., it must implement &lt;code&gt;org.eclipse.emf.ecore.EObject&lt;/code&gt;.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.emf.ecore.EObject"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="appliesToSubclasses" type="boolean" use="default" value="true">
            <annotation>
               <documentation>
                  Indicates whether the template applies to subclasses of the class (or interface) identified by the &lt;code&gt;appliesToClass&lt;/code&gt; attribute.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="Base">
      <complexType>
         <attribute name="templateRoot" type="string" use="required">
            <annotation>
               <documentation>
                  Path (relative to the template package plugin) to the folder containing the template files.
&lt;p&gt;
Note that you must include the template folder in the binary build of your template package plugin.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="outputRoot" type="string" use="required">
            <annotation>
               <documentation>
                  Local file system path to the folder that will receive the generated files.
&lt;p&gt;
Note that this is a default value for your plugin.  It can be overridden at runtime in the generator&apos;s project settings.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="helppluginid" type="string">
            <annotation>
               <documentation>
                  pluginid which contains the help
If no helppluginid is specified, then the help must be in the same plugin as the template
               </documentation>
            </annotation>
         </attribute>
         <attribute name="helpid" type="string">
            <annotation>
               <documentation>
                  helpid which is used if for properties no specific helpid is defined
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="Helper">
      <annotation>
         <documentation>
            Defines a helper class that will be used to information to the template(s) that is not directly available from the EMF model.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  Name by which the helper class will be referenced in the template.  
&lt;p&gt;
For example, if name is &quot;properties&quot;, the className attribute of the helper class can be referenced with ${properties.className} in a FreeMarker template.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="helperClass" type="string" use="required">
            <annotation>
               <documentation>
                  Fully-qualified class name of the helper class, e.g., com.ssaglobal.generator.helper.PropertiesHelper.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="appliesToClass" type="string" use="required">
            <annotation>
               <documentation>
                  Fully-qualfied name of Java class (or interface) that the helper class is used with.  For example, org.eclipse.emf.ecore.impl.EObjectImpl.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.emf.ecore.EObject"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="appliesToSubclasses" type="boolean" use="default" value="true">
            <annotation>
               <documentation>
                  Indicates whether the helper class is used with subclasses of &lt;code&gt;appliesToClass&lt;/code&gt;.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="Property">
      <annotation>
         <documentation>
            Defines a property that can be referenced in templates.  The property value can be overridden at generation time using the project settings.
&lt;p&gt;
To make the properties available to templates in the package, the template package must include a Helper element with the following settings.
&lt;dl&gt;
&lt;dt&gt;helperClass&lt;/dt&gt;&lt;dd&gt;com.ssaglobal.generator.helper.PropertiesHelper&lt;/dd&gt;
&lt;dt&gt;appliesToClass&lt;/dt&gt;&lt;dd&gt;org.eclipse.emf.ecore.impl.EObjectImpl&lt;/dd&gt;
&lt;dt&gt;appliesToSubclasses&lt;/dt&gt;&lt;dd&gt;true&lt;/dd&gt;
&lt;/dl&gt;
         </documentation>
      </annotation>
      <complexType>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  Property name.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="description" type="string">
            <annotation>
               <documentation>
                  Property description.
&lt;p&gt;
Description show on preference and property pages
               </documentation>
            </annotation>
         </attribute>
         <attribute name="value" type="string">
            <annotation>
               <documentation>
                  Property value.
&lt;p&gt;
The value specified in the extension point is the default value for the property.  Generator users can use the SSA Global Generator-&gt;Project settings... command to override the value at generation time.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="helpid" type="string">
            <annotation>
               <documentation>
                  Help topic ID
&lt;p&gt;
The ID of the helptopic in the context xml file. This file should be linked to extension point org.eclipse.help.contexts.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="BuildScript">
      <annotation>
         <documentation>
            The BuildScript element defines an Ant build script that will be executed automatically after the templates have been processed.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  The path to the build.xml file, e.g., build/build.xml.
&lt;p&gt;
If the generated attribute is true, the path is relative to the outputRoot folder (see Base.outputRoot), and the build script should be generated by a template in the package.  Otherwise, the path is relative to the plugin - don&apos;t forget to include the build script in the template package&apos;s binary build.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="generated" type="boolean" use="default" value="false">
            <annotation>
               <documentation>
                  Indicates whether the build script (build.xml) is generated by a template in the package.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="PrebuildScript">
      <annotation>
         <documentation>
            The BuildScript element defines an Ant build script that will be executed automatically after the templates have been processed.
         </documentation>
      </annotation>
      <complexType>
         <sequence>
            <element ref="Template" minOccurs="0" maxOccurs="1"/>
         </sequence>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  The path to the build.xml file, e.g., build/build.xml.
&lt;p&gt;
If the generated attribute is true, the path is relative to the outputRoot folder (see Base.outputRoot), and the build script should be generated by a template in the package.  Otherwise, the path is relative to the plugin - don&apos;t forget to include the build script in the template package&apos;s binary build.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="generated" type="boolean" use="default" value="false">
            <annotation>
               <documentation>
                  Indicates whether the build script (build.xml) is generated by a template in the package.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="Condition">
      <complexType>
         <attribute name="propertyName" type="string" use="required">
            <annotation>
               <documentation>
                  Name of the property to test.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="propertyValue" type="string" use="required">
            <annotation>
               <documentation>
                  Value to test for.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="helperName" type="string">
            <annotation>
               <documentation>
                  Logical name of the helper that exposes the property.
&lt;p&gt;
This attribute is used only if the property is not exposed directly by the EObject that the template is to process. It must correspond to the name attribute of a Helper that applies to the EObject processed by the template.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="BuildClass">
      <complexType>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  PostBuild class is optional.
It is called after all templates are executed, but before the buildscripts is executed.
If an error is logged or an Exception is thrown, then the build script will not be executed.
The BuildClass can act based on an ArrayList with instances of java.io.File
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="com.ssaglobal.generator.IPostBuild"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

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

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         The following is an example of a template package extension point:

   &lt;extension
         id=&quot;ErpLx83Package&quot;
         name=&quot;ERP LX 8.3 Template Package&quot;
         point=&quot;com.ssaglobal.generator.templatepackage&quot;&gt;
      &lt;Base
            outputRoot=&quot;\generator\output\erplx83&quot;
            templateRoot=&quot;templates&quot;/&gt;
      &lt;Template
            template=&quot;component.c.ftl&quot;
            nameTemplate=&quot;component.c.name.ftl&quot;
            appliesToClass=&quot;com.ssaglobal.istudio.core.model.bii.impl.ComponentImplementationImpl&quot;
            appliesToSubclasses=&quot;true&quot;
            engine=&quot;FreeMarker&quot;
            writer=&quot;none&quot;/&gt;
      &lt;Template
            template=&quot;component.h.ftl&quot;
            nameTemplate=&quot;component.h.name.ftl&quot;
            appliesToClass=&quot;com.ssaglobal.istudio.core.model.bii.impl.ComponentImplementationImpl&quot;
            appliesToSubclasses=&quot;true&quot;
            engine=&quot;FreeMarker&quot;
            writer=&quot;none&quot;/&gt;
      &lt;Template
            template=&quot;componentParmStruct.h.ftl&quot;
            nameTemplate=&quot;componentParmStruct.h.name.ftl&quot;
            appliesToClass=&quot;com.ssaglobal.istudio.core.model.bii.impl.ComponentImplementationImpl&quot;
            appliesToSubclasses=&quot;true&quot;
            engine=&quot;FreeMarker&quot;
            writer=&quot;none&quot;/&gt;
      &lt;Template
            template=&quot;componentStruct.h.ftl&quot;
            nameTemplate=&quot;componentStruct.h.name.ftl&quot;
            appliesToClass=&quot;com.ssaglobal.istudio.core.model.bii.impl.ComponentImplementationImpl&quot;
            appliesToSubclasses=&quot;true&quot;
            engine=&quot;FreeMarker&quot;
            writer=&quot;none&quot;/&gt;
      &lt;Template
            template=&quot;crossref.xml.ftl&quot;
            nameTemplate=&quot;crossref.xml.name.ftl&quot;
            appliesToClass=&quot;com.ssaglobal.istudio.core.model.bii.impl.BusinessInterfaceImplementationImpl&quot;
            appliesToSubclasses=&quot;true&quot;
            engine=&quot;FreeMarker&quot;
            writer=&quot;none&quot;/&gt;
      &lt;Template
            template=&quot;rpgapi.rpgle.ftl&quot;
            nameTemplate=&quot;rpgapi.rpgle.name.ftl&quot;
            appliesToClass=&quot;com.ssaglobal.istudio.core.model.bii.impl.BusinessInterfaceImplementationImpl&quot;
            appliesToSubclasses=&quot;true&quot;
            engine=&quot;FreeMarker&quot;
            writer=&quot;none&quot;/&gt;
      &lt;Template
            template=&quot;public.c.ftl&quot;
            nameTemplate=&quot;public.c.name.ftl&quot;
            appliesToClass=&quot;com.ssaglobal.istudio.core.model.bii.impl.BusinessInterfaceImplementationImpl&quot;
            appliesToSubclasses=&quot;true&quot;
            engine=&quot;FreeMarker&quot;
            writer=&quot;none&quot;/&gt;
      &lt;Template
            template=&quot;public.h.ftl&quot;
            nameTemplate=&quot;public.h.name.ftl&quot;
            appliesToClass=&quot;com.ssaglobal.istudio.core.model.bid.impl.BusinessInterfaceDefinitionImpl&quot;
            appliesToSubclasses=&quot;true&quot;
            engine=&quot;FreeMarker&quot;
            writer=&quot;none&quot;/&gt;
      &lt;Template
            template=&quot;hook.rpgle.ftl&quot;
            nameTemplate=&quot;hook.rpgle.name.ftl&quot;
            appliesToClass=&quot;com.ssaglobal.istudio.core.model.hook.impl.HookImpl&quot;
            appliesToSubclasses=&quot;true&quot;
            engine=&quot;FreeMarker&quot;
            writer=&quot;none&quot;/&gt;
      &lt;Template
            template=&quot;build.rmtcmd.ftl&quot;
            nameTemplate=&quot;build.rmtcmd.name.ftl&quot;
            appliesToClass=&quot;com.ssaglobal.istudio.core.model.bii.impl.BusinessInterfaceImplementationImpl&quot;
            appliesToSubclasses=&quot;true&quot;
            engine=&quot;FreeMarker&quot;
            writer=&quot;none&quot;/&gt;
      &lt;Template
            template=&quot;build.xml.ftl&quot;
            nameTemplate=&quot;build.xml.name.ftl&quot;
            appliesToClass=&quot;com.ssaglobal.istudio.core.model.bii.impl.BusinessInterfaceImplementationImpl&quot;
            appliesToSubclasses=&quot;true&quot;
            engine=&quot;FreeMarker&quot;
            writer=&quot;none&quot;/&gt;
      &lt;Helper
            appliesToSubclasses=&quot;true&quot;
            helperClass=&quot;com.ssaglobal.generator.helper.PropertiesHelper&quot;
            appliesToClass=&quot;org.eclipse.emf.ecore.impl.EObjectImpl&quot;
            name=&quot;properties&quot;/&gt;
      &lt;Helper
            appliesToSubclasses=&quot;true&quot;
            helperClass=&quot;com.ssaglobal.generator.erplx83.ComponentImplementationHelper&quot;
            appliesToClass=&quot;com.ssaglobal.istudio.core.model.bii.impl.ComponentImplementationImpl&quot;
            name=&quot;lxComponent&quot;/&gt;
      &lt;Helper
            appliesToSubclasses=&quot;true&quot;
            helperClass=&quot;com.ssaglobal.generator.erplx83.BuildHelper&quot;
            appliesToClass=&quot;com.ssaglobal.istudio.core.model.bii.impl.BusinessInterfaceImplementationImpl&quot;
            name=&quot;buildHelper&quot;/&gt;
      &lt;Helper
            appliesToSubclasses=&quot;true&quot;
            helperClass=&quot;com.ssaglobal.generator.erplx83.HookHelper&quot;
            appliesToClass=&quot;com.ssaglobal.istudio.core.model.hook.impl.HookImpl&quot;
            name=&quot;hookHelper&quot;/&gt;
      &lt;Property
            name=&quot;host&quot;
            value=&quot;&quot;/&gt;
      &lt;Property
            name=&quot;ifsdir&quot;
            value=&quot;&quot;/&gt;
      &lt;Property
            name=&quot;outputLibrary&quot;
            value=&quot;&quot;/&gt;
      &lt;Property
            name=&quot;cCompileOptions&quot;
            value=&quot;DBGVIEW(*SOURCE)&quot;/&gt;
      &lt;Property
            name=&quot;rpgCompileOptions&quot;
            value=&quot;DFTACTGRP(*NO) ACTGRP(*CALLER) DBGVIEW(*LIST) USRPRF(*OWNER)&quot;/&gt;
      &lt;Property
            name=&quot;sqlrpgCompileOptions&quot;
            value=&quot;COMMIT(*NONE) DBGVIEW(*SOURCE) CLOSQLCSR(*ENDACTGRP)&quot;/&gt;
      &lt;Property
            name=&quot;sqlrpgBindOptions&quot;
            value=&quot;ACTGRP(*CALLER) USRPRF(*OWNER)&quot;/&gt;
      &lt;Property
            name=&quot;xmlHeaderLib&quot;
            value=&quot;QXMLDEV520&quot;/&gt;
      &lt;Property
            name=&quot;baseLibrary&quot;
            value=&quot;ADP26LX83&quot;/&gt;
      &lt;Property
            name=&quot;compileCurrentLibrary&quot;
            value=&quot;&quot;/&gt;
      &lt;Property
            name=&quot;compileLibraryList&quot;
            value=&quot;&quot;/&gt;
      &lt;Property
            name=&quot;includeDir&quot;
            value=&quot;/ADP26LX83/include&quot;/&gt;
      &lt;BuildScript
            generated=&quot;true&quot;
            name=&quot;build/build.xml&quot;/&gt;
   &lt;/extension&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="apiInfo"/>
      </appInfo>
      <documentation>
         The &lt;code&gt;appliesToClass&lt;/code&gt; properties of the &amp;lt;Template&amp;gt; and &amp;lt;Helper&amp;gt; elements must identify classes that implement &lt;code&gt;org.eclipse.emf.ecore.EObject&lt;/code&gt;.
&lt;p&gt;
The template package plug-in must include a dependency on a plugin that exports the classes identified in the &lt;code&gt;appliesToClass&lt;/code&gt; elements.
&lt;p&gt;
The classes identified in the &lt;code&gt;helperClass&lt;/code&gt; property of the &amp;lt;Helper&amp;gt; element must implement a factory method with the following signature:
&lt;code&gt;&lt;pre&gt;
static public Object getInstance(GeneratorLog log, EObject object, GeneratorControlArea controlData)
&lt;/pre&gt;&lt;/code&gt;
      </documentation>
   </annotation>

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

   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         &lt;pre&gt;
THIS SOFTWARE IS THE PROPERTY OF AND CONTAINS
CONFIDENTIAL INFORMATION OF SSA GLOBAL 
TECHNOLOGIES, INC., AND SHALL NOT BE COPIED,
USED, NOR DISCLOSED WITHOUT EXPRESS WRITTEN
AUTHORIZATION.  ALTHOUGH PUBLICATION IS NOT
INTENDED, IN THE EVENT OF PUBLICATION, THE
FOLLOWING NOTICE IS APPLICABLE:

  (c) COPYRIGHT 2005 SSA GLOBAL TECHNOLOGIES, INC.

           SSA GLOBAL TECHNOLOGIES, INC.
&lt;/pre&gt;
      </documentation>
   </annotation>

</schema>
