source: DCWoRMS/trunk/simulator/xslt/ext_job_desc.xslt @ 477

Revision 477, 6.3 KB checked in by wojtekp, 13 years ago (diff)
  • Property svn:executable set to *
  • Property svn:mime-type set to text/plain
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:set="http://exslt.org/sets" exclude-result-prefixes="set">
3        <xsl:strip-space elements="*"/>
4        <xsl:output method="xml" version="1.0" encoding="UTF-8" omit-xml-declaration="yes" indent="yes"/>
5        <!-- =====================================================================================================================-->
6                <xsl:variable name="GLOBAL_COMP_RES_TEMPLATES" select="/grmsJob/resourceTemplates/computingResourceTemplate"/>
7                <xsl:variable name="GLOBAL_NET_RES_TEMPLATES" select="/grmsJob/resourceTemplates/networkResourceTemplate"/>             
8        <!-- =====================================================================================================================-->
9        <xsl:template match="/">
10                <xsl:apply-templates select="*" mode="COPY_OF_MODE"/>
11        </xsl:template>
12        <!-- =====================================================================================================================-->
13        <xsl:template match="tasksDefaults" mode="COPY_OF_MODE">
14        </xsl:template>
15        <!-- =====================================================================================================================-->
16        <xsl:template match="resourceTemplates" mode="COPY_OF_MODE">
17        </xsl:template>
18        <!-- =====================================================================================================================-->
19        <xsl:template match="task" mode="COPY_OF_MODE">
20                <xsl:element name="task">
21                        <xsl:copy-of select="@*"/>
22                        <xsl:apply-templates select="description" mode="COPY_OF_MODE"/>
23                        <xsl:apply-templates select="descriptionVariables" mode="COPY_OF_MODE"/>
24                       
25                        <xsl:call-template name="USE_DEFAULT_IF_NEEDED">
26                                <xsl:with-param name="VALUE" select="proxyInfo"/>
27                                <xsl:with-param name="DEFAULT" select="../tasksDefaults/proxyInfo"/>
28                        </xsl:call-template>
29                        <xsl:call-template name="USE_DEFAULT_IF_NEEDED">
30                                <xsl:with-param name="VALUE" select="candidatHosts"/>
31                                <xsl:with-param name="DEFAULT" select="../tasksDefaults/candidateHosts"/>
32                        </xsl:call-template>
33                        <xsl:call-template name="USE_DEFAULT_IF_NEEDED">
34                                <xsl:with-param name="VALUE" select="requirements"/>
35                                <xsl:with-param name="DEFAULT" select="../tasksDefaults/requirements"/>
36                        </xsl:call-template>
37                       
38                        <xsl:apply-templates select="execution" mode="COPY_OF_MODE"/>
39                        <xsl:apply-templates select="postResumeExecution" mode="COPY_OF_MODE"/>
40
41                        <xsl:call-template name="USE_DEFAULT_IF_NEEDED">
42                                <xsl:with-param name="VALUE" select="executionTime"/>
43                                <xsl:with-param name="DEFAULT" select="../tasksDefaults/executionTime"/>
44                        </xsl:call-template>
45                       
46                        <xsl:apply-templates select="workflow" mode="COPY_OF_MODE"/>
47                        <xsl:apply-templates select="parameterSweep" mode="COPY_OF_MODE"/>                     
48
49                        <xsl:call-template name="USE_DEFAULT_IF_NEEDED">
50                                <xsl:with-param name="VALUE" select="faultTolerance"/>
51                                <xsl:with-param name="DEFAULT" select="../tasksDefaults/faultTolerance"/>
52                        </xsl:call-template>
53                        <xsl:apply-templates select="other" mode="COPY_OF_MODE"/>
54                </xsl:element>
55        </xsl:template>
56        <!-- =====================================================================================================================-->
57        <xsl:template match="requirements" mode="COPY_OF_MODE">
58                <xsl:element name="requirements">
59               
60                        <xsl:if test="resourcesTemplates or .//templateIdReference">
61                                <xsl:element name="resourceTemplates">
62                                        <xsl:apply-templates select="resourceTemplates/*" mode="COPY_OF_MODE"/>
63                                       
64                                        <xsl:call-template name="ADD_TEMPLATE_IF_NEEDED">
65                                                <xsl:with-param name="REFERENCED" select="set:distinct(.//computingResource/templateIdReference)"/>
66                                                <xsl:with-param name="LOCAL_TEMPLATES" select="resourceTemplates/computingResourceTemplate"/>
67                                                <xsl:with-param name="GLOBAL_TEMPLATES" select="$GLOBAL_COMP_RES_TEMPLATES"/>
68                                        </xsl:call-template>
69               
70                                        <xsl:call-template name="ADD_TEMPLATE_IF_NEEDED">
71                                                <xsl:with-param name="REFERENCED" select=".//networkResource/templateIdReference"/>
72                                                <xsl:with-param name="LOCAL_TEMPLATES" select="resourceTemplates/networkResourceTemplate"/>
73                                                <xsl:with-param name="GLOBAL_TEMPLATES" select="$GLOBAL_NET_RES_TEMPLATES"/>
74                                        </xsl:call-template>
75                                </xsl:element> 
76                        </xsl:if>
77       
78                        <xsl:apply-templates select="resourceRequirements" mode="COPY_OF_MODE"/>
79                        <xsl:apply-templates select="topology" mode="COPY_OF_MODE"/>
80                </xsl:element>
81        </xsl:template>
82        <!-- =====================================================================================================================-->
83        <xsl:template name="USE_DEFAULT_IF_NEEDED">
84                <xsl:param name="VALUE"/>
85                <xsl:param name="DEFAULT"/>
86                <xsl:choose>
87                        <xsl:when test="$VALUE">
88                                <xsl:apply-templates select="$VALUE" mode="COPY_OF_MODE"/>
89                        </xsl:when>
90                        <xsl:otherwise>
91                                <xsl:apply-templates select="$DEFAULT" mode="COPY_OF_MODE"/>
92                        </xsl:otherwise>
93                </xsl:choose>
94        </xsl:template>
95        <!-- =====================================================================================================================-->
96                <xsl:template name="ADD_TEMPLATE_IF_NEEDED">
97                        <xsl:param name="REFERENCED"/>
98                        <xsl:param name="LOCAL_TEMPLATES"/>
99                        <xsl:param name="GLOBAL_TEMPLATES"/>
100                                               
101                        <xsl:for-each select="$REFERENCED">
102                                <xsl:variable name="CURRENT" select="."/>
103                                <xsl:if test="not($LOCAL_TEMPLATES[@templateId = $CURRENT])">
104                                        <xsl:apply-templates select="$GLOBAL_TEMPLATES[@templateId = $CURRENT]" mode="COPY_OF_MODE"/>
105                                </xsl:if>
106                        </xsl:for-each>
107
108                </xsl:template>
109        <!-- =====================================================================================================================-->
110        <!-- =====================================================================================================================-->
111        <xsl:template match="*" mode="COPY_OF_MODE">
112                <xsl:choose>
113                        <xsl:when test="node()">
114                                <xsl:element name="{name()}">
115                                        <xsl:copy-of select="@*"/>
116                                        <xsl:apply-templates select="node()" mode="COPY_OF_MODE"/>
117                                </xsl:element>
118                        </xsl:when>
119                        <xsl:otherwise>
120                                <xsl:element name="{name()}">
121                                        <xsl:copy-of select="@*"/>
122                                </xsl:element>
123                        </xsl:otherwise>
124                </xsl:choose>
125        </xsl:template>
126        <!-- =====================================================================================================================-->
127</xsl:transform>
Note: See TracBrowser for help on using the repository browser.