plcopen/instance_tagname.ysl2
author Andrey Skvortsov <andrej.skvortzov@gmail.com>
Fri, 10 Aug 2018 17:45:33 +0300
changeset 2278 a3ac46366b86
parent 1950 752ec68da94d
permissions -rw-r--r--
Dirty fix for error '_object_has_no_attribute_'getSlave' in EtherCAT extension

traceback:
File "/home/developer/WorkData/PLC/beremiz/beremiz/IDEFrame.py", line 1433, in OnPouSelectedChanged
window.RefreshView()
File "/home/developer/WorkData/PLC/beremiz/beremiz/etherlab/ConfigEditor.py", line 837, in RefreshView
self.RefreshProcessVariables()
File "/home/developer/WorkData/PLC/beremiz/beremiz/etherlab/ConfigEditor.py", line 886, in RefreshProcessVariables
slaves = self.Controler.GetSlaves(**self.CurrentNodesFilter)
File "/home/developer/WorkData/PLC/beremiz/beremiz/etherlab/EthercatMaster.py", line 341, in GetSlaves
for slave in self.Config.getConfig().getSlave():
<type 'exceptions.AttributeError'>:_'lxml.etree._Element'_object_has_no_attribute_'getSlave'

Steps to reproduce problem:

- Add new EtherCAT master
- Add new EthercatNode to the master
- double click on


this is looks like dirty hack to fix strange problem with initial[0]
changing its type after returning from _init_ method to lxml.etree._Element
As a result all methods generated by class factory are lost.

For example, in function initMethod initial[0].__class__ points to
xmlclass.xmlclass.Config. After map(self.append, initial)
self.Config.__class__ is 'xmlclass.xmlclass.Config' as well.
But after returning from initMethod (_init) in CreateElement
self.Config.__class__ has changed to lxml.etree._Element.


I've noticed similar behavior if copy/deepcopy is used for any child
of etree.ElementBase. See simple example below.
[-------------------------------------------------------------]
#!/usr/bin/python

from __future__ import print_function
from lxml import etree
import copy

class DefaultElementClass(etree.ElementBase):
def getLocalTag(self):
return etree.QName(self.tag).localname


def printInformation(x):
print(x, x.__class__, "getLocalTag" in dir(x))


a = DefaultElementClass()
printInformation(a)

#
printInformation(copy.copy(a))
printInformation(copy.deepcopy(a))
[-------------------------------------------------------------]
1936
b85b13b1c2ec YSLT auto indent trick is useless here, added yslt_noindent.yml2, regenerated XSLT files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 1351
diff changeset
     1
include yslt_noindent.yml2
b85b13b1c2ec YSLT auto indent trick is useless here, added yslt_noindent.yml2, regenerated XSLT files
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 1351
diff changeset
     2
istylesheet xmlns:ppx="http://www.plcopen.org/xml/tc6_0201"
1351
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
     3
            xmlns:xhtml="http://www.w3.org/1999/xhtml"
1950
752ec68da94d GetPouInstanceTagName optimized with XSLTModelQuery.
Edouard Tisserant
parents: 1936
diff changeset
     4
            xmlns:ns="beremiz" 
1351
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
     5
            extension-element-prefixes="ns" 
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
     6
            exclude-result-prefixes="ns" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
     7
    
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
     8
    param "instance_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
     9
    
1950
752ec68da94d GetPouInstanceTagName optimized with XSLTModelQuery.
Edouard Tisserant
parents: 1936
diff changeset
    10
    variable "project", "ns:GetProject()";
1351
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    11
    
1950
752ec68da94d GetPouInstanceTagName optimized with XSLTModelQuery.
Edouard Tisserant
parents: 1936
diff changeset
    12
    variable "stdlib", "ns:GetStdLibs()";
752ec68da94d GetPouInstanceTagName optimized with XSLTModelQuery.
Edouard Tisserant
parents: 1936
diff changeset
    13
752ec68da94d GetPouInstanceTagName optimized with XSLTModelQuery.
Edouard Tisserant
parents: 1936
diff changeset
    14
    variable "extensions", "ns:GetExtensions()";
752ec68da94d GetPouInstanceTagName optimized with XSLTModelQuery.
Edouard Tisserant
parents: 1936
diff changeset
    15
752ec68da94d GetPouInstanceTagName optimized with XSLTModelQuery.
Edouard Tisserant
parents: 1936
diff changeset
    16
    variable "all_types", "($project | $stdlib | $extensions)/ppx:types";
1351
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    17
    
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    18
    function "element_name" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    19
        param "path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    20
        choose {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    21
            when "contains($path,'.')" > «substring-before($path,'.')»
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    22
            otherwise > «$path»
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    23
        }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    24
    }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    25
    
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    26
    function "next_path" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    27
        param "path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    28
        choose {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    29
            when "contains($path,'.')" > «substring-after($path,'.')»
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    30
        }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    31
    }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    32
    
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    33
    template "ppx:project" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    34
        variable "config_name" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    35
            call "element_name" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    36
                with "path", "$instance_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    37
            }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    38
        }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    39
        apply "ppx:instances/ppx:configurations/ppx:configuration[@name=$config_name]" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    40
            with "element_path" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    41
                call "next_path" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    42
                    with "path", "$instance_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    43
                }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    44
            }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    45
        }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    46
    }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    47
    
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    48
    template "ppx:configuration" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    49
        param "element_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    50
        choose {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    51
            when "$element_path!=''" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    52
                variable "child_name" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    53
                    call "element_name" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    54
                        with "path", "$element_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    55
                    }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    56
                }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    57
                apply "ppx:resource[@name=$child_name] | ppx:globalVars/ppx:variable[@name=$child_name]/ppx:type/*[self::ppx:derived or self::ppx:struct or self::ppx:array]" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    58
                    with "element_path" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    59
                        call "next_path" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    60
                            with "path", "$element_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    61
                        }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    62
                    }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    63
                }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    64
            }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    65
            otherwise {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    66
                value "ns:ConfigTagName(@name)";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    67
            }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    68
        }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    69
    }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    70
    
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    71
    template "ppx:resource" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    72
        param "element_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    73
        choose {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    74
            when "$element_path!=''" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    75
                variable "child_name" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    76
                    call "element_name" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    77
                        with "path" > «$element_path»
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    78
                    }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    79
                }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    80
                apply "ppx:pouInstance[@name=$child_name] | ppx:task/ppx:pouInstance[@name=$child_name] | ppx:globalVars/ppx:variable[@name=$child_name]/ppx:type/*[self::ppx:derived or self::ppx:struct or self::ppx:array]" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    81
                    with "element_path" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    82
                        call "next_path" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    83
                            with "path", "$element_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    84
                        }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    85
                    }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    86
                }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    87
            }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    88
            otherwise {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    89
                value "ns:ResourceTagName(ancestor::ppx:configuration/@name, @name)";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    90
            }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    91
        }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    92
    }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    93
    
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    94
    template "ppx:pouInstance" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    95
        param "element_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    96
        variable "type_name" > «@typeName»
1950
752ec68da94d GetPouInstanceTagName optimized with XSLTModelQuery.
Edouard Tisserant
parents: 1936
diff changeset
    97
        apply """$all_types/ppx:pous/ppx:pou[@name=$type_name] | \
752ec68da94d GetPouInstanceTagName optimized with XSLTModelQuery.
Edouard Tisserant
parents: 1936
diff changeset
    98
                 $all_types/ppx:dataTypes/ppx:dataType[@name=$type_name]""" {
1351
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
    99
            with "element_path", "$element_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   100
        }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   101
    }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   102
    
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   103
    template "ppx:pou" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   104
        param "element_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   105
        choose {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   106
            when "$element_path!=''" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   107
                variable "child_name" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   108
                    call "element_name" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   109
                        with "path", "$element_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   110
                    }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   111
                }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   112
                apply "ppx:interface/*/ppx:variable[@name=$child_name]/ppx:type/*[self::ppx:derived or self::ppx:struct or self::ppx:array]" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   113
                    with "element_path" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   114
                        call "next_path" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   115
                            with "path", "$element_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   116
                        }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   117
                    }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   118
                }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   119
                apply "ppx:actions/ppx:action[@name=$child_name] | ppx:transitions/ppx:transition[@name=$child_name]";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   120
            }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   121
            otherwise {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   122
                variable "name" > «@name»
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   123
                value "ns:PouTagName($name)";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   124
            }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   125
        }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   126
    }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   127
    
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   128
    template "ppx:action" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   129
        value "ns:ActionTagName(ancestor::ppx:pou/@name, @name)";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   130
    }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   131
    
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   132
    template "ppx:transition" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   133
        value "ns:TransitionTagName(ancestor::ppx:pou/@name, @name)";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   134
    }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   135
    
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   136
    template "ppx:dataType" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   137
        param "element_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   138
        apply "ppx:baseType/*[self::ppx:derived or self::ppx:struct or self::ppx:array]" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   139
            with "element_path", "$element_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   140
        }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   141
    }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   142
    
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   143
    template "ppx:derived" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   144
        param "element_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   145
        variable "type_name" > «@name»
1950
752ec68da94d GetPouInstanceTagName optimized with XSLTModelQuery.
Edouard Tisserant
parents: 1936
diff changeset
   146
        apply """$all_types/ppx:pous/ppx:pou[@name=$type_name] | \
752ec68da94d GetPouInstanceTagName optimized with XSLTModelQuery.
Edouard Tisserant
parents: 1936
diff changeset
   147
                 $all_types/ppx:dataTypes/ppx:dataType[@name=$type_name]""" {
1351
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   148
            with "element_path", "$element_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   149
        }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   150
    }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   151
    
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   152
    template "ppx:array" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   153
        param "element_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   154
        apply "ppx:baseType/*[self::ppx:derived or self::ppx:struct or self::ppx:array]" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   155
            with "element_path", "$element_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   156
        }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   157
    }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   158
    
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   159
    template "ppx:struct" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   160
        param "element_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   161
        variable "child_name" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   162
            call "element_name" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   163
                with "path", "$element_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   164
            }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   165
        }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   166
        apply "ppx:variable[@name=$child_name]/ppx:type/*[self::ppx:derived or self::ppx:struct or self::ppx:array]" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   167
            with "element_path" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   168
                call "next_path" {
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   169
                    with "path", "$element_path";
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   170
                }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   171
            }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   172
        }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   173
    }
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   174
    
a546a63ce1bf Fixed pou tagname of instance path computing stylesheet
Laurent Bessard
parents:
diff changeset
   175
}