[Lutingenerator-commits] r431 - lutingenerator/trunk/src/main/xsl
Author: schorlet Date: 2009-02-13 09:09:12 +0000 (Fri, 13 Feb 2009) New Revision: 431 Modified: lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl Log: Add operation raisedException Change fullClassName template invocation Modified: lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl =================================================================== --- lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl 2009-02-11 19:31:11 UTC (rev 430) +++ lutingenerator/trunk/src/main/xsl/xmi2.2ToObjectModel.xsl 2009-02-13 09:09:12 UTC (rev 431) @@ -156,7 +156,7 @@ <xsl:choose> <xsl:when test="supplier"> <xsl:call-template name="fullClassName"> - <xsl:with-param name="childpath">supplier</xsl:with-param> + <xsl:with-param name="node" select="supplier"/> </xsl:call-template> </xsl:when> @@ -176,9 +176,22 @@ <xsl:element name="superclass"> <xsl:attribute name="name"> - <xsl:call-template name="fullClassName"> - <xsl:with-param name="childpath">general</xsl:with-param> - </xsl:call-template> + + <xsl:choose> + <xsl:when test="general"> + <xsl:call-template name="fullClassName"> + <xsl:with-param name="node" select="general"/> + </xsl:call-template> + </xsl:when> + + <xsl:when test="@general"> + <xsl:call-template name="fullClassName2"> + <xsl:with-param name="node" + select="/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type='uml:Class'][@xmi:id=current()/@general]"/> + </xsl:call-template> + </xsl:when> + </xsl:choose> + </xsl:attribute> </xsl:element> </xsl:template> @@ -201,6 +214,18 @@ <xsl:value-of select="@name"/> </xsl:attribute> + <xsl:if test="@visibility"> + <xsl:attribute name="visibility"> + <xsl:value-of select="@visibility"/> + </xsl:attribute> + </xsl:if> + + <xsl:if test="@isAbstract='true'"> + <xsl:attribute name="abstract"> + <xsl:text>true</xsl:text> + </xsl:attribute> + </xsl:if> + <!-- operation parameters --> <xsl:for-each select="ownedParameter"> <xsl:choose> @@ -220,12 +245,59 @@ </xsl:choose> </xsl:for-each> + <!-- operation exceptions --> + <xsl:choose> + <xsl:when test="raisedException"> + <xsl:for-each select="raisedException"> + <xsl:element name="exceptionParameter"> + <xsl:attribute name="type"> + <xsl:call-template name="fullClassName"> + <xsl:with-param name="node" select="."/> + </xsl:call-template> + </xsl:attribute> + </xsl:element> + </xsl:for-each> + </xsl:when> + <xsl:when test="@raisedException"> + <xsl:call-template name="ownedOperation-raisedException"> + <xsl:with-param name="value" select="string(@raisedException)"/> + </xsl:call-template> + </xsl:when> + </xsl:choose> + </xsl:element> </xsl:template> <!-- . Named templates --> + + <!-- find reference listed in ownedOperation/@raisedException --> + <xsl:template name="ownedOperation-raisedException"> + <xsl:param name="value"/> + + <xsl:choose> + <xsl:when test="contains($value, ' ')"> + <xsl:call-template name="ownedOperation-raisedException"> + <xsl:with-param name="value" select="substring-before($value, ' ')"/> + </xsl:call-template> + <xsl:call-template name="ownedOperation-raisedException"> + <xsl:with-param name="value" select="substring-after($value, ' ')"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$value != ''"> + <xsl:element name="exceptionParameter"> + <xsl:attribute name="type"> + <xsl:call-template name="fullClassName2"> + <xsl:with-param name="node" + select="/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type='uml:Class'][@xmi:id=$value]"/> + </xsl:call-template> + </xsl:attribute> + </xsl:element> + </xsl:when> + </xsl:choose> + + </xsl:template> <!-- called by ownedAttribute and ownedOperation @@ -236,7 +308,7 @@ <xsl:when test="type"> <xsl:attribute name="type"> <xsl:call-template name="fullClassName"> - <xsl:with-param name="childpath">type</xsl:with-param> + <xsl:with-param name="node" select="type"/> </xsl:call-template> </xsl:attribute> </xsl:when> @@ -270,7 +342,7 @@ <xsl:choose> <xsl:when test="$endnode/type"> <xsl:attribute name="type"> - <xsl:call-template name="fullClassName3"> + <xsl:call-template name="fullClassName"> <xsl:with-param name="node" select="$endnode/type"/> </xsl:call-template> </xsl:attribute> @@ -390,7 +462,12 @@ </xsl:choose> </xsl:template> - <xsl:template name="fullClassName3"> + <!-- + node param must be a Xpath node. + the node designed by node param must have @xmi:type and @href attributes. + print fullClassName of type designed by node param (helped by fullClassName2 template). + --> + <xsl:template name="fullClassName"> <xsl:param name="node"/> <xsl:variable name="typeref" select="$node/@href"/> @@ -411,6 +488,12 @@ <!-- TODO: create resolver for ACCELEO resources --> <xsl:value-of select="$typeref"/> </xsl:when> + <xsl:when test="$external-url=''"> + <!-- internal reference --> + <xsl:call-template name="fullClassName2"> + <xsl:with-param name="node" select="/xmi:XMI/uml:Model/descendant::packagedElement[@xmi:type=$xmi-type][@xmi:id=$external-id]"/> + </xsl:call-template> + </xsl:when> <xsl:otherwise> <xsl:call-template name="fullClassName2"> <!-- TODO: create resolver for external resources --> @@ -423,23 +506,6 @@ </xsl:when> </xsl:choose> - </xsl:template> - <!-- - childpath param must be a Xpath relative path. - the node designed by childpath param must have @xmi:type and @href attributes. - print fullClassName of type designed by childpath param (helped by fullClassName2 template). - --> - <xsl:template name="fullClassName"> - <xsl:param name="childpath"/> - <xsl:variable name="child" select="child::*[name() = $childpath]"/> - - <xsl:if test="$child"> - <xsl:call-template name="fullClassName3"> - <xsl:with-param name="node" select="$child"/> - </xsl:call-template> - </xsl:if> - </xsl:template> - </xsl:stylesheet>
participants (1)
-
schorletï¼ users.labs.libre-entreprise.org