/[volute]/trunk/projects/theory/snapdm/res/xmi2intermediate.xsl
ViewVC logotype

Diff of /trunk/projects/theory/snapdm/res/xmi2intermediate.xsl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 342 by bourges.laurent, Mon Apr 28 16:32:41 2008 UTC revision 343 by gerard.lemson, Wed Apr 30 16:30:47 2008 UTC
# Line 46  Line 46 
46        
47        
48    <!-- filters uml:Model : process only uml:Package nodes -->    <!-- filters uml:Model : process only uml:Package nodes -->
49    <xsl:template match="uml:Model">    <xsl:template match="uml:Model">
50        <xsl:comment>This XML document is generated without explicit xmlns specification as it complicates
51        writing XSLT scripts against it [TBD add a link to some web dicsussions about it].
52        It is understood that the XML schema in
53        http://volute.googlecode.com/svn/trunk/projects/theory/snapdm/input/intermediateModel.xsd
54        is to be used for validating this generated document.</xsl:comment>&cr;
55        <xsl:element name="model">        <xsl:element name="model">
56        <xsl:attribute name="xmiid"><xsl:value-of select="@xmi:id"></xsl:value-of></xsl:attribute>        <xsl:attribute name="xmiid"><xsl:value-of select="@xmi:id"></xsl:value-of></xsl:attribute>
57        <xsl:element name="name"><xsl:value-of select="@name"/></xsl:element>        <xsl:element name="name"><xsl:value-of select="@name"/></xsl:element>
58        <xsl:element name="lastModifiedDate"><xsl:value-of select="$lastModified"/></xsl:element>      <xsl:call-template name="description">
59        <xsl:element name="description"><xsl:value-of select="./ownedComment/@body"/></xsl:element>        <xsl:with-param name="ownedComment" select="./ownedComment"/>
60        </xsl:call-template>
61        <xsl:element name="lastModifiedDate"><xsl:value-of select="$lastModified"/></xsl:element>
62        <xsl:apply-templates select="." mode="authors"/>        <xsl:apply-templates select="." mode="authors"/>
       <xsl:apply-templates select="./*[@xmi:type='uml:PrimitiveType']">  
         <xsl:sort select="@name"/>  
       </xsl:apply-templates>  
63        <xsl:apply-templates select="./*[@xmi:type='uml:Package']"/>        <xsl:apply-templates select="./*[@xmi:type='uml:Package']"/>
64      </xsl:element>      </xsl:element>
65    </xsl:template>    </xsl:template>
# Line 82  Line 86 
86          <xsl:element name="name">          <xsl:element name="name">
87            <xsl:value-of select="@name"/>            <xsl:value-of select="@name"/>
88          </xsl:element>          </xsl:element>
89          <xsl:apply-templates select="ownedComment"/>      <xsl:call-template name="description">
90          &cr;        <xsl:with-param name="ownedComment" select="ownedComment"/>
91        </xsl:call-template>
92        &cr;
93                    
94          <xsl:if test="count(./*[@xmi:type='uml:Dependency']) > 0">          <xsl:if test="count(./*[@xmi:type='uml:Dependency']) > 0">
95            &cr;            &cr;
# Line 91  Line 97 
97                        
98            <xsl:apply-templates select="./*[@xmi:type='uml:Dependency']"/>            <xsl:apply-templates select="./*[@xmi:type='uml:Dependency']"/>
99          </xsl:if>          </xsl:if>
100            <xsl:if test="count(./*[@xmi:type='uml:Class']) > 0">
101              &cr;
102              <xsl:comment> Classes </xsl:comment>&cr;&cr;
103              
104              <xsl:apply-templates select="./*[@xmi:type='uml:Class']" />
105            </xsl:if>
106    
107          <xsl:if test="count(./*[@xmi:type='uml:DataType']) > 0">          <xsl:if test="count(./*[@xmi:type='uml:DataType']) > 0">
108            &cr;            &cr;
109            <xsl:comment> Data types </xsl:comment>&cr;&cr;            <xsl:comment> Data types </xsl:comment>&cr;&cr;
# Line 105  Line 118 
118            <xsl:apply-templates select="./*[@xmi:type='uml:Enumeration']" />            <xsl:apply-templates select="./*[@xmi:type='uml:Enumeration']" />
119          </xsl:if>          </xsl:if>
120                    
121          <xsl:if test="count(./*[@xmi:type='uml:Class']) > 0">          <xsl:if test="count(./*[@xmi:type='uml:PrimitiveType']) > 0">
122            &cr;            &cr;
123            <xsl:comment> Classes </xsl:comment>&cr;&cr;            <xsl:comment> Primitive Types </xsl:comment>&cr;&cr;
124                        
125            <xsl:apply-templates select="./*[@xmi:type='uml:Class']" />            <xsl:apply-templates select="./*[@xmi:type='uml:PrimitiveType']" />
126          </xsl:if>          </xsl:if>
127                    
128          <xsl:apply-templates select="./*[@xmi:type='uml:Package']"/>          <xsl:apply-templates select="./*[@xmi:type='uml:Package']"/>
129                    
# Line 124  Line 137 
137        
138    <xsl:template match="*[@xmi:type='uml:Dependency']">    <xsl:template match="*[@xmi:type='uml:Dependency']">
139      <xsl:element name="depends">      <xsl:element name="depends">
       <xsl:attribute name="name">  
         <xsl:call-template name="get-package-from-id">  
           <xsl:with-param name="id" select="supplier/@xmi:idref"/>  
         </xsl:call-template>  
       </xsl:attribute>  
140        <xsl:attribute name="xmiidref"><xsl:value-of select="supplier/@xmi:idref"/></xsl:attribute>        <xsl:attribute name="xmiidref"><xsl:value-of select="supplier/@xmi:idref"/></xsl:attribute>
141      </xsl:element>      </xsl:element>
142    </xsl:template>    </xsl:template>
# Line 136  Line 144 
144    
145    
146    
147    <xsl:template match="*[@xmi:type='uml:Class']">    <xsl:template match="*[@xmi:type='uml:Class']">
148        <xsl:variable name="xmiid" select="@xmi:id"/>
149      <xsl:element name="objectType">      <xsl:element name="objectType">
150        <xsl:attribute name="xmiid"><xsl:value-of select="@xmi:id"></xsl:value-of></xsl:attribute>        <xsl:attribute name="xmiid"><xsl:value-of select="@xmi:id"></xsl:value-of></xsl:attribute>
151        <xsl:if test="@isAbstract">        <xsl:if test="@isAbstract">
# Line 147  Line 156 
156        <xsl:element name="name">        <xsl:element name="name">
157          <xsl:value-of select="@name"/>          <xsl:value-of select="@name"/>
158        </xsl:element>        </xsl:element>
159        <xsl:apply-templates select="ownedComment"/>      <xsl:call-template name="description">
160        <xsl:if test="*[@xmi:type='uml:Generalization']">        <xsl:with-param name="ownedComment" select="ownedComment"/>
161        </xsl:call-template>
162              <xsl:if test="*[@xmi:type='uml:Generalization']">
163          <xsl:apply-templates select="*[@xmi:type='uml:Generalization']"/>          <xsl:apply-templates select="*[@xmi:type='uml:Generalization']"/>
164        </xsl:if>        </xsl:if>
165                <xsl:if test="//ownedMember/ownedAttribute[@xmi:type='uml:Property' and @association and @aggregation='composite' and @type = $xmiid]">
166            <xsl:element name="container"><xsl:value-of select="//ownedMember/ownedAttribute[@xmi:type='uml:Property' and @association and @aggregation='composite' and @type = $xmiid]/../@xmi:id"/></xsl:element>
167          </xsl:if>
168        <xsl:apply-templates select=".//*[@xmi:type='uml:Property' and not(@association)]" mode="attributes"/>        <xsl:apply-templates select=".//*[@xmi:type='uml:Property' and not(@association)]" mode="attributes"/>
169        <xsl:apply-templates select=".//*[@xmi:type='uml:Property' and @association and @aggregation='composite']" mode="collections"/>        <xsl:apply-templates select=".//*[@xmi:type='uml:Property' and @association and @aggregation='composite']" mode="collections"/>
170        <xsl:apply-templates select=".//*[@xmi:type='uml:Property' and @association and (not(@aggregation) or @aggregation='shared')]" mode="references"/>        <xsl:apply-templates select=".//*[@xmi:type='uml:Property' and @association and (not(@aggregation) or @aggregation='shared')]" mode="references"/>
# Line 161  Line 174 
174    </xsl:template>      </xsl:template>  
175        
176        
177      
178      
179      <xsl:template match="*[@xmi:type='uml:PrimitiveType']">
180        <xsl:element name="primitiveType">
181          <xsl:attribute name="xmiid"><xsl:value-of select="@xmi:id"></xsl:value-of></xsl:attribute>
182          <xsl:element name="name">
183            <xsl:value-of select="@name"/>
184          </xsl:element>
185        <xsl:call-template name="description">
186          <xsl:with-param name="ownedComment" select="ownedComment"/>
187        </xsl:call-template>
188              <xsl:if test="*[@xmi:type='uml:Generalization']">
189            <xsl:apply-templates select="*[@xmi:type='uml:Generalization']"/>
190          </xsl:if>
191        </xsl:element>
192        &cr;&cr;
193      </xsl:template>  
194      
195      
196        
197        
198    <xsl:template match="*[@xmi:type='uml:DataType']">    <xsl:template match="*[@xmi:type='uml:DataType']">
# Line 174  Line 206 
206        <xsl:element name="name">        <xsl:element name="name">
207          <xsl:value-of select="@name"/>          <xsl:value-of select="@name"/>
208        </xsl:element>        </xsl:element>
209        <xsl:apply-templates select="ownedComment"/>      <xsl:call-template name="description">
210          <xsl:with-param name="ownedComment" select="ownedComment"/>
211        </xsl:call-template>
212        <xsl:if test="*[@xmi:type='uml:Generalization']">        <xsl:if test="*[@xmi:type='uml:Generalization']">
213          <xsl:apply-templates select="*[@xmi:type='uml:Generalization']"/>          <xsl:apply-templates select="*[@xmi:type='uml:Generalization']"/>
214        </xsl:if>        </xsl:if>
# Line 205  Line 239 
239        <xsl:element name="name">        <xsl:element name="name">
240          <xsl:value-of select="@name"/>          <xsl:value-of select="@name"/>
241        </xsl:element>        </xsl:element>
242        <xsl:apply-templates select="ownedComment"/>      <xsl:call-template name="description">
243          <xsl:with-param name="ownedComment" select="ownedComment"/>
244        </xsl:call-template>
245        <xsl:apply-templates select="*[@xmi:type='uml:EnumerationLiteral']"/>        <xsl:apply-templates select="*[@xmi:type='uml:EnumerationLiteral']"/>
246      </xsl:element>      </xsl:element>
247      &cr;&cr;      &cr;&cr;
# Line 219  Line 255 
255        <xsl:element name="value">        <xsl:element name="value">
256          <xsl:value-of select="@name"/>          <xsl:value-of select="@name"/>
257        </xsl:element>        </xsl:element>
258        <xsl:apply-templates select="ownedComment"/>      <xsl:call-template name="description">
259          <xsl:with-param name="ownedComment" select="ownedComment"/>
260        </xsl:call-template>
261      </xsl:element>      </xsl:element>
262    </xsl:template>    </xsl:template>
263        
264        
265        
266        
267    <xsl:template match="ownedComment">    <xsl:template name="description">
268      <xsl:element name="description">      <xsl:param name="ownedComment"/>
269        <xsl:value-of select="@body"/>      <xsl:element name="description">
270          <xsl:choose>
271            <xsl:when test="$ownedComment/@body">
272              <xsl:value-of select="$ownedComment/@body"/>
273            </xsl:when>
274            <xsl:otherwise>TODO : Missing description : please, update your UML model asap.</xsl:otherwise>
275          </xsl:choose>        
276      </xsl:element>      </xsl:element>
277    </xsl:template>    </xsl:template>
278        
# Line 276  Line 320 
320      <xsl:element name="name">      <xsl:element name="name">
321        <xsl:value-of select="@name"/>        <xsl:value-of select="@name"/>
322      </xsl:element>      </xsl:element>
323      <xsl:apply-templates select="ownedComment"/>      <xsl:call-template name="description">
324          <xsl:with-param name="ownedComment" select="ownedComment"/>
325        </xsl:call-template>
326      <xsl:call-template name="get-class-from-id">      <xsl:call-template name="get-class-from-id">
327        <xsl:with-param name="id" select="@type"/>        <xsl:with-param name="id" select="@type"/>
328      </xsl:call-template>      </xsl:call-template>

Legend:
Removed from v.342  
changed lines
  Added in v.343

msdemlei@ari.uni-heidelberg.de
ViewVC Help
Powered by ViewVC 1.1.26