cpee 2.1.109 → 2.1.110

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cb5004fe53cd5de27b756835cde118bc7eb7f0a8231478d544bd84e1c5ff6408
4
- data.tar.gz: f4940048028217a3d0a21efbe06a76a081792f02e5010a13591908af83732ab2
3
+ metadata.gz: 4f9943a992fd0daa8d83a77e39978af329c56c9d79cf696ace8893f77b22aecb
4
+ data.tar.gz: f9d15c11818701cf6471303e8d2750a47eb70c4e5cf74f4097ba8eb33f9e7885
5
5
  SHA512:
6
- metadata.gz: 1d8381762bccbeeb16254c8b26b754b8f369a17d16d323b594cf6d8f04ecebfd43a600764d2babeb26b7663a11c9c39abd2a82d05e352817693c0d063c8f4cf1
7
- data.tar.gz: 70c84b57562d54acf06d4d3567b8ec99b3f2c5648bc137d07b0109f7124f1a6a340db42b9491fe380cf02f6329a4ea3f9cf025cb46263d0fb57f75f4b9194c05
6
+ metadata.gz: 28dddc79621ae601467ce069b282f2066b0188884e8a1e540b66229f96c3483f0d1f864215d36f72b0092e04029ea171b72b582a45ca765ca000eb2a43ab19e5
7
+ data.tar.gz: e85108d60aa7b2971efa810425877e658d7974eefeae77486e53386e23c50e04a5f8780bd3d30305f17a8a695f4e8cde6d68842814b57a29b055f9b37d51de07
data/cpee.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cpee"
3
- s.version = "2.1.109"
3
+ s.version = "2.1.110"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.license = "LGPL-3.0-or-later"
6
6
  s.summary = "The cloud process execution engine (cpee.org). If you just need workflow execution, without a rest service exposing it, then use WEEL."
@@ -0,0 +1 @@
1
+ ../ruby/dsl_to_dslx.xsl
@@ -12,6 +12,9 @@
12
12
  # CPEE (file COPYING in the main directory). If not, see
13
13
  # <http://www.gnu.org/licenses/>.
14
14
 
15
+ require 'net/ssh'
16
+ require 'net/scp'
17
+
15
18
  module CPEE
16
19
 
17
20
  module ExecutionHandler
@@ -119,7 +119,7 @@
119
119
  <xsl:text> :e</xsl:text>
120
120
  <xsl:for-each select="ancestor-or-self::*">
121
121
  <xsl:text>_</xsl:text>
122
- <xsl:value-of select="position()"/>
122
+ <xsl:value-of select="count(preceding-sibling::*)+1"/>
123
123
  </xsl:for-each>
124
124
  </xsl:otherwise>
125
125
  </xsl:choose>
@@ -167,7 +167,7 @@
167
167
  <xsl:text> :e</xsl:text>
168
168
  <xsl:for-each select="ancestor-or-self::*">
169
169
  <xsl:text>_</xsl:text>
170
- <xsl:value-of select="position()"/>
170
+ <xsl:value-of select="count(preceding-sibling::*)+1"/>
171
171
  </xsl:for-each>
172
172
  </xsl:otherwise>
173
173
  </xsl:choose>
@@ -190,7 +190,7 @@
190
190
  <xsl:text> :e</xsl:text>
191
191
  <xsl:for-each select="ancestor-or-self::*">
192
192
  <xsl:text>_</xsl:text>
193
- <xsl:value-of select="position()"/>
193
+ <xsl:value-of select="count(preceding-sibling::*)+1"/>
194
194
  </xsl:for-each>
195
195
  </xsl:otherwise>
196
196
  </xsl:choose>
@@ -235,7 +235,7 @@
235
235
  <xsl:text> :e</xsl:text>
236
236
  <xsl:for-each select="ancestor-or-self::*">
237
237
  <xsl:text>_</xsl:text>
238
- <xsl:value-of select="position()"/>
238
+ <xsl:value-of select="count(preceding-sibling::*)+1"/>
239
239
  </xsl:for-each>
240
240
  </xsl:otherwise>
241
241
  </xsl:choose>
@@ -368,7 +368,7 @@
368
368
  <xsl:text> :e</xsl:text>
369
369
  <xsl:for-each select="ancestor-or-self::*">
370
370
  <xsl:text>_</xsl:text>
371
- <xsl:value-of select="position()"/>
371
+ <xsl:value-of select="count(preceding-sibling::*)+1"/>
372
372
  </xsl:for-each>
373
373
  </xsl:otherwise>
374
374
  </xsl:choose>
@@ -421,7 +421,7 @@
421
421
  <xsl:text> :e</xsl:text>
422
422
  <xsl:for-each select="ancestor-or-self::*">
423
423
  <xsl:text>_</xsl:text>
424
- <xsl:value-of select="position()"/>
424
+ <xsl:value-of select="count(preceding-sibling::*)+1"/>
425
425
  </xsl:for-each>
426
426
  </xsl:otherwise>
427
427
  </xsl:choose>
@@ -462,7 +462,7 @@
462
462
  <xsl:text> :e</xsl:text>
463
463
  <xsl:for-each select="ancestor-or-self::*">
464
464
  <xsl:text>_</xsl:text>
465
- <xsl:value-of select="position()"/>
465
+ <xsl:value-of select="count(preceding-sibling::*)+1"/>
466
466
  </xsl:for-each>
467
467
  </xsl:otherwise>
468
468
  </xsl:choose>
@@ -520,7 +520,7 @@
520
520
  <xsl:text> :e</xsl:text>
521
521
  <xsl:for-each select="ancestor-or-self::*">
522
522
  <xsl:text>_</xsl:text>
523
- <xsl:value-of select="position()"/>
523
+ <xsl:value-of select="count(preceding-sibling::*)+1"/>
524
524
  </xsl:for-each>
525
525
  </xsl:otherwise>
526
526
  </xsl:choose>
@@ -567,7 +567,7 @@
567
567
  <xsl:text> :e</xsl:text>
568
568
  <xsl:for-each select="ancestor-or-self::*">
569
569
  <xsl:text>_</xsl:text>
570
- <xsl:value-of select="position()"/>
570
+ <xsl:value-of select="count(preceding-sibling::*)+1"/>
571
571
  </xsl:for-each>
572
572
  </xsl:otherwise>
573
573
  </xsl:choose>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cpee
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.109
4
+ version: 2.1.110
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juergen eTM Mangler
@@ -1,1055 +0,0 @@
1
- <?xml version="1.0"?>
2
- <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:d="http://cpee.org/ns/description/1.0" xmlns:str="http://exslt.org/strings" version="1.0">
3
- <xsl:output method="text"/>
4
- <xsl:strip-space elements="*"/>
5
- <xsl:variable name="myspacemultiplier">2</xsl:variable>
6
- <xsl:template match="/">
7
- <xsl:text>control flow do</xsl:text>
8
- <xsl:call-template name="print-newline"/>
9
- <xsl:apply-templates select="/d:description"/>
10
- <xsl:text>end</xsl:text>
11
- </xsl:template>
12
- <xsl:template match="/d:description">
13
- <xsl:apply-templates>
14
- <xsl:with-param name="myspace">
15
- <xsl:value-of select="0*$myspacemultiplier"/>
16
- </xsl:with-param>
17
- </xsl:apply-templates>
18
- </xsl:template>
19
- <xsl:template match="*">
20
- <xsl:param name="myspace"/>
21
- <xsl:if test="name()='call' or name()='manipulate'">
22
- <xsl:call-template name="print-space">
23
- <xsl:with-param name="i">1</xsl:with-param>
24
- <xsl:with-param name="count">
25
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
26
- </xsl:with-param>
27
- </xsl:call-template>
28
- <xsl:value-of select="name()"/>
29
- <xsl:text> :</xsl:text>
30
- <xsl:value-of select="@id"/>
31
- </xsl:if>
32
- <xsl:if test="name()='call'">
33
- <xsl:text>, </xsl:text>
34
- <xsl:choose>
35
- <xsl:when test="count(str:tokenize(@endpoint,' ')) &gt; 1">
36
- <xsl:text>[</xsl:text>
37
- <xsl:for-each select="str:tokenize(@endpoint,' ')">
38
- <xsl:if test="position() &gt;1">, </xsl:if>
39
- <xsl:text>:</xsl:text>
40
- <xsl:value-of select="."/>
41
- </xsl:for-each>
42
- <xsl:text>]</xsl:text>
43
- </xsl:when>
44
- <xsl:when test="count(str:tokenize(@endpoint,' ')) = 0">
45
- <xsl:text>nil</xsl:text>
46
- </xsl:when>
47
- <xsl:otherwise>
48
- <xsl:text>:</xsl:text>
49
- <xsl:value-of select="@endpoint"/>
50
- </xsl:otherwise>
51
- </xsl:choose>
52
- <xsl:text>, parameters: { </xsl:text>
53
- <xsl:apply-templates select="d:parameters"/>
54
- <xsl:text> }</xsl:text>
55
- <xsl:if test="d:code/d:signal[text()='on']">
56
- <xsl:text>, signal: true</xsl:text>
57
- </xsl:if>
58
- <xsl:if test="(d:finalize or d:code/d:finalize) and (d:finalize/text() or d:code/d:finalize/text())">
59
- <xsl:text>, finalize: &lt;&lt;-END</xsl:text>
60
- </xsl:if>
61
- <xsl:if test="(d:update or d:code/d:update) and (d:update/text() or d:code/d:update/text())">
62
- <xsl:text>, update: &lt;&lt;-END</xsl:text>
63
- </xsl:if>
64
- <xsl:if test="(d:prepare or d:code/d:prepare) and (d:prepare/text() or d:code/d:prepare/text())">
65
- <xsl:text>, prepare: &lt;&lt;-END</xsl:text>
66
- </xsl:if>
67
- <xsl:if test="(d:rescue or d:code/d:rescue) and (d:rescue/text() or d:code/d:rescue/text())">
68
- <xsl:text>, salvage: &lt;&lt;-END</xsl:text>
69
- </xsl:if>
70
- <xsl:apply-templates select="d:finalize | d:code/d:finalize" mode="part-of-call">
71
- <xsl:with-param name="myspace">
72
- <xsl:value-of select="$myspace"/>
73
- </xsl:with-param>
74
- </xsl:apply-templates>
75
- <xsl:apply-templates select="d:update | d:code/d:update" mode="part-of-call">
76
- <xsl:with-param name="myspace">
77
- <xsl:value-of select="$myspace"/>
78
- </xsl:with-param>
79
- </xsl:apply-templates>
80
- <xsl:apply-templates select="d:prepare | d:code/d:prepare" mode="part-of-call">
81
- <xsl:with-param name="myspace">
82
- <xsl:value-of select="$myspace"/>
83
- </xsl:with-param>
84
- </xsl:apply-templates>
85
- <xsl:apply-templates select="d:rescue | d:code/d:rescue" mode="part-of-call">
86
- <xsl:with-param name="myspace">
87
- <xsl:value-of select="$myspace"/>
88
- </xsl:with-param>
89
- </xsl:apply-templates>
90
- <xsl:call-template name="print-newline"/>
91
- </xsl:if>
92
- <xsl:if test="name()='manipulate'">
93
- <xsl:if test="@label">
94
- <xsl:text>, { :label => "</xsl:text>
95
- <xsl:value-of select="@label"/>
96
- <xsl:text>" }</xsl:text>
97
- </xsl:if>
98
- <xsl:call-template name="print-mcontent">
99
- <xsl:with-param name="myspace">
100
- <xsl:value-of select="$myspace"/>
101
- </xsl:with-param>
102
- </xsl:call-template>
103
- <xsl:call-template name="print-newline"></xsl:call-template>
104
- </xsl:if>
105
- <xsl:if test="name()='terminate'">
106
- <xsl:call-template name="print-space">
107
- <xsl:with-param name="i">1</xsl:with-param>
108
- <xsl:with-param name="count">
109
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
110
- </xsl:with-param>
111
- </xsl:call-template>
112
- <xsl:text>terminate</xsl:text>
113
- <xsl:choose>
114
- <xsl:when test="@eid">
115
- <xsl:text> :</xsl:text>
116
- <xsl:value-of select="@eid"/>
117
- </xsl:when>
118
- <xsl:otherwise>
119
- <xsl:text> :e</xsl:text>
120
- <xsl:for-each select="ancestor-or-self::*">
121
- <xsl:text>_</xsl:text>
122
- <xsl:value-of select="position()"/>
123
- </xsl:for-each>
124
- </xsl:otherwise>
125
- </xsl:choose>
126
- <xsl:call-template name="print-newline"/>
127
- </xsl:if>
128
- <xsl:if test="name()='stop'">
129
- <xsl:call-template name="print-space">
130
- <xsl:with-param name="i">1</xsl:with-param>
131
- <xsl:with-param name="count">
132
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
133
- </xsl:with-param>
134
- </xsl:call-template>
135
- <xsl:text>stop :</xsl:text>
136
- <xsl:value-of select="@id"/>
137
- <xsl:call-template name="print-newline"/>
138
- </xsl:if>
139
- <xsl:if test="name()='wait_for_signal'">
140
- <xsl:call-template name="print-space">
141
- <xsl:with-param name="i">1</xsl:with-param>
142
- <xsl:with-param name="count">
143
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
144
- </xsl:with-param>
145
- </xsl:call-template>
146
- <xsl:text>wait_for_signal :</xsl:text>
147
- <xsl:value-of select="@id"/>
148
- <xsl:text>, "</xsl:text>
149
- <xsl:value-of select="str:replace(str:replace(d:label/text(),'\','\\'),'&quot;','\&quot;')"/>
150
- <xsl:text>"</xsl:text>
151
- <xsl:call-template name="print-newline"/>
152
- </xsl:if>
153
- <xsl:if test="name()='escape'">
154
- <xsl:call-template name="print-space">
155
- <xsl:with-param name="i">1</xsl:with-param>
156
- <xsl:with-param name="count">
157
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
158
- </xsl:with-param>
159
- </xsl:call-template>
160
- <xsl:text>escape</xsl:text>
161
- <xsl:choose>
162
- <xsl:when test="@eid">
163
- <xsl:text> :</xsl:text>
164
- <xsl:value-of select="@eid"/>
165
- </xsl:when>
166
- <xsl:otherwise>
167
- <xsl:text> :e</xsl:text>
168
- <xsl:for-each select="ancestor-or-self::*">
169
- <xsl:text>_</xsl:text>
170
- <xsl:value-of select="position()"/>
171
- </xsl:for-each>
172
- </xsl:otherwise>
173
- </xsl:choose>
174
- <xsl:call-template name="print-newline"/>
175
- </xsl:if>
176
- <xsl:if test="name()='parallel'">
177
- <xsl:call-template name="print-space">
178
- <xsl:with-param name="i">1</xsl:with-param>
179
- <xsl:with-param name="count">
180
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
181
- </xsl:with-param>
182
- </xsl:call-template>
183
- <xsl:text>parallel</xsl:text>
184
- <xsl:choose>
185
- <xsl:when test="@eid">
186
- <xsl:text> :</xsl:text>
187
- <xsl:value-of select="@eid"/>
188
- </xsl:when>
189
- <xsl:otherwise>
190
- <xsl:text> :e</xsl:text>
191
- <xsl:for-each select="ancestor-or-self::*">
192
- <xsl:text>_</xsl:text>
193
- <xsl:value-of select="position()"/>
194
- </xsl:for-each>
195
- </xsl:otherwise>
196
- </xsl:choose>
197
- <xsl:if test="@wait">
198
- <xsl:text>, :wait =&gt; </xsl:text>
199
- <xsl:value-of select="@wait"/>
200
- <xsl:if test="@cancel">
201
- <xsl:text>, :cancel =&gt; :</xsl:text>
202
- <xsl:value-of select="@cancel"/>
203
- </xsl:if>
204
- </xsl:if>
205
- <xsl:text> do</xsl:text>
206
- <xsl:call-template name="print-newline"/>
207
- <xsl:apply-templates>
208
- <xsl:with-param name="myspace">
209
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
210
- </xsl:with-param>
211
- </xsl:apply-templates>
212
- <xsl:call-template name="print-space">
213
- <xsl:with-param name="i">1</xsl:with-param>
214
- <xsl:with-param name="count">
215
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
216
- </xsl:with-param>
217
- </xsl:call-template>
218
- <xsl:text>end</xsl:text>
219
- <xsl:call-template name="print-newline"/>
220
- </xsl:if>
221
- <xsl:if test="name()='loop'">
222
- <xsl:call-template name="print-space">
223
- <xsl:with-param name="i">1</xsl:with-param>
224
- <xsl:with-param name="count">
225
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
226
- </xsl:with-param>
227
- </xsl:call-template>
228
- <xsl:text>loop</xsl:text>
229
- <xsl:choose>
230
- <xsl:when test="@eid">
231
- <xsl:text> :</xsl:text>
232
- <xsl:value-of select="@eid"/>
233
- </xsl:when>
234
- <xsl:otherwise>
235
- <xsl:text> :e</xsl:text>
236
- <xsl:for-each select="ancestor-or-self::*">
237
- <xsl:text>_</xsl:text>
238
- <xsl:value-of select="position()"/>
239
- </xsl:for-each>
240
- </xsl:otherwise>
241
- </xsl:choose>
242
- <xsl:if test="@mode='pre_test'">
243
- <xsl:choose>
244
- <xsl:when test="@language='application/x-ruby'">
245
- <xsl:text>, pre_test{</xsl:text>
246
- <xsl:value-of select="@condition"/>
247
- <xsl:text>} </xsl:text>
248
- </xsl:when>
249
- <xsl:otherwise>
250
- <xsl:text>, pre_test("</xsl:text>
251
- <xsl:value-of select="str:replace(str:replace(@condition,'\','\\'),'&quot;','\&quot;')"/>
252
- <xsl:text>")</xsl:text>
253
- </xsl:otherwise>
254
- </xsl:choose>
255
- </xsl:if>
256
- <xsl:if test="@mode='post_test'">
257
- <xsl:choose>
258
- <xsl:when test="@language='application/x-ruby'">
259
- <xsl:text>, post_test{</xsl:text>
260
- <xsl:value-of select="@condition"/>
261
- <xsl:text>} </xsl:text>
262
- </xsl:when>
263
- <xsl:otherwise>
264
- <xsl:text>, post_test("</xsl:text>
265
- <xsl:value-of select="str:replace(str:replace(@condition,'\','\\'),'&quot;','\&quot;')"/>
266
- <xsl:text>")</xsl:text>
267
- </xsl:otherwise>
268
- </xsl:choose>
269
- </xsl:if>
270
- <xsl:for-each select="@*[not(name()='language' or name()='mode' or (local-name()='alt_id' and namespace-uri()='http://cpee.org/ns/annotation/1.0') or name()='condition' or name()='svg-label')]">
271
- <xsl:text>, :</xsl:text>
272
- <xsl:value-of select="name(.)"/>
273
- <xsl:text> => "</xsl:text>
274
- <xsl:value-of select="."/>
275
- <xsl:text>"</xsl:text>
276
- </xsl:for-each>
277
- <xsl:text> do</xsl:text>
278
- <xsl:call-template name="print-newline"/>
279
- <xsl:apply-templates>
280
- <xsl:with-param name="myspace">
281
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
282
- </xsl:with-param>
283
- </xsl:apply-templates>
284
- <xsl:call-template name="print-space">
285
- <xsl:with-param name="i">1</xsl:with-param>
286
- <xsl:with-param name="count">
287
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
288
- </xsl:with-param>
289
- </xsl:call-template>
290
- <xsl:text>end</xsl:text>
291
- <xsl:call-template name="print-newline"/>
292
- </xsl:if>
293
- <xsl:if test="name()='closed_loop'">
294
- <xsl:call-template name="print-space">
295
- <xsl:with-param name="i">1</xsl:with-param>
296
- <xsl:with-param name="count">
297
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
298
- </xsl:with-param>
299
- </xsl:call-template>
300
- <xsl:text>closed_loop</xsl:text>
301
- <xsl:if test="@overrun">
302
- <xsl:text> :overrun =&gt; </xsl:text>
303
- <xsl:value-of select="@overrun"/>
304
- <xsl:if test="@execution">
305
- <xsl:text>, :execution =&gt; :</xsl:text>
306
- <xsl:value-of select="@execution"/>
307
- </xsl:if>
308
- </xsl:if>
309
- <xsl:text> do</xsl:text>
310
- <xsl:call-template name="print-newline"/>
311
- <xsl:apply-templates>
312
- <xsl:with-param name="myspace">
313
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
314
- </xsl:with-param>
315
- </xsl:apply-templates>
316
- <xsl:call-template name="print-space">
317
- <xsl:with-param name="i">1</xsl:with-param>
318
- <xsl:with-param name="count">
319
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
320
- </xsl:with-param>
321
- </xsl:call-template>
322
- <xsl:text>end</xsl:text>
323
- <xsl:call-template name="print-newline"/>
324
- </xsl:if>
325
- <xsl:if test="name()='closed_loop_measuring' or name()='closed_loop_control'">
326
- <xsl:call-template name="print-space">
327
- <xsl:with-param name="i">1</xsl:with-param>
328
- <xsl:with-param name="count">
329
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
330
- </xsl:with-param>
331
- </xsl:call-template>
332
- <xsl:text>closed_loop_slice :type =&gt; :</xsl:text>
333
- <xsl:value-of select="substring(name(),13,10)"/>
334
- <xsl:if test="@ctime">
335
- <xsl:text>, :ctime =&gt; </xsl:text>
336
- <xsl:value-of select="@ctime"/>
337
- </xsl:if>
338
- <xsl:text> do</xsl:text>
339
- <xsl:call-template name="print-newline"/>
340
- <xsl:apply-templates>
341
- <xsl:with-param name="myspace">
342
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
343
- </xsl:with-param>
344
- </xsl:apply-templates>
345
- <xsl:call-template name="print-space">
346
- <xsl:with-param name="i">1</xsl:with-param>
347
- <xsl:with-param name="count">
348
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
349
- </xsl:with-param>
350
- </xsl:call-template>
351
- <xsl:text>end</xsl:text>
352
- <xsl:call-template name="print-newline"/>
353
- </xsl:if>
354
- <xsl:if test="name()='choose'">
355
- <xsl:call-template name="print-space">
356
- <xsl:with-param name="i">1</xsl:with-param>
357
- <xsl:with-param name="count">
358
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
359
- </xsl:with-param>
360
- </xsl:call-template>
361
- <xsl:text>choose</xsl:text>
362
- <xsl:choose>
363
- <xsl:when test="@eid">
364
- <xsl:text> :</xsl:text>
365
- <xsl:value-of select="@eid"/>
366
- </xsl:when>
367
- <xsl:otherwise>
368
- <xsl:text> :e</xsl:text>
369
- <xsl:for-each select="ancestor-or-self::*">
370
- <xsl:text>_</xsl:text>
371
- <xsl:value-of select="position()"/>
372
- </xsl:for-each>
373
- </xsl:otherwise>
374
- </xsl:choose>
375
- <xsl:choose>
376
- <xsl:when test="@mode='exclusive'">
377
- <xsl:text>, :exclusive</xsl:text>
378
- </xsl:when>
379
- <xsl:otherwise>
380
- <xsl:text>, :inclusive</xsl:text>
381
- </xsl:otherwise>
382
- </xsl:choose>
383
- <xsl:text> do</xsl:text>
384
- <xsl:call-template name="print-newline"/>
385
- <xsl:apply-templates>
386
- <xsl:with-param name="myspace">
387
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
388
- </xsl:with-param>
389
- </xsl:apply-templates>
390
- <xsl:call-template name="print-space">
391
- <xsl:with-param name="i">1</xsl:with-param>
392
- <xsl:with-param name="count">
393
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
394
- </xsl:with-param>
395
- </xsl:call-template>
396
- <xsl:text>end</xsl:text>
397
- <xsl:call-template name="print-newline"/>
398
- </xsl:if>
399
- <xsl:if test="name()='group'">
400
- <xsl:apply-templates>
401
- <xsl:with-param name="myspace">
402
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
403
- </xsl:with-param>
404
- </xsl:apply-templates>
405
- <xsl:call-template name="print-newline"/>
406
- </xsl:if>
407
- <xsl:if test="name()='critical'">
408
- <xsl:call-template name="print-space">
409
- <xsl:with-param name="i">1</xsl:with-param>
410
- <xsl:with-param name="count">
411
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
412
- </xsl:with-param>
413
- </xsl:call-template>
414
- <xsl:text>critical</xsl:text>
415
- <xsl:choose>
416
- <xsl:when test="@eid">
417
- <xsl:text> :</xsl:text>
418
- <xsl:value-of select="@eid"/>
419
- </xsl:when>
420
- <xsl:otherwise>
421
- <xsl:text> :e</xsl:text>
422
- <xsl:for-each select="ancestor-or-self::*">
423
- <xsl:text>_</xsl:text>
424
- <xsl:value-of select="position()"/>
425
- </xsl:for-each>
426
- </xsl:otherwise>
427
- </xsl:choose>
428
- <xsl:text>, :</xsl:text>
429
- <xsl:value-of select="@sid"/>
430
- <xsl:text> do</xsl:text>
431
- <xsl:call-template name="print-newline"/>
432
- <xsl:apply-templates>
433
- <xsl:with-param name="myspace">
434
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
435
- </xsl:with-param>
436
- </xsl:apply-templates>
437
- <xsl:call-template name="print-space">
438
- <xsl:with-param name="i">1</xsl:with-param>
439
- <xsl:with-param name="count">
440
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
441
- </xsl:with-param>
442
- </xsl:call-template>
443
- <xsl:text>end</xsl:text>
444
- <xsl:call-template name="print-newline"/>
445
- </xsl:if>
446
- </xsl:template>
447
- <xsl:template match="d:alternative">
448
- <xsl:param name="myspace"/>
449
- <xsl:call-template name="print-space">
450
- <xsl:with-param name="i">1</xsl:with-param>
451
- <xsl:with-param name="count">
452
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
453
- </xsl:with-param>
454
- </xsl:call-template>
455
- <xsl:text>alternative</xsl:text>
456
- <xsl:choose>
457
- <xsl:when test="@eid">
458
- <xsl:text> :</xsl:text>
459
- <xsl:value-of select="@eid"/>
460
- </xsl:when>
461
- <xsl:otherwise>
462
- <xsl:text> :e</xsl:text>
463
- <xsl:for-each select="ancestor-or-self::*">
464
- <xsl:text>_</xsl:text>
465
- <xsl:value-of select="position()"/>
466
- </xsl:for-each>
467
- </xsl:otherwise>
468
- </xsl:choose>
469
- <xsl:choose>
470
- <xsl:when test="@language='application/x-ruby'">
471
- <xsl:text>, test{</xsl:text>
472
- <xsl:value-of select="@condition"/>
473
- <xsl:text>}</xsl:text>
474
- </xsl:when>
475
- <xsl:otherwise>
476
- <xsl:text>, test("</xsl:text>
477
- <xsl:value-of select="str:replace(str:replace(@condition,'\','\\'),'&quot;','\&quot;')"/>
478
- <xsl:text>")</xsl:text>
479
- </xsl:otherwise>
480
- </xsl:choose>
481
- <xsl:for-each select="@*[not(name()='language' or name()='condition' or name()='svg-label')]">
482
- <xsl:text>, :</xsl:text>
483
- <xsl:value-of select="name(.)"/>
484
- <xsl:text> => "</xsl:text>
485
- <xsl:value-of select="."/>
486
- <xsl:text>"</xsl:text>
487
- </xsl:for-each>
488
- <xsl:text> do</xsl:text>
489
- <xsl:call-template name="print-newline"/>
490
- <xsl:apply-templates>
491
- <xsl:with-param name="myspace">
492
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
493
- </xsl:with-param>
494
- </xsl:apply-templates>
495
- <xsl:call-template name="print-space">
496
- <xsl:with-param name="i">1</xsl:with-param>
497
- <xsl:with-param name="count">
498
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
499
- </xsl:with-param>
500
- </xsl:call-template>
501
- <xsl:text>end</xsl:text>
502
- <xsl:call-template name="print-newline"/>
503
- </xsl:template>
504
- <xsl:template match="d:otherwise">
505
- <xsl:param name="myspace"/>
506
- <xsl:if test="*">
507
- <xsl:call-template name="print-space">
508
- <xsl:with-param name="i">1</xsl:with-param>
509
- <xsl:with-param name="count">
510
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
511
- </xsl:with-param>
512
- </xsl:call-template>
513
- <xsl:text>otherwise</xsl:text>
514
- <xsl:choose>
515
- <xsl:when test="@eid">
516
- <xsl:text> :</xsl:text>
517
- <xsl:value-of select="@eid"/>
518
- </xsl:when>
519
- <xsl:otherwise>
520
- <xsl:text> :e</xsl:text>
521
- <xsl:for-each select="ancestor-or-self::*">
522
- <xsl:text>_</xsl:text>
523
- <xsl:value-of select="position()"/>
524
- </xsl:for-each>
525
- </xsl:otherwise>
526
- </xsl:choose>
527
- <xsl:for-each select="@*[not(name()='language' or name()='condition' or name()='svg-label')]">
528
- <xsl:if test="position() &gt;1">, </xsl:if>
529
- <xsl:text>:</xsl:text>
530
- <xsl:value-of select="name(.)"/>
531
- <xsl:text> => "</xsl:text>
532
- <xsl:value-of select="."/>
533
- <xsl:text>"</xsl:text>
534
- </xsl:for-each>
535
- <xsl:text> do</xsl:text>
536
- <xsl:call-template name="print-newline"/>
537
- <xsl:apply-templates>
538
- <xsl:with-param name="myspace">
539
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
540
- </xsl:with-param>
541
- </xsl:apply-templates>
542
- <xsl:call-template name="print-space">
543
- <xsl:with-param name="i">1</xsl:with-param>
544
- <xsl:with-param name="count">
545
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
546
- </xsl:with-param>
547
- </xsl:call-template>
548
- <xsl:text>end</xsl:text>
549
- <xsl:call-template name="print-newline"/>
550
- </xsl:if>
551
- </xsl:template>
552
- <xsl:template match="d:parallel_branch">
553
- <xsl:param name="myspace"/>
554
- <xsl:call-template name="print-space">
555
- <xsl:with-param name="i">1</xsl:with-param>
556
- <xsl:with-param name="count">
557
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
558
- </xsl:with-param>
559
- </xsl:call-template>
560
- <xsl:text>parallel_branch</xsl:text>
561
- <xsl:choose>
562
- <xsl:when test="@eid">
563
- <xsl:text> :</xsl:text>
564
- <xsl:value-of select="@eid"/>
565
- </xsl:when>
566
- <xsl:otherwise>
567
- <xsl:text> :e</xsl:text>
568
- <xsl:for-each select="ancestor-or-self::*">
569
- <xsl:text>_</xsl:text>
570
- <xsl:value-of select="position()"/>
571
- </xsl:for-each>
572
- </xsl:otherwise>
573
- </xsl:choose>
574
- <xsl:text> do |local|</xsl:text>
575
- <xsl:call-template name="print-newline"/>
576
- <xsl:apply-templates>
577
- <xsl:with-param name="myspace">
578
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
579
- </xsl:with-param>
580
- </xsl:apply-templates>
581
- <xsl:call-template name="print-space">
582
- <xsl:with-param name="i">1</xsl:with-param>
583
- <xsl:with-param name="count">
584
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
585
- </xsl:with-param>
586
- </xsl:call-template>
587
- <xsl:text>end</xsl:text>
588
- <xsl:call-template name="print-newline"/>
589
- </xsl:template>
590
- <xsl:template match="d:parameters">
591
- <xsl:apply-templates select="d:label" mode="parameter"/>
592
- <xsl:apply-templates select="d:*[not(name()='label') and not(name()='color')]" mode="parameter"/>
593
- <xsl:if test="count(*) &gt; 0">, </xsl:if>
594
- <xsl:apply-templates select="../d:annotations" mode="annotations"/>
595
- </xsl:template>
596
- <xsl:template match="d:label" mode="parameter">
597
- <xsl:text>:</xsl:text>
598
- <xsl:value-of select="name()"/>
599
- <xsl:text> =&gt; "</xsl:text>
600
- <xsl:value-of select="str:replace(str:replace(text(),'\','\\'),'&quot;','\&quot;')"/>
601
- <xsl:text>"</xsl:text>
602
- </xsl:template>
603
- <xsl:template match="d:annotations" mode="annotations">
604
- <xsl:text>:</xsl:text>
605
- <xsl:value-of select="name()"/>
606
- <xsl:text> =&gt; </xsl:text>
607
- <xsl:text>{ </xsl:text>
608
- <xsl:apply-templates select="d:*" mode="simplemulti"/>
609
- <xsl:text> }</xsl:text>
610
- </xsl:template>
611
- <xsl:template match="d:*[not(name()='label')]" mode="parameter">
612
- <xsl:if test="count(preceding-sibling::*) &gt; 0">, </xsl:if>
613
- <xsl:text>:</xsl:text>
614
- <xsl:value-of select="name()"/>
615
- <xsl:text> =&gt; </xsl:text>
616
- <xsl:choose>
617
- <xsl:when test="count(*) &gt; 0 and name()='arguments'">
618
- <xsl:text>[</xsl:text>
619
- <xsl:apply-templates select="d:*" mode="sub"/>
620
- <xsl:text>]</xsl:text>
621
- </xsl:when>
622
- <xsl:when test="count(*) &gt; 0 and not(name()='arguments')">
623
- <xsl:text>{</xsl:text>
624
- <xsl:apply-templates select="d:*" mode="parameter"/>
625
- <xsl:text>}</xsl:text>
626
- </xsl:when>
627
- <xsl:when test="not(node())">
628
- <xsl:text>nil</xsl:text>
629
- </xsl:when>
630
- <xsl:otherwise>
631
- <xsl:value-of select="text()"/>
632
- </xsl:otherwise>
633
- </xsl:choose>
634
- </xsl:template>
635
- <xsl:template match="d:*" mode="plain">
636
- <xsl:if test="count(preceding-sibling::*) &gt; 0">, </xsl:if>
637
- <xsl:text>:</xsl:text>
638
- <xsl:value-of select="name()"/>
639
- <xsl:text> =&gt; </xsl:text>
640
- <xsl:choose>
641
- <xsl:when test="count(*) &gt; 0 and count(*) = count(*[name()=name(../*[1])])">
642
- <xsl:text>[</xsl:text>
643
- <xsl:apply-templates select="d:*" mode="plainmulti"/>
644
- <xsl:text>]</xsl:text>
645
- </xsl:when>
646
- <xsl:when test="count(*) &gt; 0">
647
- <xsl:text>{</xsl:text>
648
- <xsl:apply-templates select="d:*" mode="plain"/>
649
- <xsl:text>}</xsl:text>
650
- </xsl:when>
651
- <xsl:when test="not(node())">
652
- <xsl:text>nil</xsl:text>
653
- </xsl:when>
654
- <xsl:otherwise>
655
- <xsl:choose>
656
- <xsl:when test="substring(text(),1,1) = '!'">
657
- <xsl:text>🠊("</xsl:text>
658
- <xsl:value-of select="str:replace(str:replace(substring(text(),2),'\','\\'),'&quot;','\&quot;')"/>
659
- <xsl:text>")</xsl:text>
660
- </xsl:when>
661
- <xsl:otherwise>
662
- <xsl:text>"</xsl:text>
663
- <xsl:value-of select="str:replace(str:replace(text(),'\','\\'),'&quot;','\&quot;')"/>
664
- <xsl:text>"</xsl:text>
665
- </xsl:otherwise>
666
- </xsl:choose>
667
- </xsl:otherwise>
668
- </xsl:choose>
669
- </xsl:template>
670
- <xsl:template match="d:*" mode="plainmulti">
671
- <xsl:if test="count(preceding-sibling::*) &gt; 0">, </xsl:if>
672
- <xsl:text>{ </xsl:text>
673
- <xsl:text>:</xsl:text>
674
- <xsl:value-of select="name()"/>
675
- <xsl:text> =&gt; </xsl:text>
676
- <xsl:choose>
677
- <xsl:when test="count(*) &gt; 0">
678
- <xsl:text>{</xsl:text>
679
- <xsl:apply-templates select="d:*" mode="plain"/>
680
- <xsl:text>}</xsl:text>
681
- </xsl:when>
682
- <xsl:when test="not(node())">
683
- <xsl:text>nil</xsl:text>
684
- </xsl:when>
685
- <xsl:otherwise>
686
- <xsl:choose>
687
- <xsl:when test="substring(text(),1,1) = '!'">
688
- <xsl:text>🠊("</xsl:text>
689
- <xsl:value-of select="str:replace(str:replace(substring(text(),2),'\','\\'),'&quot;','\&quot;')"/>
690
- <xsl:text>")</xsl:text>
691
- </xsl:when>
692
- <xsl:otherwise>
693
- <xsl:text>"</xsl:text>
694
- <xsl:value-of select="str:replace(str:replace(text(),'\','\\'),'&quot;','\&quot;')"/>
695
- <xsl:text>"</xsl:text>
696
- </xsl:otherwise>
697
- </xsl:choose>
698
- </xsl:otherwise>
699
- </xsl:choose>
700
- <xsl:text> }</xsl:text>
701
- </xsl:template>
702
- <xsl:template match="d:*" mode="simplemulti">
703
- <xsl:if test="count(preceding-sibling::*) &gt; 0">, </xsl:if>
704
- <xsl:text>:</xsl:text>
705
- <xsl:value-of select="name()"/>
706
- <xsl:text> =&gt; </xsl:text>
707
- <xsl:choose>
708
- <xsl:when test="count(*) &gt; 0">
709
- <xsl:text>{</xsl:text>
710
- <xsl:apply-templates select="d:*" mode="plain"/>
711
- <xsl:text>}</xsl:text>
712
- </xsl:when>
713
- <xsl:when test="not(node())">
714
- <xsl:text>nil</xsl:text>
715
- </xsl:when>
716
- <xsl:otherwise>
717
- <xsl:choose>
718
- <xsl:when test="substring(text(),1,1) = '!'">
719
- <xsl:text>🠊("</xsl:text>
720
- <xsl:value-of select="str:replace(str:replace(substring(text(),2),'\','\\'),'&quot;','\&quot;')"/>
721
- <xsl:text>")</xsl:text>
722
- </xsl:when>
723
- <xsl:otherwise>
724
- <xsl:text>"</xsl:text>
725
- <xsl:value-of select="str:replace(str:replace(text(),'\','\\'),'&quot;','\&quot;')"/>
726
- <xsl:text>"</xsl:text>
727
- </xsl:otherwise>
728
- </xsl:choose>
729
- </xsl:otherwise>
730
- </xsl:choose>
731
- </xsl:template>
732
- <xsl:template name="format-name">
733
- <xsl:param name="tname"/>
734
- <xsl:choose>
735
- <xsl:when test="contains($tname,'-')">
736
- <xsl:text>'</xsl:text>
737
- <xsl:value-of select="$tname"/>
738
- <xsl:text>'</xsl:text>
739
- </xsl:when>
740
- <xsl:otherwise>
741
- <xsl:value-of select="$tname"/>
742
- </xsl:otherwise>
743
- </xsl:choose>
744
- </xsl:template>
745
- <xsl:template match="d:*" mode="sub">
746
- <xsl:if test="not(@rngui-nonfunctional)">
747
- <xsl:if test="count(preceding-sibling::*[not(@rngui-nonfunctional)]) &gt; 0">, </xsl:if>
748
- <xsl:text>⭐(</xsl:text>
749
- <xsl:text>:name =&gt; :</xsl:text>
750
- <xsl:choose>
751
- <xsl:when test="substring(name(),1,1) = '_'">
752
- <xsl:call-template name="format-name">
753
- <xsl:with-param name="tname">
754
- <xsl:value-of select="substring(name(),2)"/>
755
- </xsl:with-param>
756
- </xsl:call-template>
757
- </xsl:when>
758
- <xsl:otherwise>
759
- <xsl:call-template name="format-name">
760
- <xsl:with-param name="tname">
761
- <xsl:value-of select="name()"/>
762
- </xsl:with-param>
763
- </xsl:call-template>
764
- </xsl:otherwise>
765
- </xsl:choose>
766
- <xsl:text>, :value =&gt; </xsl:text>
767
- <xsl:choose>
768
- <xsl:when test="not(node())">
769
- <xsl:text>nil</xsl:text>
770
- </xsl:when>
771
- <xsl:when test="child::node()[not(self::text())]">
772
- <!-- FUUUU, there is probably much more TODO. Updated Matthias und Juergen, we tested for ing-opcua/execute -->
773
- <xsl:choose>
774
- <xsl:when test="child::* and name(child::*)=concat(name(.),'_item') and count(child::*[not(name()=name(../child::*[1]))])=0">
775
- <xsl:text>[ </xsl:text>
776
- <xsl:apply-templates select="*" mode="JSONArrayItem"/>
777
- <xsl:text>]</xsl:text>
778
- </xsl:when>
779
- <xsl:otherwise>
780
- <xsl:text>{ </xsl:text>
781
- <xsl:apply-templates select="*" mode="JSONSUB"/>
782
- <xsl:text>}</xsl:text>
783
- </xsl:otherwise>
784
- </xsl:choose>
785
- </xsl:when>
786
- <xsl:otherwise>
787
- <xsl:choose>
788
- <xsl:when test="substring(text(),1,1) = '!'">
789
- <xsl:text>🠊("</xsl:text>
790
- <xsl:value-of select="str:replace(str:replace(substring(text(),2),'\','\\'),'&quot;','\&quot;')"/>
791
- <xsl:text>")</xsl:text>
792
- </xsl:when>
793
- <xsl:otherwise>
794
- <xsl:text>"</xsl:text>
795
- <xsl:value-of select="str:replace(str:replace(text(),'\','\\'),'&quot;','\&quot;')"/>
796
- <xsl:text>"</xsl:text>
797
- </xsl:otherwise>
798
- </xsl:choose>
799
- </xsl:otherwise>
800
- </xsl:choose>
801
- <xsl:text> </xsl:text>
802
- <xsl:for-each select="@*">
803
- <xsl:text>, :</xsl:text>
804
- <xsl:value-of select="name()"/>
805
- <xsl:text> =&gt; "</xsl:text>
806
- <xsl:value-of select="string(.)"/>
807
- <xsl:text>"</xsl:text>
808
- </xsl:for-each>
809
- <xsl:text>)</xsl:text>
810
- </xsl:if>
811
- </xsl:template>
812
-
813
- <xsl:template match="d:finalize | d:update | d:prepare | d:rescue" mode="part-of-call">
814
- <xsl:param name="myspace"/>
815
- <xsl:call-template name="print-content">
816
- <xsl:with-param name="myspace">
817
- <xsl:value-of select="$myspace"/>
818
- </xsl:with-param>
819
- </xsl:call-template>
820
- </xsl:template>
821
- <xsl:template name="print-content">
822
- <xsl:param name="myspace"/>
823
- <xsl:if test="text()">
824
- <xsl:for-each select="str:tokenize(text(), '&#x0A;')">
825
- <xsl:value-of select="concat('&#x0A;',concat(str:padding($myspace+$myspacemultiplier+$myspacemultiplier),str:replace(str:replace(str:replace(string(.),'\','\\'),'&quot;','\&quot;'),'#','\#')))" />
826
- </xsl:for-each>
827
- <xsl:call-template name="print-newline"/>
828
- <xsl:call-template name="print-space">
829
- <xsl:with-param name="i">1</xsl:with-param>
830
- <xsl:with-param name="count">
831
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
832
- </xsl:with-param>
833
- </xsl:call-template>
834
- <xsl:text>END</xsl:text>
835
- </xsl:if>
836
- </xsl:template>
837
- <xsl:template name="print-mcontent">
838
- <xsl:param name="myspace"/>
839
- <xsl:if test="d:code/text()">
840
- <xsl:choose>
841
- <xsl:when test="@language='application/x-ruby'">
842
- <xsl:text> do </xsl:text>
843
- <xsl:if test="@output">
844
- <xsl:text>|</xsl:text>
845
- <xsl:value-of select="@output"/>
846
- <xsl:text>|</xsl:text>
847
- </xsl:if>
848
- </xsl:when>
849
- <xsl:otherwise>
850
- <xsl:text>, &lt;&lt;-END</xsl:text>
851
- </xsl:otherwise>
852
- </xsl:choose>
853
- <xsl:for-each select="str:tokenize(d:code/text(), '&#x0A;')">
854
- <xsl:value-of select="concat('&#x0A;',concat(str:padding($myspace+$myspacemultiplier+$myspacemultiplier),str:replace(str:replace(str:replace(string(.),'\','\\'),'&quot;','\&quot;'),'#','\#')))" />
855
- </xsl:for-each>
856
- <xsl:call-template name="print-newline"/>
857
- <xsl:call-template name="print-space">
858
- <xsl:with-param name="i">1</xsl:with-param>
859
- <xsl:with-param name="count">
860
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
861
- </xsl:with-param>
862
- </xsl:call-template>
863
- <xsl:choose>
864
- <xsl:when test="@language='application/x-ruby'">
865
- <xsl:text>end</xsl:text>
866
- </xsl:when>
867
- <xsl:otherwise>
868
- <xsl:text>END</xsl:text>
869
- </xsl:otherwise>
870
- </xsl:choose>
871
- </xsl:if>
872
- </xsl:template>
873
- <xsl:template name="print-space">
874
- <xsl:param name="i"/>
875
- <xsl:param name="count"/>
876
- <xsl:if test="$i &lt;= $count">
877
- <xsl:text> </xsl:text>
878
- <xsl:call-template name="print-space">
879
- <xsl:with-param name="i">
880
- <xsl:value-of select="$i + 1"/>
881
- </xsl:with-param>
882
- <xsl:with-param name="count">
883
- <xsl:value-of select="$count"/>
884
- </xsl:with-param>
885
- </xsl:call-template>
886
- </xsl:if>
887
- </xsl:template>
888
- <xsl:template name="print-newline">
889
- <xsl:text>
890
- </xsl:text>
891
- </xsl:template>
892
-
893
- <!-- JSON Element -->
894
- <xsl:template match="*" mode="JSON">
895
- <xsl:call-template name="JSONProperties"/>
896
- <xsl:choose>
897
- <xsl:when test="following-sibling::*">, </xsl:when>
898
- <xsl:otherwise><xsl:text> </xsl:text></xsl:otherwise>
899
- </xsl:choose>
900
- </xsl:template>
901
-
902
- <xsl:template match="*" mode="JSONSUB">
903
- <xsl:text>"</xsl:text>
904
- <xsl:value-of select="name()"/>
905
- <xsl:text>": </xsl:text>
906
- <xsl:call-template name="JSONProperties">
907
- <xsl:with-param name="parent" select="'Yes'"></xsl:with-param>
908
- </xsl:call-template>
909
- <xsl:choose>
910
- <xsl:when test="following-sibling::*">, </xsl:when>
911
- <xsl:otherwise><xsl:text> </xsl:text></xsl:otherwise>
912
- </xsl:choose>
913
- </xsl:template>
914
-
915
- <!-- JSON Array Element -->
916
- <xsl:template match="*" mode="JSONArrayElement">
917
- <xsl:call-template name="JSONProperties"/>
918
- <xsl:choose>
919
- <xsl:when test="following-sibling::*">, </xsl:when>
920
- <xsl:otherwise><xsl:text> </xsl:text></xsl:otherwise>
921
- </xsl:choose>
922
- </xsl:template>
923
- <xsl:template match="*" mode="JSONArrayItem">
924
- <xsl:call-template name="JSONProperties">
925
- <xsl:with-param name="parent" select="'Yes'"></xsl:with-param>
926
- </xsl:call-template>
927
- <xsl:choose>
928
- <xsl:when test="following-sibling::*">, </xsl:when>
929
- <xsl:otherwise><xsl:text> </xsl:text></xsl:otherwise>
930
- </xsl:choose>
931
- </xsl:template>
932
-
933
- <!-- JSON Object Properties -->
934
- <xsl:template name="JSONProperties">
935
- <xsl:param name="parent"></xsl:param>
936
- <xsl:variable name="childName" select="name(*[1])"/>
937
- <xsl:choose>
938
- <xsl:when test="not(*|@*)">
939
- <xsl:choose>
940
- <xsl:when test="$parent='Yes'">
941
- <xsl:choose>
942
- <xsl:when test="string(number(.)) = .">
943
- <xsl:value-of select="."/>
944
- </xsl:when>
945
- <xsl:otherwise>
946
- <xsl:choose>
947
- <xsl:when test="substring(.,1,1) = '!'">
948
- <xsl:text>🠊("</xsl:text>
949
- <xsl:value-of select="str:replace(str:replace(substring(.,2),'\','\\'),'&quot;','\&quot;')"/>
950
- <xsl:text>")</xsl:text>
951
- </xsl:when>
952
- <xsl:otherwise>
953
- <xsl:text>"</xsl:text>
954
- <xsl:value-of select="str:replace(str:replace(.,'\','\\'),'&quot;','\&quot;')"/>
955
- <xsl:text>"</xsl:text>
956
- </xsl:otherwise>
957
- </xsl:choose>
958
- </xsl:otherwise>
959
- </xsl:choose>
960
- </xsl:when>
961
- <xsl:otherwise>
962
- <xsl:text>"</xsl:text>
963
- <xsl:value-of select="name()"/>
964
- <xsl:text>": </xsl:text>
965
- <xsl:choose>
966
- <xsl:when test="string(number(.)) = .">
967
- <xsl:value-of select="."/>
968
- </xsl:when>
969
- <xsl:otherwise>
970
- <xsl:text>"</xsl:text>
971
- <xsl:choose>
972
- <xsl:when test="substring(.,1,1) = '!'">
973
- <xsl:text>>🠊("</xsl:text>
974
- <xsl:value-of select="str:replace(str:replace(substring(.,2),'\','\\'),'&quot;','\&quot;')"/>
975
- <xsl:text>")</xsl:text>
976
- </xsl:when>
977
- <xsl:otherwise>
978
- <xsl:value-of select="str:replace(str:replace(.,'\','\\'),'&quot;','\&quot;')"/>
979
- </xsl:otherwise>
980
- </xsl:choose>
981
- <xsl:text>"</xsl:text>
982
- </xsl:otherwise>
983
- </xsl:choose>
984
- </xsl:otherwise>
985
- </xsl:choose>
986
- </xsl:when>
987
- <xsl:when test="count(*[name()=$childName]) > 1">
988
- <xsl:text>{ "</xsl:text>
989
- <xsl:value-of select="$childName"/>
990
- <xsl:text>": [ </xsl:text>
991
- <xsl:apply-templates select="*" mode="JSONArrayElement"/>
992
- <xsl:text>] }</xsl:text>
993
- </xsl:when>
994
- <xsl:otherwise>
995
- <xsl:if test="text()[normalize-space(.)]">
996
- <xsl:text>[ </xsl:text>
997
- </xsl:if>
998
- <xsl:text>{ </xsl:text>
999
- <xsl:apply-templates select="@*" mode="JSONSUB"/>
1000
- <xsl:apply-templates select="*" mode="JSONSUB"/>
1001
- <xsl:text>}</xsl:text>
1002
- <xsl:if test="text()[normalize-space(.)]">
1003
- <xsl:text>, </xsl:text>
1004
- <xsl:text>"</xsl:text>
1005
- <xsl:choose>
1006
- <xsl:when test="substring(.,1,1) = '!'">
1007
- <xsl:text>>🠊("</xsl:text>
1008
- <xsl:value-of select="str:replace(str:replace(substring(.,2),'\','\\'),'&quot;','\&quot;')"/>
1009
- <xsl:text>")</xsl:text>
1010
- </xsl:when>
1011
- <xsl:otherwise>
1012
- <xsl:value-of select="str:replace(str:replace(.,'\','\\'),'&quot;','\&quot;')"/>
1013
- </xsl:otherwise>
1014
- </xsl:choose>
1015
- <xsl:text>"</xsl:text>
1016
- <xsl:text>]</xsl:text>
1017
- </xsl:if>
1018
- </xsl:otherwise>
1019
- </xsl:choose>
1020
- </xsl:template>
1021
-
1022
- <!-- JSON Attribute Property -->
1023
- <xsl:template match="@*" mode="JSONSUB">
1024
- <xsl:text>"@</xsl:text>
1025
- <xsl:value-of select="name()"/>
1026
- <xsl:text>": </xsl:text>
1027
- <xsl:choose>
1028
- <xsl:when test="number(.) = .">
1029
- <xsl:value-of select="."/>
1030
- </xsl:when>
1031
- <xsl:otherwise>
1032
- <xsl:text>"</xsl:text>
1033
- <xsl:choose>
1034
- <xsl:when test="substring(.,1,1) = '!'">
1035
- <xsl:text>>🠊("</xsl:text>
1036
- <xsl:value-of select="str:replace(str:replace(substring(.,2),'\','\\'),'&quot;','\&quot;')"/>
1037
- <xsl:text>")</xsl:text>
1038
- </xsl:when>
1039
- <xsl:otherwise>
1040
- <xsl:value-of select="str:replace(str:replace(.,'\','\\'),'&quot;','\&quot;')"/>
1041
- </xsl:otherwise>
1042
- </xsl:choose>
1043
- <xsl:text>"</xsl:text>
1044
- </xsl:otherwise>
1045
- </xsl:choose>
1046
- <xsl:choose>
1047
- <xsl:when test="not(position() = last())">
1048
- <xsl:text>, </xsl:text>
1049
- </xsl:when>
1050
- <xsl:otherwise>
1051
- <xsl:text> </xsl:text>
1052
- </xsl:otherwise>
1053
- </xsl:choose>
1054
- </xsl:template>
1055
- </xsl:stylesheet>