source: DCWoRMS/trunk/src/test/DEBBTranslator/xml/PLMXMLTranslator.xsl @ 633

Revision 633, 4.5 KB checked in by gosiaw, 12 years ago (diff)

Some minor changes

Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<xsl:stylesheet version="1.0"
3        xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:plm="http://www.plmxml.org/Schemas/PLMXMLSchema"
4        xmlns:cim="http://www.coolemall.eu/DEBBComponent" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
5
6        <!-- Importing xslt for translating debb components -->
7        <xsl:import href="DEBBComponentTranslator.xsl" />
8
9        <!-- Specification of the output document -->
10        <xsl:output method="xml" version="1.0" encoding="UTF-8"
11                indent="yes" />
12
13        <!-- Root of the PLM XML document -->
14        <xsl:variable name="rootDoc" select="/" />
15
16        <!-- Default DEBBComponents file name (used if it is not specified in PLM
17                XML file) -->
18        <xsl:variable name="defaultDEBBComponentsFileName" select="'DEBBComponents.xml'" />
19
20
21        <xsl:template match="/">
22                <xsl:element name="environment">
23                        <xsl:attribute name="xsi:noNamespaceSchemaLocation">DCWormsResSchema.xsd</xsl:attribute>
24                        <xsl:element name="resources">
25                                <xsl:element name="scheduler"></xsl:element>
26                                <xsl:apply-templates select="//plm:InstanceGraph" />
27                        </xsl:element>
28                </xsl:element>
29        </xsl:template>
30
31        <xsl:template match="plm:InstanceGraph">
32                <xsl:variable name="rootRef" select="@rootRefs" />
33                <xsl:apply-templates select="plm:ProductInstance[@id=$rootRef]" />
34        </xsl:template>
35
36        <xsl:template match="plm:ProductInstance">
37                <xsl:variable name="partRef" select="@partRef" />
38                <!-- Get rid of # at the begining -->
39                <xsl:variable name="productInstanceId" select="translate($partRef, '#', '')" />
40
41                <xsl:if test="not (starts-with(@name, 'Sensor'))">
42                        <!-- We have to get rid of sensors, which make only problems here -->
43                        <xsl:element name="computingResource">
44                                <xsl:attribute name="name"><xsl:value-of select="@name" /></xsl:attribute>
45                               
46                                <xsl:apply-templates select="//plm:ProductRevisionView[@id=$productInstanceId]" />                     
47                                       
48                                <!-- Add hostnames, labels, sequences, etc. -->
49                                <xsl:variable name="debbHostname"
50                                        select="plm:UserData/plm:UserValue[@title='hostname']/@value" />
51                                <xsl:if test="$debbHostname != ''">
52                                        <xsl:element name="parameter">
53                                                <xsl:attribute name="name">hostname</xsl:attribute>
54                                                <xsl:element name="value">
55                                                        <xsl:value-of select="$debbHostname" />
56                                                </xsl:element>
57                                        </xsl:element>
58                                </xsl:if>
59                                <xsl:variable name="debbLabel"
60                                        select="plm:UserData/plm:UserValue[@title='label']/@value" />
61                                <xsl:if test="$debbLabel != ''">
62                                        <xsl:element name="parameter">
63                                                <xsl:attribute name="name">label</xsl:attribute>
64                                                <xsl:element name="value">
65                                                        <xsl:value-of select="$debbLabel" />
66                                                </xsl:element>
67                                        </xsl:element>
68                                </xsl:if>
69                                <xsl:variable name="debbSequence"
70                                        select="plm:UserData/plm:UserValue[@title='sequence']/@value" />
71                                <xsl:if test="$debbSequence != ''">
72                                        <xsl:element name="parameter">
73                                                <xsl:attribute name="name">sequence</xsl:attribute>
74                                                <xsl:element name="value">
75                                                        <xsl:value-of select="$debbSequence" />
76                                                </xsl:element>
77                                        </xsl:element>
78                                </xsl:if>
79                        </xsl:element>
80                </xsl:if>
81        </xsl:template>
82
83        <xsl:template match="plm:ProductRevisionView">
84                <xsl:variable name="tokenizedText" select="tokenize(@instanceRefs, ' ')" />
85                <!-- DEBBLevel -->
86                <xsl:variable name="debbLevel"
87                        select="plm:UserData/plm:UserValue[@title='DEBBLevel']/@value" />
88                <!-- DEBBComponentId -->
89                <xsl:variable name="debbComponentId"
90                        select="plm:UserData/plm:UserValue[@title='DEBBComponentId']/@value" />
91                <!-- DEBBComponentFile -->     
92                <xsl:variable name="debbComponentFile"
93                        select="plm:UserData/plm:UserValue[@title='DEBBComponentFile']/@value" />
94
95                <xsl:attribute name="class">
96                        <xsl:value-of select="$debbLevel" />
97                </xsl:attribute>
98
99                <xsl:attribute name="type">
100                        <xsl:value-of select="$debbComponentId" />
101                </xsl:attribute>
102
103                <!-- Add DEBB information from DEBB Components file -->
104                <xsl:choose>
105                        <xsl:when test="debbComponentFile != ''">
106                                <xsl:variable name="nestedDoc" select="document($debbComponentFile)" />
107                                <xsl:apply-templates select="$nestedDoc//*[ComponentId=$debbComponentId]" />
108                        </xsl:when>
109                        <xsl:otherwise>
110                                <xsl:variable name="nestedDoc"
111                                        select="document($defaultDEBBComponentsFileName)" />
112                                <xsl:apply-templates select="$nestedDoc//*[ComponentId=$debbComponentId]" />
113                        </xsl:otherwise>
114                </xsl:choose>
115
116                <!-- Iterate children and ask them to translate themselves -->
117                <xsl:for-each select="1 to count($tokenizedText)">
118                        <xsl:variable name="index" select="." />
119                        <xsl:apply-templates
120                                select="$rootDoc//plm:ProductInstance[@id=$tokenizedText[$index]]" />
121                </xsl:for-each>
122        </xsl:template>
123</xsl:stylesheet>
124
Note: See TracBrowser for help on using the repository browser.