plcopen/pou_variables.xslt
changeset 1316 df9d02bd3eb7
child 1319 748347102c97
equal deleted inserted replaced
1315:ff14a66bbd12 1316:df9d02bd3eb7
       
     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><xsl:value-of select="$var_class"/></class>
       
   106 	    <type><xsl:apply-templates mode="var_type"/></type>
       
   107 	    <edit><xsl:apply-templates mode="var_edit"/></edit>
       
   108 	    <debug><xsl:apply-templates mode="var_debug"/></debug>
       
   109       </variable>
       
   110     </xsl:for-each>
       
   111   </xsl:template>
       
   112   <xsl:template match="ppx:transition" mode="variable_list">
       
   113     <transition>
       
   114       <name><xsl:value-of select="@name"/></name>
       
   115       <class/>
       
   116       <type><xsl:text>None</xsl:text></type>
       
   117       <edit><xsl:text>True</xsl:text></edit>
       
   118       <debug><xsl:text>True</xsl:text></debug>
       
   119     </transition>
       
   120   </xsl:template>
       
   121   <xsl:template match="ppx:action" mode="variable_list">
       
   122     <action>
       
   123 	  <name><xsl:value-of select="@name"/></name>
       
   124 	  <class/>
       
   125       <type><xsl:text>None</xsl:text></type>
       
   126 	  <edit><xsl:text>True</xsl:text></edit>
       
   127       <debug><xsl:text>True</xsl:text></debug>
       
   128     </action>
       
   129   </xsl:template>
       
   130   <xsl:template match="ppx:resource" mode="variable_list">
       
   131     <resource>
       
   132       <name><xsl:value-of select="@name"/></name>
       
   133       <class/>
       
   134       <type><xsl:text>None</xsl:text></type>
       
   135       <edit><xsl:text>True</xsl:text></edit>
       
   136       <debug><xsl:text>False</xsl:text></debug>
       
   137     </resource>
       
   138   </xsl:template>
       
   139   <xsl:template match="ppx:pouInstance" mode="variable_list">
       
   140     <program>
       
   141       <name><xsl:value-of select="@name"/></name>
       
   142       <class/>
       
   143       <type><xsl:value-of select="@typeName"/></type>
       
   144       <edit><xsl:text>True</xsl:text></edit>
       
   145       <debug><xsl:text>True</xsl:text></debug>
       
   146     </program>
       
   147   </xsl:template>
       
   148   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:derived" mode="var_type">
       
   149     <xsl:value-of select="@name"/>
       
   150   </xsl:template>
       
   151   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:array" mode="var_type">
       
   152     <xsl:text>ARRAY [</xsl:text>
       
   153     <xsl:for-each select="ppx:dimension">
       
   154       <xsl:value-of select="@lower"/>
       
   155       <xsl:text>..</xsl:text>
       
   156       <xsl:value-of select="@upper"/>
       
   157     </xsl:for-each>
       
   158     <xsl:text>] OF </xsl:text>
       
   159     <xsl:apply-templates select="ppx:baseType" mode="var_type"/>
       
   160   </xsl:template>
       
   161   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:string" mode="var_type">
       
   162     <xsl:text>STRING</xsl:text>
       
   163   </xsl:template>
       
   164   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:wstring" mode="var_type">
       
   165     <xsl:text>WSTRING</xsl:text>
       
   166   </xsl:template>
       
   167   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/*" mode="var_type">
       
   168     <xsl:value-of select="local-name()"/>
       
   169   </xsl:template>
       
   170   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:derived" mode="var_edit">
       
   171     <ns:is_edited/>
       
   172   </xsl:template>
       
   173   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:array" mode="var_edit">
       
   174     <xsl:apply-templates select="ppx:baseType" mode="var_edit"/>
       
   175   </xsl:template>
       
   176   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/*" mode="var_edit">
       
   177     <xsl:text>False</xsl:text>
       
   178   </xsl:template>
       
   179     <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:derived" mode="var_debug">
       
   180     <ns:is_debugged/>
       
   181     <xsl:choose>
       
   182       <xsl:when test="count(./*) > 0">
       
   183         <xsl:apply-templates mode="var_debug"/>
       
   184       </xsl:when>
       
   185       <xsl:otherwise>
       
   186         <xsl:text>False</xsl:text>
       
   187       </xsl:otherwise>
       
   188     </xsl:choose>
       
   189   </xsl:template>
       
   190   <xsl:template match="ppx:pou" mode="var_debug">
       
   191     <xsl:text>True</xsl:text>
       
   192   </xsl:template>
       
   193   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:array" mode="var_debug">
       
   194     <xsl:text>False</xsl:text>
       
   195   </xsl:template>
       
   196   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:struct" mode="var_debug">
       
   197     <xsl:text>False</xsl:text>
       
   198   </xsl:template>
       
   199   <xsl:template match="*[self::ppx:type or self::ppx:baseType]/*" mode="var_debug">
       
   200     <xsl:text>True</xsl:text>
       
   201   </xsl:template>
       
   202   <xsl:template match="text()"/>
       
   203   <xsl:template match="text()" mode="var_type"/>
       
   204   <xsl:template match="text()" mode="var_edit"/>
       
   205   <xsl:template match="text()" mode="var_debug"/>
       
   206 </xsl:stylesheet>