plcopen/instance_tagname.ysl2
changeset 1950 752ec68da94d
parent 1936 b85b13b1c2ec
equal deleted inserted replaced
1949:c266fbaae0f6 1950:752ec68da94d
     1 include yslt_noindent.yml2
     1 include yslt_noindent.yml2
     2 istylesheet xmlns:ppx="http://www.plcopen.org/xml/tc6_0201"
     2 istylesheet xmlns:ppx="http://www.plcopen.org/xml/tc6_0201"
     3             xmlns:xhtml="http://www.w3.org/1999/xhtml"
     3             xmlns:xhtml="http://www.w3.org/1999/xhtml"
     4             xmlns:ns="instance_tagname_ns" 
     4             xmlns:ns="beremiz" 
     5             extension-element-prefixes="ns" 
     5             extension-element-prefixes="ns" 
     6             exclude-result-prefixes="ns" {
     6             exclude-result-prefixes="ns" {
     7     
     7     
     8     param "instance_path";
     8     param "instance_path";
     9     
     9     
    10     variable "project" {
    10     variable "project", "ns:GetProject()";
    11         copy "document('project')/project/*";
       
    12     }
       
    13     
    11     
    14     variable "stdlib" {
    12     variable "stdlib", "ns:GetStdLibs()";
    15         copy "document('stdlib')/stdlib/*";
    13 
    16     }
    14     variable "extensions", "ns:GetExtensions()";
    17     variable "extensions" {
    15 
    18         copy "document('extensions')/extensions/*";
    16     variable "all_types", "($project | $stdlib | $extensions)/ppx:types";
    19     }
       
    20     
    17     
    21     function "element_name" {
    18     function "element_name" {
    22         param "path";
    19         param "path";
    23         choose {
    20         choose {
    24             when "contains($path,'.')" > «substring-before($path,'.')»
    21             when "contains($path,'.')" > «substring-before($path,'.')»
    95     }
    92     }
    96     
    93     
    97     template "ppx:pouInstance" {
    94     template "ppx:pouInstance" {
    98         param "element_path";
    95         param "element_path";
    99         variable "type_name" > «@typeName»
    96         variable "type_name" > «@typeName»
   100         apply """exsl:node-set($project)/ppx:project/ppx:types/ppx:pous/ppx:pou[@name=$type_name] |
    97         apply """$all_types/ppx:pous/ppx:pou[@name=$type_name] | \
   101                  exsl:node-set($project)/ppx:project/ppx:types/ppx:dataTypes/ppx:dataType[@name=$type_name] |
    98                  $all_types/ppx:dataTypes/ppx:dataType[@name=$type_name]""" {
   102                  exsl:node-set($stdlib)/ppx:project/ppx:types/ppx:pous/ppx:pou[@name=$type_name] |
       
   103                  exsl:node-set($stdlib)/ppx:project/ppx:types/ppx:dataTypes/ppx:dataType[@name=$type_name] |
       
   104                  exsl:node-set($extensions)/ppx:project/ppx:types/ppx:pous/ppx:pou[@name=$type_name] |
       
   105                  exsl:node-set($extensions)/ppx:project/ppx:types/ppx:dataTypes/ppx:dataType[@name=$type_name]""" {
       
   106             with "element_path", "$element_path";
    99             with "element_path", "$element_path";
   107         }
   100         }
   108     }
   101     }
   109     
   102     
   110     template "ppx:pou" {
   103     template "ppx:pou" {
   148     }
   141     }
   149     
   142     
   150     template "ppx:derived" {
   143     template "ppx:derived" {
   151         param "element_path";
   144         param "element_path";
   152         variable "type_name" > «@name»
   145         variable "type_name" > «@name»
   153         apply """exsl:node-set($project)/ppx:project/ppx:types/ppx:pous/ppx:pou[@name=$type_name] |
   146         apply """$all_types/ppx:pous/ppx:pou[@name=$type_name] | \
   154                  exsl:node-set($project)/ppx:project/ppx:types/ppx:dataTypes/ppx:dataType[@name=$type_name] |
   147                  $all_types/ppx:dataTypes/ppx:dataType[@name=$type_name]""" {
   155                  exsl:node-set($stdlib)/ppx:project/ppx:types/ppx:pous/ppx:pou[@name=$type_name] |
       
   156                  exsl:node-set($stdlib)/ppx:project/ppx:types/ppx:dataTypes/ppx:dataType[@name=$type_name] |
       
   157                  exsl:node-set($extensions)/ppx:project/ppx:types/ppx:pous/ppx:pou[@name=$type_name] |
       
   158                  exsl:node-set($extensions)/ppx:project/ppx:types/ppx:dataTypes/ppx:dataType[@name=$type_name]""" {
       
   159             with "element_path", "$element_path";
   148             with "element_path", "$element_path";
   160         }
   149         }
   161     }
   150     }
   162     
   151     
   163     template "ppx:array" {
   152     template "ppx:array" {