/**************************************************************************************************/
/** 
\page pdsc_generators_pg  /package/generators element

The element \ref element_generator specifies a tool or utility that is used to generate and/or configure software (source
code, header files, configuration files, etc.) in the context of a project. For this purpose, a generator package description
file (GPDSC) needs to be created (see \ref pdsc_generators_gpdsc "\<gpdsc>"). The GPDSC file details the selected device,
components, project files and conditions, as well as information about the generator and how it can be launched again for
iterative development cycles. A GPDSC file follows the same schema as a static Pack. However, the files generated by the
utility are not installed and managed centrally in the Pack folder, but locally within the project folder.

A generator can be associated with a component by it's name. Selecting the component will automatically include the files
provided by the generator in the project. If the specified GPDSC file is not present, the generator command is executed by
the environment to generate the files and GPDSC. In this way project specific configurations can be made, files being
generated and included and maintained as part of the project.

\anchor pdsc_generators_gen_sec
\b Example Generator Section
\code
  <generators>
    <generator id = "MyGen">
      <gpdsc name ="$P/RTE/MyGen/myGen.gpdsc"/>
      <exe>
        <command host = "win">MyGen.bat</command>
        <command host = "linux">MyGen.script</command>
        <argument>$P/RTE/MyGen/myGen.gpdsc</argument>
        <argument host="linux" switch="--device=">$D</argument>
        <argument host="win"   switch="/device=">$D</argument>
      </exe>
       
      <eclipse plugin="com.mygen.plugin" class="com.mygen.plugin.generator.launcher" method="launch" >
        <argument>$D</argument>
        <argument>$P/RTE/MyGen/myGen.gpdsc</argument>
      </eclipse>
       
      <web url="http://mygen.com/mygen">
        <argument switch="device">$D</argument>
        <argument switch="gpdsc">$P/RTE/MyGen/myGen.gpdsc</argument>
      </web>
    </generator>
  </generators>
\endcode

\anchor pdsc_generators_gpdsc
\b Example Generator Package Description File (gpdsc)
\code{.xml}
<?xml version="1.0" encoding="UTF-8"?>

<package xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" xs:noNamespaceSchemaLocation="PACK.xsd">
  <vendor>Keil</vendor>
  <name>FrameworkCubeMX</name>
  <description>STM32CubeMX generated pack description</description>
  <url>project-path</url>
  <releases>
    <release version="1.0.0">
     - Generated: 08/11/2016 09:20:21
    </release>
  </releases>
  <generators>
    <generator id="STM32CubeMX" Gvendor="STMicroelectronics" Gtool="STM32CubeMX" Gversion="4.10.0">
      <description>STM32CubeMX Environment</description>
      <select Dname="STM32F746NGHx" Dvendor="STMicroelectronics:13"/>
      <exe>
        <command host = "win">MDK/CubeMX/STM32CubeMXLauncher.exe</command>
        <command host = "linux">MDK/CubeMX/STM32CubeMXLauncher</command>
        <argument>$P/RTE/MyGen/myGen.gpdsc</argument>
        <argument>$D.ioc</argument>
      </exe>
      <workingDir>$P/RTE/Device/STM32F746NGHx</workingDir>
      <project_files>
        <file category="source" name="STCubeGenerated/Src/main.c" />
        <file category="header" name="STCubeGenerated/Inc/stm32f7xx_it.h"/>
        <file category="source" name="STCubeGenerated/Src/stm32f7xx_it.c"/>
      </project_files>
    </generator>
  </generators>
  <taxonomy>
    <description Cclass="Device" Cgroup="STM32Cube Framework" generator="STM32CubeMX">STM32Cube Framework</description>
  </taxonomy>
  <conditions>
    <condition id="STCubeMX">
      <description>Condition to include CMSIS-Core (Cortex-M) and Device Startup components</description>
      <require Dvendor="STMicroelectronics:13" Dname="STM32F7*"/>
      <require Cclass="CMSIS"  Cgroup="Core"          Csub=""/>
      <require Cclass="Device" Cgroup="Startup"/>
      <require Cclass="Device" Cgroup="STM32Cube HAL" Csub="Common"/>
      <require Cclass="Device" Cgroup="STM32Cube HAL" Csub="GPIO"/>
    </condition>
  </conditions>
  <components>
    <component generator="STM32CubeMX" Cvendor="Keil" Cclass="Device" Cgroup="STM32Cube Framework" Csub="STM32CubeMX" Cversion="1.0.0" condition="STCubeMX">
      <description>Configuration via STM32CubeMX</description>
      <RTE_Components_h>
        #define RTE_DEVICE_FRAMEWORK_CUBE_MX
      </RTE_Components_h>
      <files>
        <file category="header" name="MX_Device.h"/>
        <file category="header" name="STCubeGenerated/Inc/stm32f7xx_hal_conf.h"/>
        <file category="source" name="STCubeGenerated/Src/stm32f7xx_hal_msp.c"/>
      </files>
    </component>
  </components>
</package>
\endcode
<p>&nbsp;</p>		
<hr>

\section element_generators /package/generators

Grouping element for \b generators. Only one such group can exist in a Pack.

<table class="cmtable" summary="Element: Generator">
  <tr>
    <th>Parent</th>
    <th colspan="3">Chain</th>
  </tr>
  <tr>
    <td>\ref pdsc_package_pg "package"</td>
    <td colspan="3">\ref pdsc_package_pg "/package"</td>
  </tr>	
  <tr>
    <th>Child Elements</th>
    <th>Description</th>
    <th>Type</th>
    <th>Occurrence</th>
  </tr>
  <tr>
    <td>\ref element_generator "generator"</td>
    <td>Description of the generator and the related files</td>
    <td>\ref element_generator "GeneratorType"</td>
    <td>1..* </td>
  </tr>
 </table>

 The following variables can be used in the elements \c \<command>, \c \<workingDir>, \c \<argument>, \c \<gpdsc>:
 
<table class="cmtable" summary="Supported Variables within Generator">
  <tr>
    <th>Variable</th>
    <th>Description</th>
  </tr>
  <tr>
    <td>$P</th>
    <td>PATH to current project</th>
  </tr>
  <tr>
    <td>\#P</th>
    <td>PATH and name of the current project</th>
  </tr>
  <tr>
    <td>$S</th>
    <td>PATH to Pack folder containing the Device description used by the current project</th>
  </tr>
  <tr>
    <td>$D</th>
    <td>Name of the device configured in the current project</th>
  </tr>
 </table>
<p>&nbsp;</p>		
<hr>

\section element_generator /package/generators/generator

The generator section is used to provide the details about the tool that has been used to create the GPDSC file. At least one
generator element must exist.

<table class="cmtable" summary="Element: Generator">
  <tr>
    <th>Parent</th>
    <th colspan="3">Chain</th>
  </tr>
  <tr>
    <td>\ref element_generators "generators"</td>
    <td colspan="3">\ref element_generators</td>
  </tr>	
  <tr>
    <th>Attributes</th>
    <th>Description</th>
    <th>Type</th>
    <th>Use</th>
  </tr>
  <tr>
    <td>id</td>
    <td>Identifier of the generator tool. Can be used by other elements to determine the generator.</td>
    <td>xs:string</td>
    <td>required</td>
  </tr>
  <tr>
    <td>Gvendor</td>
    <td>Vendor name of the generator tool.</td>
    <td>xs:string</td>
    <td>optional</td>
  </tr>
  <tr>
    <td>Gtool</td>
    <td>Plain text name of the generator.</td>
    <td>xs:string</td>
    <td>optional</td>
  </tr>
  <tr>
    <td>Gversion</td>
	<td>Version of the generator tool.</td>
	<td>xs:string</td>
	<td>optional</td>
  </tr>
  <tr>
    <th>Child&nbsp;Elements</th>
    <th>Description</th>
    <th>Type</th>
    <th>Occurrence</th>
  </tr>
  <tr>
    <td>description</td>
    <td>Briefly describes the generator tool.</td>
    <td>xs:string</td>
    <td>0..1</td>
  </tr>
  <tr>
    <td>\ref element_gen_select "select"</td>
    <td>Complex type specifying the configured device. A device is uniquely identified by vendor, name or variant and processor name
	in case of devices with multiple processors.</td>
    <td>GeneratorSelectType</td>
    <td>0..1</td>
  </tr>
  <tr>
    <td>workingDir</td>
    <td>Directory to be set as current directory before launching the \c \<command>. This is either an absolute or relative
	    path to PDSC or GPDSC file. If not specified, the current directory is the directory of the project configured by the
		environment.
     </td>
     <td>xs:string</td>
     <td>0..1</td>
  </tr>
  <tr>
    <td>command</td>
    <td>\token{Deprecated; use exe, web and/or eclipse}. Invocation command for the generator tool.
    </td>
    <td>xs:string</td>
    <td>0..1</td>
  </tr>
  <tr>
    <td>arguments</td>
    <td>\token{Deprecated; use argument tags under exe, web and/or eclipse}.</td>
    <td>GeneratorCommandArgumentsType</td>
    <td>0..1</td>
  </tr>
  <tr>
    <td>gpdsc</td>
    <td>Path and name of the GPDSC that the generator creates and updates. The path is either absolute or relative to the
	    working directory. If no explicit gpdsc file is provided, then a gpdsc file named after the project with extension gpdsc in
		the working directory is assumed (\c \<project>.gpdsc).
    </td>
    <td>xs:string</td>
    <td>0..1</td>
  </tr>
  <tr>
    <td>\ref element_gen_exe "exe"</td>
    <td>Section to specify a binary/executable to generate the GPDSC file.
    </td>
    <td>xs:string</td>
    <td>0..1</td>
  </tr>
  <tr>
    <td>\ref element_gen_eclipse "eclipse"</td>
    <td>Section to specify an Eclipse plug-in to generate the GPDSC file.
    </td>
    <td>xs:string</td>
    <td>0..1</td>
  </tr>
  <tr>
    <td>\ref element_gen_web "web"</td>
    <td>Section to specify a web page to generate the GPDSC file.
    </td>
    <td>xs:string</td>
    <td>0..1</td>
  </tr>
  <tr>
    <td>\ref element_gen_project_files "project_files"</td>
    <td>Grouping element for all project files generated by the tool.</td>
    <td>group</td>
    <td>0..1</td>
  </tr>
  <tr>
    <td>\ref element_files "files"</td>
	<td>Grouping element for generator tool files.</td>
	<td>group</td>
	<td>0..1</td>
  </tr>
  <tr>
    <td>extensions</td>
	<td>Generator vendor specific section ignored by other tools</td>
	<td>N/A</td>
	<td>0..1</td>
  </tr>
</table>
<p>&nbsp;</p>
<hr>

\section element_gen_select /package/generators/generator/select

This element contains information about the vendor and device the GPDSC file has been generated for. Only one such
element can exist in \c \<generators>.

\b Example:
\code
  <generators>
    <generator id="STM32CubeMX" Gvendor="STMicroelectronics" Gtool="STM32CubeMX" Gversion="4.10.0">
      <select Dname="STM32F746NGHx" Dvendor="STMicroelectronics:13"/>
    </generator>
  </generators>
\endcode
<p>&nbsp;</p>		

<table class="cmtable" summary="Element: Generator Select">
  <tr>
    <th>Parent</th>
    <th colspan="3">Chain</th>
  </tr>
  <tr>
    <td>\ref element_generator "generator"</td>
    <td colspan="3">\ref element_generator</td>
  </tr>	
  <tr>
    <th>Attributes</th>
    <th>Description</th>
    <th>Type</th>
    <th>Use</th>
  </tr>
  <tr>
    <td>Dvendor</td>
	<td>Vendor name of the targeted device. Use predefined values as listed in the table \ref DeviceVendorEnum "Device Vendor".
	</td>
	<td>DeviceVendorEnum</td>
	<td>required</td>
  </tr>
  <tr>
    <td>Dname</td>
	<td>Name of the targeted device. If no Dvariant is specified this tag is required</td>
	<td>xs:string</td>
	<td>optional</td>
  </tr>
  <tr>
    <td>Dvariant</td>
	<td>Name of the targeted device variant. If a variant is specified, the device name will be ignored and the 
	    variant rules. If no Dname is specified, this tag is required.</td>
	<td>xs:string</td>
	<td>optional</td>
  </tr>
  <tr>
    <td>Pname</td>
	<td>Name of the targeted processor of a device with multiple processors. For devices with multiple processors this tag is required.</td>
	<td>xs:string</td>
	<td>optional</td>
  </tr>
</table>
<p>&nbsp;</p>
<hr>

\section element_gen_exe /package/generators/generator/exe

This element contains information about the generation binary/executable.

\b Example:
\code
<exe>
  <command host = "win">MyGen.bat</command>
  <command host = "linux">MyGen.script</command>
  <argument>$P/RTE/MyGen/myGen.gpdsc</argument>
  <argument host="linux" switch="--device=">$D</argument>
  <argument host="win"   switch="/device=">$D</argument>
</exe>
\endcode
<p>&nbsp;</p>		

<table class="cmtable" summary="Element: Exe">
  <tr>
    <th>Parent</th>
    <th colspan="3">Chain</th>
  </tr>
  <tr>
    <td>\ref element_generator "generator"</td>
    <td colspan="3">\ref element_generator</td>
  </tr>
  <tr>
    <th>Child&nbsp;Elements</th>
    <th>Description</th>
    <th>Type</th>
    <th>Occurrence</th>
  </tr>
  <tr>
    <td>\ref element_gen_command "command"</td>
    <td>Invocation command for the generator tool. Command line options should be passed via \c \<arguments>. 
    <td>\ref element_gen_command "GeneratorCommandType"</td>
    <td>1..4</td>
  </tr>
  <tr>
    <td>\ref element_gen_argument "argument"</td>
    <td>Arguments passed along with the \c \<command> of the format \c \<argument \c switch="-data">myFileName\</argument>.
        Path information for files can be specified absolute or relative to the location (path) of the GPDSC file.
    <td>\ref element_gen_argument "GeneratorCommandArgumentType"</td>
    <td>1..*</td>
  </tr>
</table>
<p>&nbsp;</p>
<hr>

\section element_gen_eclipse /package/generators/generator/eclipse

This element contains information about the Eclipse based generation tool.

\b Example:
\code
<eclipse plugin="com.mygen.plugin" class="com.mygen.plugin.generator.launcher" method="launch" >
  <argument>$D</argument>
  <argument>$P/RTE/MyGen/myGen.gpdsc</argument>
</eclipse>
\endcode
<p>&nbsp;</p>		

<table class="cmtable" summary="Element: Eclipse">
  <tr>
    <th>Parent</th>
    <th colspan="3">Chain</th>
  </tr>
  <tr>
    <td>\ref element_generator "generator"</td>
    <td colspan="3">\ref element_generator</td>
  </tr>
  <tr>
    <th>Attributes</th>
    <th>Description</th>
    <th>Type</th>
    <th>Use</th>
  </tr>
  <tr>
    <td>plugin</td>
    <td>Name of the plugin.</td>
    <td>xs:string</td>
    <td>required</td>
  </tr>
  <tr>
    <td>class</td>
    <td>Plugin's class name.</td>
    <td>xs:string</td>
    <td>required</td>
  </tr>
  <tr>
    <td>method</td>
    <td>Method used to launch the plugin.</td>
    <td>xs:string</td>
    <td>required</td>
  </tr>
  <tr>
    <th>Child&nbsp;Elements</th>
    <th>Description</th>
    <th>Type</th>
    <th>Occurrence</th>
  </tr>
  <tr>
    <td>\ref element_gen_argument "argument"</td>
    <td>Arguments passed to the plugin.</td>
    <td>\ref element_gen_argument "GeneratorCommandArgumentType"</td>
    <td>1..*</td>
  </tr>
</table>
<p>&nbsp;</p>
<hr>

\section element_gen_web     /package/generators/generator/web

This element contains information about the web generation application.

\b Example:
\code
<web url="http://mygen.com/mygen">
  <argument switch="device">$D</argument>
  <argument switch="gpdsc">$P/RTE/MyGen/myGen.gpdsc</argument>
</web>
\endcode
<p>&nbsp;</p>		

<table class="cmtable" summary="Element: Web">
  <tr>
    <th>Parent</th>
    <th colspan="3">Chain</th>
  </tr>
  <tr>
    <td>\ref element_generator "generator"</td>
    <td colspan="3">\ref element_generator</td>
  </tr>
  <tr>
    <th>Attributes</th>
    <th>Description</th>
    <th>Type</th>
    <th>Use</th>
  </tr>
  <tr>
    <td>url</td>
    <td>Specifies the URL of the web service. 
    <td>URL</td>
    <td>required</td>
  </tr>
  <tr>
    <th>Child&nbsp;Elements</th>
    <th>Description</th>
    <th>Type</th>
    <th>Occurrence</th>
  </tr>
  <tr>
    <td>\ref element_gen_argument "argument"</td>
    <td>Arguments passed along to the web service.</td>
    <td>\ref element_gen_argument "GeneratorCommandArgumentType"</td>
    <td>0..*</td>
  </tr>
</table>
<p>&nbsp;</p>
<hr>

\section element_gen_command /package/generators/generator/.../command

This element describes a single command line for launching the generator. Arguments should be passed along with an
\ref element_gen_argument "argument".

<b>Example</b>
\code
<exe>
  <command host = "win">MyGen.bat</command>
  <command host = "linux">MyGen.script</command>
  <argument>$P/RTE/MyGen/myGen.gpdsc</argument>
  <argument host="linux" switch="--device=">$D</argument>
  <argument host="win"   switch="/device=">$D</argument>
</exe>
\endcode

<p>&nbsp;</p>		

<table class="cmtable" summary="Element: Generator Command Argument">
  <tr>
    <th>Parent</th>
    <th colspan="3">Element Chain</th>
  </tr>
  <tr>
    <td>\ref element_gen_exe "exe"</td>
    <td colspan="3">\ref element_gen_exe</td>
  </tr>
  <tr>
    <th>Current</th>
    <th>Description</th>
    <th colspan="2">Type</th>
  </tr>
  <tr>
    <td>command</td>
    <td>generator command line</td>
    <td colspan="2">xs:string</td>
  </tr>
  <tr>
    <th>Attributes</th>
    <th>Description</th>
    <th>Type</th>
    <th>Use</th>
  </tr>
  <tr>
    <td>host</td>
    <td>Specifies the host operating system. Possible values are \c all, \c win, \c linux, \c mac, \c other. Only available
        with element \ref element_gen_exe "exe".</td>
    <td>xs:string</td>
    <td>optional</td>
  </tr>
</table>
<p>&nbsp;</p>
<hr>

\section element_gen_argument /package/generators/generator/.../argument

This element describes one or multiple arguments passed along with the parent element.

<b>Example</b>
\code
<generators>
    <generator id = "MyGen">
      <gpdsc name ="$P/RTE/MyGen/myGen.gpdsc"/>
      <exe>
        <command host = "win">MyGen.bat</command>
        <command host = "linux">MyGen.script</command>
        <argument>$P/RTE/MyGen/myGen.gpdsc</argument>
        <argument host="linux" switch="--device=">$D</argument>
        <argument host="win"   switch="/device=">$D</argument>
      </exe>
 
      <eclipse plugin="com.mygen.plugin" class="com.mygen.plugin.generator.launcher" method="launch" >
        <argument>$D</argument>
        <argument>$P/RTE/MyGen/myGen.gpdsc</argument>
      </eclipse >
 
      <web url="http://mygen.com/mygen">
        <argument switch="device">$D</argument>
        <argument switch="gpdsc">$P/RTE/MyGen/myGen.gpdsc</argument>
      </web>
    </generator>
</generators>
\endcode

<p>&nbsp;</p>		

<table class="cmtable" summary="Element: Generator Command Argument">
  <tr>
    <th>Parent</th>
    <th colspan="3">Element Chain</th>
  </tr>
  <tr>
    <td>\ref element_gen_exe "exe", \ref element_gen_eclipse "eclipse", \ref element_gen_web "web"</td>
    <td colspan="3">\ref element_gen_exe, \ref element_gen_eclipse, \ref element_gen_web</td>
  </tr>
  <tr>
    <th>Current</th>
    <th>Description</th>
    <th colspan="2">Type</th>
  </tr>
  <tr>
    <td>argument</td>
    <td>value of argument without command line switch</td>
    <td colspan="2">xs:string</td>
  </tr>
  <tr>
    <th>Attributes</th>
    <th>Description</th>
    <th>Type</th>
    <th>Use</th>
  </tr>
  <tr>
    <td>host</td>
    <td>Specifies the host operating system. Possible values are \c all, \c win, \c linux, \c mac, \c other. Only available
        with element \ref element_gen_command "command".</td>
    <td>xs:string</td>
    <td>optional</td>
  </tr>
  <tr>
    <td>switch</td>
    <td>Specifies the command line switch separated from the argument value. Not available with element
        \ref element_gen_eclipse "eclipse".</td>
    <td>xs:string</td>
    <td>optional</td>
  </tr>
</table>
<p>&nbsp;</p>
<hr>

\section element_gen_project_files /package/generators/generator/project_files

The group <b>project_files</b> specifies all files that are required for the project setup. Only one such group can exist.

<b>Example</b>
\code
  <generators>
    <generator id="STM32CubeMX" Gvendor="STMicroelectronics" Gtool="STM32CubeMX" Gversion="4.10.0">
      <description>STM32CubeMX Environment</description>
      <select Dname="STM32F746NGHx" Dvendor="STMicroelectronics:13"/>
      <exe>
        <command host = "win">MDK/CubeMX/STM32CubeMXLauncher.exe</command>
        <command host = "linux">MDK/CubeMX/STM32CubeMXLauncher</command>
        <argument>$P/RTE/MyGen/myGen.gpdsc</argument>
        <argument>$D.ioc</argument>
      </exe>      
      <workingDir>$P/RTE/Device/STM32F746NGHx</workingDir>
      <project_files>
        <file category="source" name="STCubeGenerated/Src/main.c" />
        <file category="header" name="STCubeGenerated/Inc/stm32f7xx_it.h"/>
        <file category="source" name="STCubeGenerated/Src/stm32f7xx_it.c"/>
      </project_files>
    </generator>
  </generators>
\endcode

<p>&nbsp;</p>

<table class="cmtable" summary="Element: Project Files">
  <tr>
    <th>Parent</th>
    <th colspan="3">Element Chain</th>
  </tr>
  <tr>
    <td>\ref element_generator "generator"</td>
    <td colspan="3">\ref element_generator</td>
  </tr>
  <tr>
    <th>Child&nbsp;Elements</th>
    <th>Description</th>
    <th>Type</th>
    <th>Occurrence</th>
  </tr>
  <tr>
    <td>\ref element_file "file"</td>
    <td>Frame for files created by the generator and used in a project.
    <td>group</td>
    <td>0..1 </td>
  </tr>
</table>
<p>&nbsp;</p>		
<hr>

\section element_gen_files /package/generators/generator/files

The group <b>files</b> specifies files that are required by the generator tool. Only one such group can exist.

<b>Example</b>
\code
<generators>
  <generator id="MyGenerator">
    <files>
      ...
    <files>
  </generator>
</generators>
\endcode

<p>&nbsp;</p>

<table class="cmtable" summary="Element: Generator Files">
  <tr>
    <th>Parent</th>
    <th colspan="3">Element Chain</th>
  </tr>
  <tr>
    <td>\ref element_generator "generator"</td>
    <td colspan="3">\ref element_generator</td>
  </tr>
  <tr>
    <th>Child&nbsp;Elements</th>
    <th>Description</th>
    <th>Type</th>
    <th>Occurrence</th>
  </tr>
  <tr>
    <td>\ref element_gen_file "file"</td>
    <td>Frame for files used by the generator.
    <td>group</td>
    <td>0..1 </td>
  </tr>
</table>
<p>&nbsp;</p>		
<hr>

\section element_gen_file /package/generators/generator/files/file

This element contains information about files used by a generator.

<b>Example</b>
\code
<generators>
  <generator id="MyGenerator">
    <files>
      <file category="generator" name="Main.c"/>
      <file category="you_name_it" name="database/connection.odbc" version="1.2.3"/>
      ...
    <files>
  </generator>
</generators>
\endcode

<p>&nbsp;</p>		

<table class="cmtable" summary="Element: Generator File">
  <tr>
    <th>Parent</th>
    <th colspan="3">Element Chain</th>
  </tr>
  <tr>
    <td>\ref element_gen_files "files"</td>
    <td colspan="3">\ref element_gen_files</td>
  </tr>
  <tr>
    <th>Attributes</th>
    <th>Description</th>
    <th>Type</th>
    <th>Use</th>
  </tr>
  <tr>
    <td>condition</td>
    <td>Reference using the name of the respective condition specified in the conditions section of this package
	    (\ref element_conditions). If the condition resolves to \token{false}, then the element will be ignored and treated
		as if not present.
	</td>
    <td>xs:string</td>
    <td>optional</td>
  </tr>
  <tr>
    <td>category</td>
    <td>Describes the file type  (for example: \token{doc}, \token{header}, \token{library}). You can use predefined values
	    as listed in the table \ref FileCategoryEnum "File Categories",	however, this is not mandatory.
	</td>
    <td>xs:string</td>
    <td>required</td>
  </tr>
  <tr>
    <td>name</td>
    <td>Can consist of the path (relative to the Pack base directory) and the file name with extension.</td>
    <td>xs:string</td>
    <td>required</td>
  </tr>
  <tr>
    <td>version</td>
    <td>File-specific version information.  The version format is described in \ref VersionType "Version Type".</td>
    <td>VersionType</td>
    <td>optional</td>
  </tr>
</table>
<p>&nbsp;</p>		
*/