plcopen/pou_variables.xslt
changeset 1329 9d0cb01312f0
parent 1319 748347102c97
child 1348 aee0a7eb833a
equal deleted inserted replaced
1288:adc79fc44079 1329:9d0cb01312f0
       
     1 <xsl:stylesheet version="1.0"
       
     2     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
       
     3     xmlns:ppx="http://www.plcopen.org/xml/tc6_0201"
       
     4     xmlns:ns="pou_vars_ns"
       
     5     extension-element-prefixes="ns"
       
     6     exclude-result-prefixes="ns">
       
     7   <xsl:template match="ppx:pou">
       
     8     <pou>
       
     9       <class><xsl:value-of select="@pouType"/></class>
       
    10       <type><xsl:value-of select="@name"/></type>
       
    11       <edit><xsl:text>True</xsl:text></edit>
       
    12       <debug><xsl:text>True</xsl:text></debug>
       
    13       <variables>
       
    14         <xsl:apply-templates select="ppx:interface"/>
       
    15         <xsl:apply-templates select="ppx:actions/ppx:action | ppx:transitions/ppx:transition" mode="variable_list"/>
       
    16       </variables>
       
    17     </pou>
       
    18   </xsl:template>
       
    19   <xsl:template match="ppx:action">
       
    20     <action>
       
    21       <class/>
       
    22       <type><xsl:text>None</xsl:text></type>
       
    23       <edit><xsl:text>True</xsl:text></edit>
       
    24       <debug><xsl:text>True</xsl:text></debug>
       
    25       <variables>
       
    26         <xsl:apply-templates select="ancestor::ppx:pou/child::ppx:interface"/>
       
    27       </variables>
       
    28     </action>
       
    29   </xsl:template>
       
    30   <xsl:template match="ppx:transition">
       
    31     <transition>
       
    32       <class/>
       
    33       <type><xsl:text>None</xsl:text></type>
       
    34       <edit><xsl:text>True</xsl:text></edit>
       
    35       <debug><xsl:text>True</xsl:text></debug>
       
    36       <variables>
       
    37         <xsl:apply-templates select="ancestor::ppx:pou/child::ppx:interface"/>
       
    38       </variables>
       
    39     </transition>
       
    40   </xsl:template>
       
    41   <xsl:template match="ppx:configuration">
       
    42     <configuration>
       
    43       <class/>
       
    44       <type><xsl:text>None</xsl:text></type>
       
    45       <edit><xsl:text>True</xsl:text></edit>
       
    46       <debug><xsl:text>False</xsl:text></debug>
       
    47       <variables>
       
    48         <xsl:apply-templates select="ppx:resource" mode="variable_list"/>
       
    49         <xsl:apply-templates select="ppx:globalVars"/>
       
    50       </variables>
       
    51     </configuration>
       
    52   </xsl:template>
       
    53   <xsl:template match="ppx:resource">
       
    54     <resource>
       
    55       <class/>
       
    56       <type><xsl:text>None</xsl:text></type>
       
    57       <edit><xsl:text>True</xsl:text></edit>
       
    58       <debug><xsl:text>False</xsl:text></debug>
       
    59       <variables>
       
    60         <xsl:apply-templates select="ppx:pouInstance | ppx:task/ppx:pouInstance" mode="variable_list"/>
       
    61         <xsl:apply-templates select="ppx:globalVars"/>
       
    62       </variables>
       
    63     </resource>
       
    64   </xsl:template>
       
    65   <xsl:template match="ppx:localVars">
       
    66     <xsl:call-template name="variables_infos">
       
    67       <xsl:with-param name="var_class" select="'Local'"/>
       
    68     </xsl:call-template>
       
    69   </xsl:template>
       
    70   <xsl:template match="ppx:globalVars">
       
    71     <xsl:call-template name="variables_infos">
       
    72       <xsl:with-param name="var_class" select="'Global'"/>
       
    73     </xsl:call-template>
       
    74   </xsl:template>
       
    75   <xsl:template match="ppx:externalVars">
       
    76     <xsl:call-template name="variables_infos">
       
    77       <xsl:with-param name="var_class" select="'External'"/>
       
    78     </xsl:call-template>
       
    79   </xsl:template>
       
    80   <xsl:template match="ppx:tempVars">
       
    81     <xsl:call-template name="variables_infos">
       
    82       <xsl:with-param name="var_class" select="'Temp'"/>
       
    83     </xsl:call-template>
       
    84   </xsl:template>
       
    85   <xsl:template match="ppx:inputVars">
       
    86     <xsl:call-template name="variables_infos">
       
    87       <xsl:with-param name="var_class" select="'Input'"/>
       
    88     </xsl:call-template>
       
    89   </xsl:template>
       
    90   <xsl:template match="ppx:outputVars">
       
    91     <xsl:call-template name="variables_infos">
       
    92       <xsl:with-param name="var_class" select="'Output'"/>
       
    93     </xsl:call-template>
       
    94   </xsl:template>
       
    95   <xsl:template match="ppx:inOutVars">
       
    96     <xsl:call-template name="variables_infos">
       
    97       <xsl:with-param name="var_class" select="'InOut'"/>
       
    98     </xsl:call-template>
       
    99   </xsl:template>
       
   100   <xsl:template name="variables_infos">
       
   101     <xsl:param name="var_class"/>
       
   102 	<xsl:for-each select="ppx:variable">
       
   103       <variable>
       
   104 	    <name><xsl:value-of select="@name"/></name>
       
   105 	    <class>
       
   106 	      <xsl:apply-templates mode="var_class">
       
   107 	        <xsl:with-param name="default_class">
       
   108 	          <xsl:value-of select="$var_class"/>
       
   109 	        </xsl:with-param>
       
   110 	      </xsl:apply-templates>
       
   111 	    </class>
       
   112 	    <type><xsl:apply-templates mode="var_type"/></type>
       
   113 	    <edit><xsl:apply-templates mode="var_edit"/></edit>
       
   114 	    <debug><xsl:apply-templates mode="var_debug"/></debug>
       
   115       </variable>
       
   116     </xsl:for-each>
       
   117   </xsl:template>
       
   118   <xsl:template match="ppx:transition" mode="variable_list">
       
   119     <transition>
       
   120       <name><xsl:value-of select="@name"/></name>
       
   121       <class/>
       
   122       <type><xsl:text>None</xsl:text></type>
       
   123       <edit><xsl:text>True</xsl:text></edit>
       
   124       <debug><xsl:text>True</xsl:text></debug>
       
   125     </transition>
       
   126   </xsl:template>
       
   127   <xsl:template match="ppx:action" mode="variable_list">
       
   128     <action>
       
   129 	  <name><xsl:value-of select="@name"/></name>
       
   130 	  <class/>
       
   131       <type><xsl:text>None</xsl:text></type>
       
   132 	  <edit><xsl:text>True</xsl:text></edit>
       
   133       <debug><xsl:text>True</xsl:text></debug>
       
   134     </action>
       
   135   </xsl:template>
       
   136   <xsl:template match="ppx:resource" mode="variable_list">
       
   137     <resource>
       
   138       <name><xsl:value-of select="@name"/></name>
       
   139       <class/>
       
   140       <type><xsl:text>None</xsl:text></type>
       
   141       <edit><xsl:text>True</xsl:text></edit>
       
   142       <debug><xsl:text>False</xsl:text></debug>
       
   143     </resource>
       
   144   </xsl:template>
       
   145   <xsl:template match="ppx:pouInstance" mode="variable_list">
       
   146     <program>
       
   147       <name><xsl:value-of select="@name"/></name>
       
   148       <class/>
       
   149       <type><xsl:value-of select="@typeName"/></type>
       
   150       <edit><xsl:text>True</xsl:text></edit>
       
   151       <debug><xsl:text>True</xsl:text></debug>
       
   152     </program>
       
   153   </xsl:template>
       
   154   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:derived" mode="var_class">
       
   155     <xsl:param name="default_class"/>
       
   156     <ns:pou_class>
       
   157       <xsl:value-of select="$default_class"/>
       
   158     </ns:pou_class>
       
   159   </xsl:template>
       
   160   <xsl:template match="ppx:pou" mode="var_class">
       
   161     <xsl:param name="default_class"/>
       
   162     <xsl:value-of select="@pouType"/>
       
   163   </xsl:template>
       
   164   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/*" mode="var_class">
       
   165     <xsl:param name="default_class"/>
       
   166     <xsl:value-of select="$default_class"/>
       
   167   </xsl:template>
       
   168   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:derived" mode="var_type">
       
   169     <xsl:value-of select="@name"/>
       
   170   </xsl:template>
       
   171   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:array" mode="var_type">
       
   172     <xsl:text>ARRAY [</xsl:text>
       
   173     <xsl:for-each select="ppx:dimension">
       
   174       <xsl:value-of select="@lower"/>
       
   175       <xsl:text>..</xsl:text>
       
   176       <xsl:value-of select="@upper"/>
       
   177     </xsl:for-each>
       
   178     <xsl:text>] OF </xsl:text>
       
   179     <xsl:apply-templates select="ppx:baseType" mode="var_type"/>
       
   180   </xsl:template>
       
   181   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:string" mode="var_type">
       
   182     <xsl:text>STRING</xsl:text>
       
   183   </xsl:template>
       
   184   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:wstring" mode="var_type">
       
   185     <xsl:text>WSTRING</xsl:text>
       
   186   </xsl:template>
       
   187   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/*" mode="var_type">
       
   188     <xsl:value-of select="local-name()"/>
       
   189   </xsl:template>
       
   190   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:derived" mode="var_edit">
       
   191     <ns:is_edited/>
       
   192   </xsl:template>
       
   193   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:array" mode="var_edit">
       
   194     <xsl:apply-templates select="ppx:baseType" mode="var_edit"/>
       
   195   </xsl:template>
       
   196   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/*" mode="var_edit">
       
   197     <xsl:text>False</xsl:text>
       
   198   </xsl:template>
       
   199     <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:derived" mode="var_debug">
       
   200     <ns:is_debugged/>
       
   201   </xsl:template>
       
   202   <xsl:template match="ppx:pou" mode="var_debug">
       
   203     <xsl:text>True</xsl:text>
       
   204   </xsl:template>
       
   205   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:array" mode="var_debug">
       
   206     <xsl:text>False</xsl:text>
       
   207   </xsl:template>
       
   208   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:struct" mode="var_debug">
       
   209     <xsl:text>False</xsl:text>
       
   210   </xsl:template>
       
   211   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/*" mode="var_debug">
       
   212     <xsl:text>True</xsl:text>
       
   213   </xsl:template>
       
   214   <xsl:template match="text()"/>
       
   215   <xsl:template match="text()" mode="var_class"/>
       
   216   <xsl:template match="text()" mode="var_type"/>
       
   217   <xsl:template match="text()" mode="var_edit"/>
       
   218   <xsl:template match="text()" mode="var_debug"/>
       
   219 </xsl:stylesheet>