Name: cockpit/contrib/transformation1.xsl 
1:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:d="http://cpee.org/ns/description/1.0">
2:
      <xsl:output method="text"/>
3:
      <xsl:strip-space elements="*"/>
4:
      <xsl:variable name="myspacemultiplier">2</xsl:variable>
5:
 
6:
      <xsl:template match="/">
7:
        <xsl:apply-templates select="//d:description"/>
8:
      </xsl:template>
9:
 
10:
      <xsl:template match="//d:description">
11:
        <xsl:apply-templates>
12:
          <xsl:with-param name="myspace"><xsl:value-of select="-1*$myspacemultiplier"/></xsl:with-param>
13:
        </xsl:apply-templates>  
14:
      </xsl:template>
15:
 
16:
      <xsl:template match="*">
17:
        <xsl:param name="myspace"/>
18:
        <xsl:call-template name="print-space">
19:
          <xsl:with-param name="i">1</xsl:with-param>
20:
          <xsl:with-param name="count"><xsl:value-of select="$myspace+$myspacemultiplier"/></xsl:with-param>
21:
        </xsl:call-template>
22:
        <xsl:if test="name()='call' or name()='manipulate'">
23:
          <xsl:choose>  
24:
            <xsl:when test="@lay">
25:
              <xsl:text>activity [:</xsl:text>
26:
              <xsl:value-of select="@id"/>
27:
              <xsl:text>,</xsl:text>
28:
              <xsl:value-of select="@lay"/>
29:
              <xsl:text>]</xsl:text>
30:
            </xsl:when>
31:
            <xsl:otherwise>
32:
              <xsl:text>activity :</xsl:text>
33:
              <xsl:value-of select="@id"/>
34:
            </xsl:otherwise>
35:
          </xsl:choose>
36:
        </xsl:if>
37:
        <xsl:if test="name()='call'">
38:
          <xsl:text>, :call, :</xsl:text>
39:
          <xsl:value-of select="@endpoint"/>
40:
          <xsl:apply-templates select="d:parameters"/>
41:
          <xsl:apply-templates select="d:manipulate" mode="part-of-call">
42:
            <xsl:with-param name="myspace"><xsl:value-of select="$myspace"/></xsl:with-param>
43:
          </xsl:apply-templates>
44:
          <xsl:call-template name="print-newline"/>
45:
        </xsl:if>
46:
        <xsl:if test="name()='manipulate'">
47:
          <xsl:text>, :manipulate</xsl:text>
48:
          <xsl:call-template name="print-content">
49:
            <xsl:with-param name="myspace"><xsl:value-of select="$myspace"/></xsl:with-param>
50:
          </xsl:call-template>
51:
          <xsl:call-template name="print-newline"/>
52:
        </xsl:if>
53:
        <xsl:if test="name()='parallel'">
54:
          <xsl:text>parallel</xsl:text>
55:
          <xsl:if test="@wait">
56:
            <xsl:text> :wait => </xsl:text>
57:
            <xsl:value-of select="@wait"/>
58:
          </xsl:if>
59:
          <xsl:text> do</xsl:text>
60:
          <xsl:call-template name="print-newline"/>
61:
          <xsl:apply-templates>
62:
            <xsl:with-param name="myspace"><xsl:value-of select="$myspace+$myspacemultiplier"/></xsl:with-param>
63:
          </xsl:apply-templates>
64:
          <xsl:call-template name="print-space">
65:
            <xsl:with-param name="i">1</xsl:with-param>
66:
            <xsl:with-param name="count"><xsl:value-of select="$myspace+$myspacemultiplier"/></xsl:with-param>
67:
          </xsl:call-template>
68:
          <xsl:text>end</xsl:text>
69:
          <xsl:call-template name="print-newline"/>
70:
        </xsl:if>
71:
        <xsl:if test="name()='loop'">
72:
          <xsl:text>loop </xsl:text>
73:
          <xsl:if test="@pre_test">
74:
            <xsl:text>pre_test{</xsl:text>
75:
            <xsl:value-of select="@pre_test"/>
76:
            <xsl:text>} </xsl:text>
77:
          </xsl:if>
78:
          <xsl:if test="@post_test">
79:
            <xsl:text>post_test{</xsl:text>
80:
            <xsl:value-of select="@post_test"/>
81:
            <xsl:text>} </xsl:text>
82:
          </xsl:if>
83:
          <xsl:text>do</xsl:text>
84:
          <xsl:call-template name="print-newline"/>
85:
          <xsl:apply-templates>
86:
            <xsl:with-param name="myspace"><xsl:value-of select="$myspace+$myspacemultiplier"/></xsl:with-param>
87:
          </xsl:apply-templates>
88:
          <xsl:call-template name="print-space">
89:
            <xsl:with-param name="i">1</xsl:with-param>
90:
            <xsl:with-param name="count"><xsl:value-of select="$myspace+$myspacemultiplier"/></xsl:with-param>
91:
          </xsl:call-template>
92:
          <xsl:text>end</xsl:text>
93:
          <xsl:call-template name="print-newline"/>
94:
        </xsl:if>
95:
        <xsl:if test="name()='choose'">
96:
          <xsl:text>choose do</xsl:text>
97:
          <xsl:call-template name="print-newline"/>
98:
          <xsl:apply-templates>
99:
            <xsl:with-param name="myspace"><xsl:value-of select="$myspace+$myspacemultiplier"/></xsl:with-param>
100:
          </xsl:apply-templates>
101:
          <xsl:call-template name="print-space">
102:
            <xsl:with-param name="i">1</xsl:with-param>
103:
            <xsl:with-param name="count"><xsl:value-of select="$myspace+$myspacemultiplier"/></xsl:with-param>
104:
          </xsl:call-template>
105:
          <xsl:text>end</xsl:text>
106:
          <xsl:call-template name="print-newline"/>
107:
        </xsl:if>
108:
      </xsl:template>
109:
      
110:
      <xsl:template match="d:alternative">
111:
        <xsl:param name="myspace"/>
112:
        <xsl:call-template name="print-space">
113:
          <xsl:with-param name="i">1</xsl:with-param>
114:
          <xsl:with-param name="count"><xsl:value-of select="$myspace+$myspacemultiplier"/></xsl:with-param>
115:
        </xsl:call-template>
116:
        <xsl:text>alternative </xsl:text>
117:
        <xsl:value-of select="@condition"/>
118:
        <xsl:text> do</xsl:text>
119:
        <xsl:call-template name="print-newline"/>
120:
        <xsl:apply-templates>
121:
          <xsl:with-param name="myspace"><xsl:value-of select="$myspace+$myspacemultiplier"/></xsl:with-param>
122:
        </xsl:apply-templates>
123:
        <xsl:call-template name="print-space">
124:
          <xsl:with-param name="i">1</xsl:with-param>
125:
          <xsl:with-param name="count"><xsl:value-of select="$myspace+$myspacemultiplier"/></xsl:with-param>
126:
        </xsl:call-template>
127:
        <xsl:text>end</xsl:text>
128:
        <xsl:call-template name="print-newline"/>
129:
      </xsl:template>
130:
 
131:
      <xsl:template match="d:otherwise">
132:
        <xsl:param name="myspace"/>
133:
        <xsl:call-template name="print-space">
134:
          <xsl:with-param name="i">1</xsl:with-param>
135:
          <xsl:with-param name="count"><xsl:value-of select="$myspace+$myspacemultiplier"/></xsl:with-param>
136:
        </xsl:call-template>
137:
        <xsl:text>otherwise do</xsl:text>
138:
        <xsl:call-template name="print-newline"/>
139:
        <xsl:apply-templates>
140:
          <xsl:with-param name="myspace"><xsl:value-of select="$myspace+$myspacemultiplier"/></xsl:with-param>
141:
        </xsl:apply-templates>
142:
        <xsl:call-template name="print-space">
143:
          <xsl:with-param name="i">1</xsl:with-param>
144:
          <xsl:with-param name="count"><xsl:value-of select="$myspace+$myspacemultiplier"/></xsl:with-param>
145:
        </xsl:call-template>
146:
        <xsl:text>end</xsl:text>
147:
        <xsl:call-template name="print-newline"/>
148:
      </xsl:template>
149:
 
150:
      <xsl:template match="d:parallel_branch">
151:
        <xsl:param name="myspace"/>
152:
        <xsl:call-template name="print-space">
153:
          <xsl:with-param name="i">1</xsl:with-param>
154:
          <xsl:with-param name="count"><xsl:value-of select="$myspace+$myspacemultiplier"/></xsl:with-param>
155:
        </xsl:call-template>
156:
        <xsl:text>parallel_branch</xsl:text>
157:
        <xsl:if test="@pass">
158:
          <xsl:text> </xsl:text>
159:
          <xsl:value-of select="@pass"/>
160:
        </xsl:if>
161:
        <xsl:text> do</xsl:text>
162:
        <xsl:if test="@local">
163:
          <xsl:text> |</xsl:text>
164:
          <xsl:value-of select="@local"/>
165:
          <xsl:text>|</xsl:text>
166:
        </xsl:if>
167:
        <xsl:call-template name="print-newline"/>
168:
        <xsl:apply-templates>
169:
          <xsl:with-param name="myspace"><xsl:value-of select="$myspace+$myspacemultiplier"/></xsl:with-param>
170:
        </xsl:apply-templates>
171:
        <xsl:call-template name="print-space">
172:
          <xsl:with-param name="i">1</xsl:with-param>
173:
          <xsl:with-param name="count"><xsl:value-of select="$myspace+$myspacemultiplier"/></xsl:with-param>
174:
        </xsl:call-template>
175:
        <xsl:text>end</xsl:text>
176:
        <xsl:call-template name="print-newline"/>
177:
      </xsl:template>
178:
 
179:
      <xsl:template match="d:parameters">
180:
        <xsl:apply-templates select="d:*" mode="parameter"/>
181:
      </xsl:template>
182:
        
183:
      <xsl:template match="d:*" mode="parameter">
184:
        <xsl:text>, :</xsl:text>
185:
        <xsl:value-of select="name()"/>
186:
        <xsl:text> => </xsl:text>
187:
        <xsl:choose>  
188:
          <xsl:when test="count(*) > 0">
189:
            <xsl:text>[</xsl:text>
190:
            <xsl:apply-templates select="d:*" mode="sub-parameter"/>
191:
            <xsl:text>]</xsl:text>
192:
          </xsl:when>
193:
          <xsl:otherwise>
194:
            <xsl:text>"</xsl:text>
195:
            <xsl:value-of select="text()"/>
196:
            <xsl:text>"</xsl:text>
197:
          </xsl:otherwise>
198:
        </xsl:choose>  
199:
      </xsl:template>
200:
      
201:
      <xsl:template match="d:*" mode="sub-parameter">
202:
        <xsl:text> { :</xsl:text>
203:
        <xsl:value-of select="name()"/>
204:
        <xsl:text> => </xsl:text>
205:
        <xsl:value-of select="text()"/>
206:
        <xsl:text> }</xsl:text>
207:
        <xsl:choose>  
208:
          <xsl:when test=". = ../*[last()]">
209:
            <xsl:text> </xsl:text>
210:
          </xsl:when>
211:
          <xsl:otherwise>
212:
            <xsl:text>,</xsl:text>
213:
          </xsl:otherwise>
214:
        </xsl:choose>  
215:
      </xsl:template>
216:
 
217:
      <xsl:template match="d:manipulate" mode="part-of-call">
218:
        <xsl:param name="myspace"/>
219:
        <xsl:call-template name="print-content">
220:
          <xsl:with-param name="myspace"><xsl:value-of select="$myspace"/></xsl:with-param>
221:
        </xsl:call-template>
222:
      </xsl:template>
223:
 
224:
      <xsl:template name="print-content">
225:
        <xsl:param name="myspace"/>
226:
        <xsl:if test="text()">
227:
          <xsl:text> do </xsl:text>
228:
          <xsl:if test="@output">
229:
            <xsl:text>|</xsl:text>
230:
            <xsl:value-of select="@output"/>
231:
            <xsl:text>|</xsl:text>
232:
          </xsl:if>
233:
          <xsl:call-template name="print-newline"/>
234:
          <xsl:value-of select="text()"/>
235:
          <xsl:call-template name="print-newline"/>
236:
          <xsl:call-template name="print-space">
237:
            <xsl:with-param name="i">1</xsl:with-param>
238:
            <xsl:with-param name="count"><xsl:value-of select="$myspace+$myspacemultiplier"/></xsl:with-param>
239:
          </xsl:call-template>
240:
          <xsl:text>end</xsl:text>
241:
        </xsl:if>
242:
      </xsl:template>
243:
 
244:
      <xsl:template name="print-space">
245:
        <xsl:param name="i"/>
246:
        <xsl:param name="count"/>
247:
        <xsl:if test="$i <= $count">
248:
          <xsl:text> </xsl:text>
249:
          <xsl:call-template name="print-space">
250:
            <xsl:with-param name="i">
251:
              <xsl:value-of select="$i + 1"/>
252:
            </xsl:with-param>
253:
            <xsl:with-param name="count">
254:
              <xsl:value-of select="$count"/>
255:
            </xsl:with-param>
256:
          </xsl:call-template>
257:
        </xsl:if>
258:
      </xsl:template>
259:
      <xsl:template name="print-newline">
260:
        <xsl:text>
261:
</xsl:text>
262:
      </xsl:template>
263:
 
264:
    </xsl:stylesheet>