[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Using keys to build a tree represented in XMI

Subject: RE: Using keys to build a tree represented in XMI
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 30 Dec 2005 18:17:35 -0000
uml association
I'm not sure exactly what you're trying to do here, but perhaps I can see
what you are doing wrong.

You have defined this key:

<xsl:key name="aggregation_by_classReference"
match="UML:Association.connection"

so this expression:

key('aggregation_by_classReference',./@xmi.id)

will return zero or more UML:Association.connection elements, and this
expression:

key('aggregation_by_classReference',./@xmi.id)/@xmi.id

will return their @xmi.id attributes.

But there is only one UML:Association.connection element in your sample
data, and it does not have an @xmi.id attribute.

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: Christian Solisch [mailto:christian.solisch@xxxxxx]
> Sent: 28 December 2005 18:32
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject:  Using keys to build a tree represented in XMI
>
> Hi community,
>
> I am new to XSLT and actually trying to use it for a
> transformation of a XMI
> file. After two weeks of trying I really don4t know how to
> proceed. I am not
> sure, if XSLT is really what I need to get the job done. Any
> help (or hint
> to use anything else ;-) will be really appreciated!
>
> I use Saxon 8.6.1 on XSLT 2.0
>
> In an UML tool (enterprise architect) I modelled a
> tree-structure consisting
> of classes. They are stereotyped by <<node>> and <<leaf>> and
> connected by
> aggregations. After exporting it to XMI I like to generate
> the path for each
> leaf (leading from root to leaf).
>
> After digging out that an aggregation points to both
> connected classes and
> each class references its stereotype, I tried to use keys to
> resolve the
> references. The aggregation4s direction can be seen in the
> "aggregation"
> attribute of each of the two end points ("none" ->
> "aggregate"). But after
> identifying the leaf classes I don4t manage it to follow the
> aggregation...
>
> Here is my stylesheet:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="2.0" xmlns:UML="org.omg.xmi.namespace.UML"
> exclude-result-prefixes="UML">
>
> <!-- *** <Keys> ************************************************ -->
> <xsl:key name="package_by_name" match="UML:Package" use="@name" />
> <xsl:key name="stereotype_by_name" match="UML:Stereotype"
> use="@name" />
> <xsl:key name="class_by_stereotypeReference" match="UML:Class"
> use="UML:ModelElement.stereotype/UML:Stereotype/@xmi.idref" />
> <xsl:key name="class_by_ID" match="UML:Class" use="@xmi.id" />
> <xsl:key name="aggregation_by_classReference"
> match="UML:Association.connection"
> use="UML:AssociationEnd[@aggregation='none']/UML:AssociationEn
> d.participant/UML:Class/@xmi.idref"
> />
> <!-- *** </Keys> *********************************************** -->
>
>
> <xsl:template match="/">
> <xsl:apply-templates select="key('stereotype_by_name', 'leaf')" />
> </xsl:template>
>
> <xsl:template match="UML:Stereotype">
> <xsl:apply-templates
> select="key('class_by_stereotypeReference', @xmi.id)"/>
> </xsl:template>
>
> <!-- now i should have only leaf classes -->
> <xsl:template match="UML:Class">
>   <xsl:for-each select="." >
>   <!-- here i have to find the aggregation -->
>   <!-- pointing to this class, actually not working -->
>     <xsl:value-of
> select="key('aggregation_by_classReference',./@xmi.id)/@xmi.id"/>
>   </xsl:for-each>
> </xsl:template>
> </xsl:stylesheet>
>
> A part of the XMI file looks like this:
>
> <XMI.content>
>  <UML:Model name="Views" xmi.id="Model_id_1">
>   <UML:Namespace.ownedElement>
>
>    <UML:Stereotype xmi.id="Stereotype_id_1" name="node"
> ></UML:Stereotype>
>    <UML:Stereotype xmi.id="Stereotype_id_2" name="leaf"
> ></UML:Stereotype>
>
>    <UML:Package name="Package_Tree" xmi.id="Package_id_1">
>     <UML:Namespace.ownedElement>
>
>      <UML:Class name="Node_1" xmi.id="Node_id_1">
>       <UML:ModelElement.stereotype>
>        <UML:Stereotype xmi.idref="Stereotype_id_1"/>
>       </UML:ModelElement.stereotype>
>      </UML:Class>
>
>      <UML:Association xmi.id="Aggregation_id_1">
>       <UML:Association.connection>
>
>        <UML:AssociationEnd aggregation="none">
>         <UML:AssociationEnd.participant>
>          <UML:Class xmi.idref="Node_id_2"/>
>         </UML:AssociationEnd.participant>
>        </UML:AssociationEnd>
>
>        <UML:AssociationEnd aggregation="aggregate">
>         <UML:AssociationEnd.participant>
>          <UML:Class xmi.idref="Node_id_1"/>
>         </UML:AssociationEnd.participant>
>        </UML:AssociationEnd>
>
>       </UML:Association.connection>
>      </UML:Association>
>
>      <UML:Class name="Node_2" xmi.id="Node_id_2">
>       <UML:ModelElement.stereotype>
>        <UML:Stereotype xmi.idref="Stereotype_id_2"/>
>       </UML:ModelElement.stereotype>
>      </UML:Class>
>
>     </UML:Namespace.ownedElement>
> 		   </UML:Package>
>
>   </UML:Namespace.ownedElement>
>  </UML:Model>
> </XMI.content>
>
> So if somebody could help me with some ideas how to follow
> the connection
> between my nodes, I would be very happy!
>
> Thanks in advance
> Christian
>
> --
> Telefonieren Sie schon oder sparen Sie noch?
> NEU: GMX Phone_Flat http://www.gmx.net/de/go/telefonie

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.