--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/plcopen/pou_variables.xslt Fri Sep 27 09:32:39 2013 +0900
@@ -0,0 +1,219 @@
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:ppx="http://www.plcopen.org/xml/tc6_0201"
+ xmlns:ns="pou_vars_ns"
+ extension-element-prefixes="ns"
+ exclude-result-prefixes="ns">
+ <xsl:template match="ppx:pou">
+ <pou>
+ <class><xsl:value-of select="@pouType"/></class>
+ <type><xsl:value-of select="@name"/></type>
+ <edit><xsl:text>True</xsl:text></edit>
+ <debug><xsl:text>True</xsl:text></debug>
+ <variables>
+ <xsl:apply-templates select="ppx:interface"/>
+ <xsl:apply-templates select="ppx:actions/ppx:action | ppx:transitions/ppx:transition" mode="variable_list"/>
+ </variables>
+ </pou>
+ </xsl:template>
+ <xsl:template match="ppx:action">
+ <action>
+ <class/>
+ <type><xsl:text>None</xsl:text></type>
+ <edit><xsl:text>True</xsl:text></edit>
+ <debug><xsl:text>True</xsl:text></debug>
+ <variables>
+ <xsl:apply-templates select="ancestor::ppx:pou/child::ppx:interface"/>
+ </variables>
+ </action>
+ </xsl:template>
+ <xsl:template match="ppx:transition">
+ <transition>
+ <class/>
+ <type><xsl:text>None</xsl:text></type>
+ <edit><xsl:text>True</xsl:text></edit>
+ <debug><xsl:text>True</xsl:text></debug>
+ <variables>
+ <xsl:apply-templates select="ancestor::ppx:pou/child::ppx:interface"/>
+ </variables>
+ </transition>
+ </xsl:template>
+ <xsl:template match="ppx:configuration">
+ <configuration>
+ <class/>
+ <type><xsl:text>None</xsl:text></type>
+ <edit><xsl:text>True</xsl:text></edit>
+ <debug><xsl:text>False</xsl:text></debug>
+ <variables>
+ <xsl:apply-templates select="ppx:resource" mode="variable_list"/>
+ <xsl:apply-templates select="ppx:globalVars"/>
+ </variables>
+ </configuration>
+ </xsl:template>
+ <xsl:template match="ppx:resource">
+ <resource>
+ <class/>
+ <type><xsl:text>None</xsl:text></type>
+ <edit><xsl:text>True</xsl:text></edit>
+ <debug><xsl:text>False</xsl:text></debug>
+ <variables>
+ <xsl:apply-templates select="ppx:pouInstance | ppx:task/ppx:pouInstance" mode="variable_list"/>
+ <xsl:apply-templates select="ppx:globalVars"/>
+ </variables>
+ </resource>
+ </xsl:template>
+ <xsl:template match="ppx:localVars">
+ <xsl:call-template name="variables_infos">
+ <xsl:with-param name="var_class" select="'Local'"/>
+ </xsl:call-template>
+ </xsl:template>
+ <xsl:template match="ppx:globalVars">
+ <xsl:call-template name="variables_infos">
+ <xsl:with-param name="var_class" select="'Global'"/>
+ </xsl:call-template>
+ </xsl:template>
+ <xsl:template match="ppx:externalVars">
+ <xsl:call-template name="variables_infos">
+ <xsl:with-param name="var_class" select="'External'"/>
+ </xsl:call-template>
+ </xsl:template>
+ <xsl:template match="ppx:tempVars">
+ <xsl:call-template name="variables_infos">
+ <xsl:with-param name="var_class" select="'Temp'"/>
+ </xsl:call-template>
+ </xsl:template>
+ <xsl:template match="ppx:inputVars">
+ <xsl:call-template name="variables_infos">
+ <xsl:with-param name="var_class" select="'Input'"/>
+ </xsl:call-template>
+ </xsl:template>
+ <xsl:template match="ppx:outputVars">
+ <xsl:call-template name="variables_infos">
+ <xsl:with-param name="var_class" select="'Output'"/>
+ </xsl:call-template>
+ </xsl:template>
+ <xsl:template match="ppx:inOutVars">
+ <xsl:call-template name="variables_infos">
+ <xsl:with-param name="var_class" select="'InOut'"/>
+ </xsl:call-template>
+ </xsl:template>
+ <xsl:template name="variables_infos">
+ <xsl:param name="var_class"/>
+ <xsl:for-each select="ppx:variable">
+ <variable>
+ <name><xsl:value-of select="@name"/></name>
+ <class>
+ <xsl:apply-templates mode="var_class">
+ <xsl:with-param name="default_class">
+ <xsl:value-of select="$var_class"/>
+ </xsl:with-param>
+ </xsl:apply-templates>
+ </class>
+ <type><xsl:apply-templates mode="var_type"/></type>
+ <edit><xsl:apply-templates mode="var_edit"/></edit>
+ <debug><xsl:apply-templates mode="var_debug"/></debug>
+ </variable>
+ </xsl:for-each>
+ </xsl:template>
+ <xsl:template match="ppx:transition" mode="variable_list">
+ <transition>
+ <name><xsl:value-of select="@name"/></name>
+ <class/>
+ <type><xsl:text>None</xsl:text></type>
+ <edit><xsl:text>True</xsl:text></edit>
+ <debug><xsl:text>True</xsl:text></debug>
+ </transition>
+ </xsl:template>
+ <xsl:template match="ppx:action" mode="variable_list">
+ <action>
+ <name><xsl:value-of select="@name"/></name>
+ <class/>
+ <type><xsl:text>None</xsl:text></type>
+ <edit><xsl:text>True</xsl:text></edit>
+ <debug><xsl:text>True</xsl:text></debug>
+ </action>
+ </xsl:template>
+ <xsl:template match="ppx:resource" mode="variable_list">
+ <resource>
+ <name><xsl:value-of select="@name"/></name>
+ <class/>
+ <type><xsl:text>None</xsl:text></type>
+ <edit><xsl:text>True</xsl:text></edit>
+ <debug><xsl:text>False</xsl:text></debug>
+ </resource>
+ </xsl:template>
+ <xsl:template match="ppx:pouInstance" mode="variable_list">
+ <program>
+ <name><xsl:value-of select="@name"/></name>
+ <class/>
+ <type><xsl:value-of select="@typeName"/></type>
+ <edit><xsl:text>True</xsl:text></edit>
+ <debug><xsl:text>True</xsl:text></debug>
+ </program>
+ </xsl:template>
+ <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:derived" mode="var_class">
+ <xsl:param name="default_class"/>
+ <ns:pou_class>
+ <xsl:value-of select="$default_class"/>
+ </ns:pou_class>
+ </xsl:template>
+ <xsl:template match="ppx:pou" mode="var_class">
+ <xsl:param name="default_class"/>
+ <xsl:value-of select="@pouType"/>
+ </xsl:template>
+ <xsl:template match="*[self::ppx:type or self::ppx:baseType]/*" mode="var_class">
+ <xsl:param name="default_class"/>
+ <xsl:value-of select="$default_class"/>
+ </xsl:template>
+ <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:derived" mode="var_type">
+ <xsl:value-of select="@name"/>
+ </xsl:template>
+ <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:array" mode="var_type">
+ <xsl:text>ARRAY [</xsl:text>
+ <xsl:for-each select="ppx:dimension">
+ <xsl:value-of select="@lower"/>
+ <xsl:text>..</xsl:text>
+ <xsl:value-of select="@upper"/>
+ </xsl:for-each>
+ <xsl:text>] OF </xsl:text>
+ <xsl:apply-templates select="ppx:baseType" mode="var_type"/>
+ </xsl:template>
+ <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:string" mode="var_type">
+ <xsl:text>STRING</xsl:text>
+ </xsl:template>
+ <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:wstring" mode="var_type">
+ <xsl:text>WSTRING</xsl:text>
+ </xsl:template>
+ <xsl:template match="*[self::ppx:type or self::ppx:baseType]/*" mode="var_type">
+ <xsl:value-of select="local-name()"/>
+ </xsl:template>
+ <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:derived" mode="var_edit">
+ <ns:is_edited/>
+ </xsl:template>
+ <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:array" mode="var_edit">
+ <xsl:apply-templates select="ppx:baseType" mode="var_edit"/>
+ </xsl:template>
+ <xsl:template match="*[self::ppx:type or self::ppx:baseType]/*" mode="var_edit">
+ <xsl:text>False</xsl:text>
+ </xsl:template>
+ <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:derived" mode="var_debug">
+ <ns:is_debugged/>
+ </xsl:template>
+ <xsl:template match="ppx:pou" mode="var_debug">
+ <xsl:text>True</xsl:text>
+ </xsl:template>
+ <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:array" mode="var_debug">
+ <xsl:text>False</xsl:text>
+ </xsl:template>
+ <xsl:template match="*[self::ppx:type or self::ppx:baseType]/ppx:struct" mode="var_debug">
+ <xsl:text>False</xsl:text>
+ </xsl:template>
+ <xsl:template match="*[self::ppx:type or self::ppx:baseType]/*" mode="var_debug">
+ <xsl:text>True</xsl:text>
+ </xsl:template>
+ <xsl:template match="text()"/>
+ <xsl:template match="text()" mode="var_class"/>
+ <xsl:template match="text()" mode="var_type"/>
+ <xsl:template match="text()" mode="var_edit"/>
+ <xsl:template match="text()" mode="var_debug"/>
+</xsl:stylesheet>
\ No newline at end of file