cpee 1.3.201 → 1.3.202

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.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/cockpit/css/wfadaptor.css +6 -0
  3. data/cockpit/index.html +0 -21
  4. data/cockpit/testsets/Lego Crane.xml +113 -0
  5. data/cockpit/testsets/Lego Ejector.xml +2 -2
  6. data/cockpit/testsets/Lego Plate.xml +36 -0
  7. data/cockpit/testsets/testsets.xml +2 -1
  8. data/cockpit/themes/default/theme.js +1 -1
  9. data/cpee.gemspec +1 -1
  10. data/server/handlerwrappers/default.rb +9 -9
  11. data/server/instances/1/properties.xml +33 -33
  12. data/server/instances/10/properties.xml +10 -128
  13. data/server/instances/11/properties.xml +34 -122
  14. data/server/instances/12/properties.xml +24 -22
  15. data/server/instances/13/properties.xml +32 -120
  16. data/server/instances/14/properties.xml +107 -69
  17. data/server/instances/15/properties.xml +40 -85
  18. data/server/instances/16/properties.xml +36 -87
  19. data/server/instances/17/properties.xml +9 -128
  20. data/server/instances/18/notifications/b4e45a42c61d03b052d768c1693af99f/consumer-secret +1 -0
  21. data/server/instances/18/notifications/b4e45a42c61d03b052d768c1693af99f/producer-secret +1 -0
  22. data/server/instances/{69/notifications/4fa830eafc09f4c0d0070a3453cac985 → 18/notifications/b4e45a42c61d03b052d768c1693af99f}/subscription.xml +7 -3
  23. data/server/instances/18/properties.xml +24 -24
  24. data/server/instances/2/properties.xml +9 -808
  25. data/server/instances/3/properties.xml +39 -7
  26. data/server/instances/4/properties.xml +30 -117
  27. data/server/instances/5/properties.xml +28 -115
  28. data/server/instances/6/properties.xml +11 -129
  29. data/server/instances/7/properties.xml +30 -117
  30. data/server/instances/8/properties.xml +10 -128
  31. data/server/instances/9/properties.xml +39 -7
  32. data/server/resources/transformation_dslx.xsl +35 -28
  33. data/server/weel.rb +1 -0
  34. metadata +8 -69
  35. data/server/instances/19/properties.xml +0 -115
  36. data/server/instances/20/properties.xml +0 -114
  37. data/server/instances/21/notifications/0851248d60c898cadd743d0dd5b6d273/consumer-secret +0 -1
  38. data/server/instances/21/notifications/0851248d60c898cadd743d0dd5b6d273/producer-secret +0 -1
  39. data/server/instances/21/notifications/0851248d60c898cadd743d0dd5b6d273/subscription.xml +0 -6
  40. data/server/instances/21/notifications/b7bac3f3010d433ce5d8f29338a06f9a/consumer-secret +0 -1
  41. data/server/instances/21/notifications/b7bac3f3010d433ce5d8f29338a06f9a/producer-secret +0 -1
  42. data/server/instances/21/notifications/b7bac3f3010d433ce5d8f29338a06f9a/subscription.xml +0 -23
  43. data/server/instances/21/properties.xml +0 -150
  44. data/server/instances/22/properties.xml +0 -114
  45. data/server/instances/23/properties.xml +0 -89
  46. data/server/instances/24/properties.xml +0 -169
  47. data/server/instances/25/properties.xml +0 -150
  48. data/server/instances/26/properties.xml +0 -114
  49. data/server/instances/27/properties.xml +0 -142
  50. data/server/instances/28/properties.xml +0 -150
  51. data/server/instances/29/properties.xml +0 -150
  52. data/server/instances/30/properties.xml +0 -114
  53. data/server/instances/31/properties.xml +0 -150
  54. data/server/instances/32/properties.xml +0 -31
  55. data/server/instances/33/properties.xml +0 -150
  56. data/server/instances/34/properties.xml +0 -150
  57. data/server/instances/35/properties.xml +0 -150
  58. data/server/instances/36/properties.xml +0 -165
  59. data/server/instances/37/properties.xml +0 -114
  60. data/server/instances/38/properties.xml +0 -163
  61. data/server/instances/39/log.xes +0 -137
  62. data/server/instances/39/properties.xml +0 -177
  63. data/server/instances/40/properties.xml +0 -45
  64. data/server/instances/41/log.xes +0 -138
  65. data/server/instances/41/properties.xml +0 -177
  66. data/server/instances/42/log.xes +0 -138
  67. data/server/instances/42/properties.xml +0 -177
  68. data/server/instances/43/log.xes +0 -138
  69. data/server/instances/43/properties.xml +0 -177
  70. data/server/instances/44/log.xes +0 -138
  71. data/server/instances/44/properties.xml +0 -177
  72. data/server/instances/45/log.xes +0 -10
  73. data/server/instances/45/properties.xml +0 -177
  74. data/server/instances/46/properties.xml +0 -31
  75. data/server/instances/47/properties.xml +0 -150
  76. data/server/instances/48/log.xes +0 -122
  77. data/server/instances/48/properties.xml +0 -187
  78. data/server/instances/49/properties.xml +0 -187
  79. data/server/instances/50/properties.xml +0 -114
  80. data/server/instances/51/properties.xml +0 -130
  81. data/server/instances/52/properties.xml +0 -130
  82. data/server/instances/53/properties.xml +0 -31
  83. data/server/instances/54/properties.xml +0 -130
  84. data/server/instances/55/properties.xml +0 -31
  85. data/server/instances/56/properties.xml +0 -31
  86. data/server/instances/57/properties.xml +0 -561
  87. data/server/instances/58/properties.xml +0 -550
  88. data/server/instances/59/properties.xml +0 -418
  89. data/server/instances/60/properties.xml +0 -150
  90. data/server/instances/61/properties.xml +0 -150
  91. data/server/instances/62/properties.xml +0 -114
  92. data/server/instances/63/properties.xml +0 -150
  93. data/server/instances/64/properties.xml +0 -114
  94. data/server/instances/65/properties.xml +0 -114
  95. data/server/instances/66/properties.xml +0 -114
  96. data/server/instances/67/properties.xml +0 -114
  97. data/server/instances/68/properties.xml +0 -112
  98. data/server/instances/69/notifications/4fa830eafc09f4c0d0070a3453cac985/consumer-secret +0 -1
  99. data/server/instances/69/notifications/4fa830eafc09f4c0d0070a3453cac985/producer-secret +0 -1
  100. data/server/instances/69/properties.xml +0 -114
@@ -1,94 +1,38 @@
1
1
  <properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
2
2
  <attributes>
3
- <info>Enter info here</info>
3
+ <uuid>940fbdeb-6d49-402c-86b6-3115f6feb620</uuid>
4
+ <info>Lego Plate</info>
4
5
  <modeltype>CPEE</modeltype>
5
- <uuid>851b2fc3-d88a-4018-8af9-a0681def8bc9</uuid>
6
6
  </attributes>
7
- <state>ready</state>
7
+ <state>stopped</state>
8
8
  <handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
9
9
  <positions/>
10
10
  <dataelements>
11
- <persons>3</persons>
12
- <card>Visa_12345</card>
13
- <airline>null</airline>
14
- <hotels>[]</hotels>
15
- <from>Vienna</from>
16
- <to>Prague</to>
17
- <costs>0</costs>
11
+ <i>0</i>
18
12
  </dataelements>
19
13
  <endpoints>
20
- <bookAir>http://gruppe.wst.univie.ac.at/~mangler/services/airline.php</bookAir>
21
- <bookHotel>http://gruppe.wst.univie.ac.at/~mangler/services/hotel.php</bookHotel>
22
- <approve>http://gruppe.wst.univie.ac.at/~mangler/services/approval.php</approve>
14
+ <timeout>http://gruppe.wst.univie.ac.at/~mangler/services/timeout.php</timeout>
15
+ <move>http://plate.wst.univie.ac.at:9200/go-next</move>
23
16
  </endpoints>
24
- <dsl>call :a1, :bookAir, parameters: { :method =&gt; :post, :parameters =&gt; {:from =&gt; data.from, :to =&gt; data.to, :persons =&gt; data.persons} }, finalize: &lt;&lt;-END
25
- data.airline = result.value('id')
26
- data.costs += result.value('costs').to_f
27
- status.update 1, 'Hotel'
28
- END
29
- parallel do
30
- loop pre_test{data.persons &gt; 0} do
31
- parallel_branch data.persons do |p|
32
- call :a2, :bookHotel, parameters: { :method =&gt; :post, :parameters =&gt; {:to =&gt; data.to} }, finalize: &lt;&lt;-END
33
- data.hotels &lt;&lt; result.value('id')
34
- data.costs += result.value('costs').to_f
35
- END
36
- end
37
- manipulate :a3, &lt;&lt;-END
38
- data.persons -= 1
39
- END
40
- end
41
- end
42
- choose :inclusive do
43
- alternative "data.costs &gt; 700" do
44
- call :a4, :approve, parameters: { :method =&gt; :post, :parameters =&gt; {:costs =&gt; data.costs} }
45
- end
17
+ <dsl>loop pre_test{i&lt;2} do
18
+ call :a1, :move, parameters: { :label =&gt; "Move to next station", :method =&gt; :post, :arguments =&gt; nil }, finalize: &lt;&lt;-END
19
+ data.i= data.i + 1
20
+ END
46
21
  end
47
22
  </dsl>
48
23
  <dslx>
49
24
  <description xmlns="http://cpee.org/ns/description/1.0">
50
- <call id="a1" endpoint="bookAir">
51
- <parameters>
52
- <method>:post</method>
25
+ <loop mode="pre_test" condition="i&lt;2">
26
+ <call id="a1" endpoint="move">
53
27
  <parameters>
54
- <from>data.from</from>
55
- <to>data.to</to>
56
- <persons>data.persons</persons>
28
+ <label>Move to next station</label>
29
+ <method>:post</method>
30
+ <arguments/>
57
31
  </parameters>
58
- </parameters>
59
- <finalize output="result"> data.airline = result.value('id')
60
- data.costs += result.value('costs').to_f
61
- status.update 1, 'Hotel'</finalize>
62
- </call>
63
- <parallel>
64
- <loop pre_test="data.persons &gt; 0">
65
- <parallel_branch pass="data.persons" local="p">
66
- <call id="a2" endpoint="bookHotel">
67
- <parameters>
68
- <method>:post</method>
69
- <parameters>
70
- <to>data.to</to>
71
- </parameters>
72
- </parameters>
73
- <finalize output="result"> data.hotels &lt;&lt; result.value('id')
74
- data.costs += result.value('costs').to_f</finalize>
75
- </call>
76
- </parallel_branch>
77
- <manipulate id="a3"> data.persons -= 1</manipulate>
78
- </loop>
79
- </parallel>
80
- <choose>
81
- <alternative condition="data.costs &gt; 700">
82
- <call id="a4" endpoint="approve">
83
- <parameters>
84
- <method>:post</method>
85
- <parameters>
86
- <costs>data.costs</costs>
87
- </parameters>
88
- </parameters>
89
- </call>
90
- </alternative>
91
- </choose>
32
+ <finalize output="result">data.i= data.i + 1</finalize>
33
+ <update output="result"/>
34
+ </call>
35
+ </loop>
92
36
  </description>
93
37
  </dslx>
94
38
  <status>
@@ -97,53 +41,22 @@ end
97
41
  </status>
98
42
  <description>
99
43
  <description xmlns="http://cpee.org/ns/description/1.0">
100
- <call id="a1" endpoint="bookAir">
101
- <parameters>
102
- <method>:post</method>
44
+ <loop mode="pre_test" condition="i&lt;2">
45
+ <call id="a1" endpoint="move">
103
46
  <parameters>
104
- <from>data.from</from>
105
- <to>data.to</to>
106
- <persons>data.persons</persons>
47
+ <label>Move to next station</label>
48
+ <method>:post</method>
49
+ <arguments/>
107
50
  </parameters>
108
- </parameters>
109
- <finalize output="result"> data.airline = result.value('id')
110
- data.costs += result.value('costs').to_f
111
- status.update 1, 'Hotel'</finalize>
112
- </call>
113
- <parallel>
114
- <loop pre_test="data.persons &gt; 0">
115
- <parallel_branch pass="data.persons" local="p">
116
- <call id="a2" endpoint="bookHotel">
117
- <parameters>
118
- <method>:post</method>
119
- <parameters>
120
- <to>data.to</to>
121
- </parameters>
122
- </parameters>
123
- <finalize output="result"> data.hotels &lt;&lt; result.value('id')
124
- data.costs += result.value('costs').to_f</finalize>
125
- </call>
126
- </parallel_branch>
127
- <manipulate id="a3"> data.persons -= 1</manipulate>
128
- </loop>
129
- </parallel>
130
- <choose>
131
- <alternative condition="data.costs &gt; 700">
132
- <call id="a4" endpoint="approve">
133
- <parameters>
134
- <method>:post</method>
135
- <parameters>
136
- <costs>data.costs</costs>
137
- </parameters>
138
- </parameters>
139
- </call>
140
- </alternative>
141
- </choose>
51
+ <finalize output="result">data.i= data.i + 1</finalize>
52
+ <update output="result"/>
53
+ </call>
54
+ </loop>
142
55
  </description>
143
56
  </description>
144
57
  <transformation>
145
58
  <description type="copy"/>
146
- <dataelements type="rest"/>
147
- <endpoints type="rest"/>
59
+ <dataelements type="none"/>
60
+ <endpoints type="none"/>
148
61
  </transformation>
149
62
  </properties>
@@ -1,149 +1,31 @@
1
1
  <properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
2
2
  <attributes>
3
- <info>Enter info here</info>
3
+ <uuid>616685f1-763a-4812-878c-4f78847569f3</uuid>
4
+ <info/>
4
5
  <modeltype>CPEE</modeltype>
5
- <uuid>7fdbb97e-6594-4edf-9bf1-725eeb05f841</uuid>
6
+ <theme>default</theme>
6
7
  </attributes>
7
8
  <state>ready</state>
8
9
  <handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
9
10
  <positions/>
10
- <dataelements>
11
- <persons>3</persons>
12
- <card>Visa_12345</card>
13
- <airline>null</airline>
14
- <hotels>[]</hotels>
15
- <from>Vienna</from>
16
- <to>Prague</to>
17
- <costs>0</costs>
18
- </dataelements>
11
+ <dataelements/>
19
12
  <endpoints>
20
- <bookAir>http://gruppe.wst.univie.ac.at/~mangler/services/airline.php</bookAir>
21
- <bookHotel>http://gruppe.wst.univie.ac.at/~mangler/services/hotel.php</bookHotel>
22
- <approve>http://gruppe.wst.univie.ac.at/~mangler/services/approval.php</approve>
13
+ <timeout>http://gruppe.wst.univie.ac.at/~mangler/services/timeout.php</timeout>
23
14
  </endpoints>
24
- <dsl>call :a1, :bookAir, parameters: { :method =&gt; :post, :parameters =&gt; {:from =&gt; data.from, :to =&gt; data.to, :persons =&gt; data.persons} }, finalize: &lt;&lt;-END
25
- data.airline = result.value('id')
26
- data.costs += result.value('costs').to_f
27
- status.update 1, 'Hotel'
28
- END
29
- parallel do
30
- loop pre_test{data.persons &gt; 0} do
31
- parallel_branch data.persons do |p|
32
- call :a2, :bookHotel, parameters: { :method =&gt; :post, :parameters =&gt; {:to =&gt; data.to} }, finalize: &lt;&lt;-END
33
- data.hotels &lt;&lt; result.value('id')
34
- data.costs += result.value('costs').to_f
35
- END
36
- end
37
- manipulate :a3, &lt;&lt;-END
38
- data.persons -= 1
39
- END
40
- end
41
- end
42
- choose :inclusive do
43
- alternative "data.costs &gt; 700" do
44
- call :a4, :approve, parameters: { :method =&gt; :post, :parameters =&gt; {:costs =&gt; data.costs} }
45
- end
46
- end
47
- </dsl>
15
+ <dsl/>
48
16
  <dslx>
49
- <description xmlns="http://cpee.org/ns/description/1.0">
50
- <call id="a1" endpoint="bookAir">
51
- <parameters>
52
- <method>:post</method>
53
- <parameters>
54
- <from>data.from</from>
55
- <to>data.to</to>
56
- <persons>data.persons</persons>
57
- </parameters>
58
- </parameters>
59
- <finalize output="result"> data.airline = result.value('id')
60
- data.costs += result.value('costs').to_f
61
- status.update 1, 'Hotel'</finalize>
62
- </call>
63
- <parallel>
64
- <loop pre_test="data.persons &gt; 0">
65
- <parallel_branch pass="data.persons" local="p">
66
- <call id="a2" endpoint="bookHotel">
67
- <parameters>
68
- <method>:post</method>
69
- <parameters>
70
- <to>data.to</to>
71
- </parameters>
72
- </parameters>
73
- <finalize output="result"> data.hotels &lt;&lt; result.value('id')
74
- data.costs += result.value('costs').to_f</finalize>
75
- </call>
76
- </parallel_branch>
77
- <manipulate id="a3"> data.persons -= 1</manipulate>
78
- </loop>
79
- </parallel>
80
- <choose>
81
- <alternative condition="data.costs &gt; 700">
82
- <call id="a4" endpoint="approve">
83
- <parameters>
84
- <method>:post</method>
85
- <parameters>
86
- <costs>data.costs</costs>
87
- </parameters>
88
- </parameters>
89
- </call>
90
- </alternative>
91
- </choose>
92
- </description>
17
+ <description xmlns="http://cpee.org/ns/description/1.0"/>
93
18
  </dslx>
94
19
  <status>
95
20
  <id>0</id>
96
21
  <message>undefined</message>
97
22
  </status>
98
23
  <description>
99
- <description xmlns="http://cpee.org/ns/description/1.0">
100
- <call id="a1" endpoint="bookAir">
101
- <parameters>
102
- <method>:post</method>
103
- <parameters>
104
- <from>data.from</from>
105
- <to>data.to</to>
106
- <persons>data.persons</persons>
107
- </parameters>
108
- </parameters>
109
- <finalize output="result"> data.airline = result.value('id')
110
- data.costs += result.value('costs').to_f
111
- status.update 1, 'Hotel'</finalize>
112
- </call>
113
- <parallel>
114
- <loop pre_test="data.persons &gt; 0">
115
- <parallel_branch pass="data.persons" local="p">
116
- <call id="a2" endpoint="bookHotel">
117
- <parameters>
118
- <method>:post</method>
119
- <parameters>
120
- <to>data.to</to>
121
- </parameters>
122
- </parameters>
123
- <finalize output="result"> data.hotels &lt;&lt; result.value('id')
124
- data.costs += result.value('costs').to_f</finalize>
125
- </call>
126
- </parallel_branch>
127
- <manipulate id="a3"> data.persons -= 1</manipulate>
128
- </loop>
129
- </parallel>
130
- <choose>
131
- <alternative condition="data.costs &gt; 700">
132
- <call id="a4" endpoint="approve">
133
- <parameters>
134
- <method>:post</method>
135
- <parameters>
136
- <costs>data.costs</costs>
137
- </parameters>
138
- </parameters>
139
- </call>
140
- </alternative>
141
- </choose>
142
- </description>
24
+ <description xmlns="http://cpee.org/ns/description/1.0"/>
143
25
  </description>
144
26
  <transformation>
145
27
  <description type="copy"/>
146
- <dataelements type="rest"/>
147
- <endpoints type="rest"/>
28
+ <dataelements type="none"/>
29
+ <endpoints type="none"/>
148
30
  </transformation>
149
31
  </properties>
@@ -1,26 +1,58 @@
1
1
  <properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
2
2
  <attributes>
3
- <info/>
3
+ <uuid>7d388f7d-ef56-42e0-b68d-b885bb267239</uuid>
4
+ <info>Lego Plate</info>
4
5
  <modeltype>CPEE</modeltype>
5
- <uuid>7fe1cbb3-82de-4609-8b1d-02bc939a24cf</uuid>
6
6
  </attributes>
7
- <state>ready</state>
7
+ <state>stopped</state>
8
8
  <handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
9
9
  <positions/>
10
- <dataelements/>
10
+ <dataelements>
11
+ <i>0</i>
12
+ </dataelements>
11
13
  <endpoints>
12
14
  <timeout>http://gruppe.wst.univie.ac.at/~mangler/services/timeout.php</timeout>
15
+ <move>http://plate.wst.univie.ac.at:9200/go-next</move>
13
16
  </endpoints>
14
- <dsl/>
17
+ <dsl>loop pre_test{i&lt;2} do
18
+ call :a1, :move, parameters: { :label =&gt; "Move to next station", :method =&gt; :post, :arguments =&gt; nil }, finalize: &lt;&lt;-END
19
+ data.i= data.i + 1
20
+ END
21
+ end
22
+ </dsl>
15
23
  <dslx>
16
- <description xmlns="http://cpee.org/ns/description/1.0"/>
24
+ <description xmlns="http://cpee.org/ns/description/1.0">
25
+ <loop mode="pre_test" condition="i&lt;2">
26
+ <call id="a1" endpoint="move">
27
+ <parameters>
28
+ <label>Move to next station</label>
29
+ <method>:post</method>
30
+ <arguments/>
31
+ </parameters>
32
+ <finalize output="result">data.i= data.i + 1</finalize>
33
+ <update output="result"/>
34
+ </call>
35
+ </loop>
36
+ </description>
17
37
  </dslx>
18
38
  <status>
19
39
  <id>0</id>
20
40
  <message>undefined</message>
21
41
  </status>
22
42
  <description>
23
- <description xmlns="http://cpee.org/ns/description/1.0"/>
43
+ <description xmlns="http://cpee.org/ns/description/1.0">
44
+ <loop mode="pre_test" condition="i&lt;2">
45
+ <call id="a1" endpoint="move">
46
+ <parameters>
47
+ <label>Move to next station</label>
48
+ <method>:post</method>
49
+ <arguments/>
50
+ </parameters>
51
+ <finalize output="result">data.i= data.i + 1</finalize>
52
+ <update output="result"/>
53
+ </call>
54
+ </loop>
55
+ </description>
24
56
  </description>
25
57
  <transformation>
26
58
  <description type="copy"/>
@@ -340,36 +340,35 @@
340
340
 
341
341
  <xsl:choose>
342
342
  <xsl:when test="count(*) &gt; 0">
343
- <xsl:text>{</xsl:text>
344
- <xsl:apply-templates select="d:*" mode="parameter"/>
345
- <xsl:text>}</xsl:text>
343
+ <xsl:text>[</xsl:text>
344
+ <xsl:apply-templates select="d:*" mode="sub"/>
345
+ <xsl:text>]</xsl:text>
346
346
  </xsl:when>
347
- <xsl:when test="count(@*) &gt; 0">
348
- <xsl:text>Struct.new(:value,</xsl:text>
349
- <xsl:for-each select="@*">
350
- <xsl:if test="position() &gt;1">, </xsl:if>
351
- <xsl:text>:</xsl:text>
352
- <xsl:value-of select="name(.)"/>
353
- </xsl:for-each>
354
- <xsl:text>).new(</xsl:text>
355
- <xsl:text></xsl:text>
356
- <xsl:choose>
357
- <xsl:when test="not(node())">
358
- <xsl:text>nil</xsl:text>
359
- </xsl:when>
360
- <xsl:otherwise>
361
- <xsl:value-of select="text()"/>
362
- </xsl:otherwise>
363
- </xsl:choose>
364
- <xsl:text>,</xsl:text>
365
- <xsl:for-each select="@*">
366
- <xsl:if test="position() &gt;1">, </xsl:if>
367
- <xsl:text>"</xsl:text>
368
- <xsl:value-of select="string(.)"/>
369
- <xsl:text>"</xsl:text>
370
- </xsl:for-each>
371
- <xsl:text>)</xsl:text>
347
+ <xsl:when test="not(node())">
348
+ <xsl:text>nil</xsl:text>
372
349
  </xsl:when>
350
+ <xsl:otherwise>
351
+ <xsl:value-of select="text()"/>
352
+ </xsl:otherwise>
353
+ </xsl:choose>
354
+ </xsl:template>
355
+ <xsl:template match="d:*" mode="sub">
356
+ <xsl:if test="count(preceding-sibling::*) &gt; 0">, </xsl:if>
357
+ <xsl:text>Struct.new(:name, :value</xsl:text>
358
+
359
+ <xsl:if test="count(@*) &gt; 0">
360
+ <xsl:for-each select="@*">
361
+ <xsl:text>, </xsl:text>
362
+ <xsl:text>:</xsl:text>
363
+ <xsl:value-of select="name(.)"/>
364
+ </xsl:for-each>
365
+ </xsl:if>
366
+
367
+ <xsl:text>).new(</xsl:text>
368
+ <xsl:text>:</xsl:text>
369
+ <xsl:value-of select="name()"/>
370
+ <xsl:text>, </xsl:text>
371
+ <xsl:choose>
373
372
  <xsl:when test="not(node())">
374
373
  <xsl:text>nil</xsl:text>
375
374
  </xsl:when>
@@ -377,7 +376,15 @@
377
376
  <xsl:value-of select="text()"/>
378
377
  </xsl:otherwise>
379
378
  </xsl:choose>
379
+ <xsl:for-each select="@*">
380
+ <xsl:text>, </xsl:text>
381
+ <xsl:text>"</xsl:text>
382
+ <xsl:value-of select="string(.)"/>
383
+ <xsl:text>"</xsl:text>
384
+ </xsl:for-each>
385
+ <xsl:text>)</xsl:text>
380
386
  </xsl:template>
387
+
381
388
  <xsl:template match="d:finalize | d:update" mode="part-of-call">
382
389
  <xsl:param name="myspace"/>
383
390
  <xsl:call-template name="print-content">