|
|
|
|
<?xml version="1.0"?>
|
|
|
|
|
<!DOCTYPE article PUBLIC "-//OASIS//DTD Simplified DocBook XML V4.1.2.5//EN"
|
|
|
|
|
"http://www.oasis-open.org/docbook/xml/simple/4.1.2.5/sdocbook.dtd"
|
|
|
|
|
[ <!ENTITY % common SYSTEM "common.ent" > %common;] >
|
|
|
|
|
|
|
|
|
|
<!--
|
|
|
|
|
Title: umbrello-xmi-to-html.xsl
|
|
|
|
|
Purpose: An XSL stylesheet for converting Umbrello 1.4 XMI to HTML.
|
|
|
|
|
Based on xmi-to-html.xsl from Objects by Design.
|
|
|
|
|
|
|
|
|
|
Copyright (C) 1999-2001, Objects by Design, Inc. All Rights Reserved.
|
|
|
|
|
Copyright (C) 2005, Oliver M. Kellogg <okellogg@users.sourceforge.net>
|
|
|
|
|
Copyright (C) 2006, Gaël de Chalendar (Kleag) <kleag@free.fr>
|
|
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
|
the Free Software Foundation. A copy of the license may be found at
|
|
|
|
|
http://www.gnu.org/licenses/gpl.html
|
|
|
|
|
|
|
|
|
|
Version: June, 16 2006
|
|
|
|
|
|
|
|
|
|
xmlns="http://www.w3.org/1999/xhtml"
|
|
|
|
|
-->
|
|
|
|
|
|
|
|
|
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
|
|
|
version="1.0"
|
|
|
|
|
xmlns:UML="http://schema.omg.org/spec/UML/1.3"
|
|
|
|
|
exclude-result-prefixes="UML">
|
|
|
|
|
|
|
|
|
|
<xsl:output method="xml" indent="yes"
|
|
|
|
|
doctype-system="http://www.oasis-open.org/docbook/xml/simple/4.1.2.5/sdocbook.dtd"
|
|
|
|
|
doctype-public="-//OASIS//DTD Simplified DocBook XML V4.1.2.5//EN" />
|
|
|
|
|
|
|
|
|
|
<xsl:key
|
|
|
|
|
name="classifier"
|
|
|
|
|
match="//UML:Class"
|
|
|
|
|
use="@xmi.id"/>
|
|
|
|
|
|
|
|
|
|
<xsl:key
|
|
|
|
|
name="generalization"
|
|
|
|
|
match="//UML:Generalization"
|
|
|
|
|
use="@xmi.id"/>
|
|
|
|
|
|
|
|
|
|
<xsl:key
|
|
|
|
|
name="abstraction"
|
|
|
|
|
match="//UML:Abstraction"
|
|
|
|
|
use="@xmi.id"/>
|
|
|
|
|
|
|
|
|
|
<xsl:key
|
|
|
|
|
name="multiplicity"
|
|
|
|
|
match="//UML:Multiplicity"
|
|
|
|
|
use="@xmi.id"/>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Document Root -->
|
|
|
|
|
<xsl:template match="/">
|
|
|
|
|
<article role="specification">
|
|
|
|
|
<xsl:apply-templates select="//UML:Model" mode="title"/>
|
|
|
|
|
|
|
|
|
|
<!-- Actors -->
|
|
|
|
|
<section id="actors">
|
|
|
|
|
<title>Actors</title>
|
|
|
|
|
<xsl:apply-templates select="//UML:Actor"/>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<!-- Use Cases -->
|
|
|
|
|
<section id="usecases">
|
|
|
|
|
<title>Use Cases</title>
|
|
|
|
|
<xsl:apply-templates select="//UML:UseCase"/>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<!-- Interfaces -->
|
|
|
|
|
<section id="interfaces">
|
|
|
|
|
<title>Interfaces</title>
|
|
|
|
|
<xsl:apply-templates select="//UML:Interface"/>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<!-- Classes -->
|
|
|
|
|
<section id="classes">
|
|
|
|
|
<title>Classes</title>
|
|
|
|
|
<xsl:apply-templates select="//UML:Class"/>
|
|
|
|
|
</section>
|
|
|
|
|
<!-- Diagrams -->
|
|
|
|
|
<section id="diagrams">
|
|
|
|
|
<title>Diagrams</title>
|
|
|
|
|
<xsl:apply-templates select="//diagrams/diagram"/>
|
|
|
|
|
</section>
|
|
|
|
|
</article>
|
|
|
|
|
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Window Title -->
|
|
|
|
|
<xsl:template match="UML:Model" mode="title">
|
|
|
|
|
<title>
|
|
|
|
|
<!-- Name of the model -->
|
|
|
|
|
<xsl:value-of select="@name"/>
|
|
|
|
|
</title>
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Actor -->
|
|
|
|
|
<xsl:template match="UML:Actor">
|
|
|
|
|
<xsl:variable name="element_name" select="@name"/>
|
|
|
|
|
<xsl:variable name="xmi_id" select="@xmi.id" />
|
|
|
|
|
<xsl:variable name="comment" select="@comment" />
|
|
|
|
|
|
|
|
|
|
<section>
|
|
|
|
|
<title><xsl:value-of select="$element_name"/></title>
|
|
|
|
|
|
|
|
|
|
<table frame='all'><title></title>
|
|
|
|
|
<tgroup cols='3' align='left' colsep='1' rowsep='1'>
|
|
|
|
|
<colspec colname='c1'/>
|
|
|
|
|
<colspec colname='c2'/>
|
|
|
|
|
<colspec colname='c3'/>
|
|
|
|
|
<thead>
|
|
|
|
|
<row>
|
|
|
|
|
<entry role="class-title" >Actor</entry>
|
|
|
|
|
<entry role="class-name" namest="c2" nameend="c3" ><xsl:value-of select="$element_name"/></entry>
|
|
|
|
|
</row>
|
|
|
|
|
</thead>
|
|
|
|
|
<tbody>
|
|
|
|
|
<xsl:if test="count($comment) > 0">
|
|
|
|
|
<row>
|
|
|
|
|
<entry role="comment" namest="c1" nameend="c3" ><para><xsl:value-of select="$comment"/></para></entry>
|
|
|
|
|
</row>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
|
|
<xsl:call-template name="specifications"/>
|
|
|
|
|
|
|
|
|
|
<xsl:call-template name="realizations"/>
|
|
|
|
|
|
|
|
|
|
<xsl:call-template name="supertypes"/>
|
|
|
|
|
|
|
|
|
|
<xsl:call-template name="subtypes"/>
|
|
|
|
|
|
|
|
|
|
<xsl:call-template name="associations">
|
|
|
|
|
<xsl:with-param name="source" select="$xmi_id"/>
|
|
|
|
|
</xsl:call-template>
|
|
|
|
|
|
|
|
|
|
</tbody>
|
|
|
|
|
</tgroup>
|
|
|
|
|
</table>
|
|
|
|
|
|
|
|
|
|
</section>
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
<!-- Use Case -->
|
|
|
|
|
<xsl:template match="UML:UseCase">
|
|
|
|
|
<xsl:variable name="element_name" select="@name"/>
|
|
|
|
|
<xsl:variable name="xmi_id" select="@xmi.id" />
|
|
|
|
|
<xsl:variable name="comment" select="@comment" />
|
|
|
|
|
|
|
|
|
|
<section>
|
|
|
|
|
<title><xsl:value-of select="$element_name"/></title>
|
|
|
|
|
|
|
|
|
|
<table frame='all'><title></title>
|
|
|
|
|
<tgroup cols='3' align='left' colsep='1' rowsep='1'>
|
|
|
|
|
<colspec colname='c1'/>
|
|
|
|
|
<colspec colname='c2'/>
|
|
|
|
|
<colspec colname='c3'/>
|
|
|
|
|
<thead>
|
|
|
|
|
<row>
|
|
|
|
|
<entry role="class-title" >Use Case</entry>
|
|
|
|
|
<entry role="class-name" namest="c2" nameend="c3" ><xsl:value-of select="$element_name"/></entry>
|
|
|
|
|
</row>
|
|
|
|
|
</thead>
|
|
|
|
|
<tbody>
|
|
|
|
|
<xsl:if test="count($comment) > 0">
|
|
|
|
|
<row>
|
|
|
|
|
<entry role="comment" namest="c1" nameend="c3" ><para><xsl:value-of select="$comment"/></para></entry>
|
|
|
|
|
</row>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
|
|
<xsl:call-template name="specifications"/>
|
|
|
|
|
|
|
|
|
|
<xsl:call-template name="realizations"/>
|
|
|
|
|
|
|
|
|
|
<xsl:call-template name="supertypes"/>
|
|
|
|
|
|
|
|
|
|
<xsl:call-template name="subtypes"/>
|
|
|
|
|
|
|
|
|
|
<xsl:call-template name="associations">
|
|
|
|
|
<xsl:with-param name="source" select="$xmi_id"/>
|
|
|
|
|
</xsl:call-template>
|
|
|
|
|
|
|
|
|
|
</tbody>
|
|
|
|
|
</tgroup>
|
|
|
|
|
</table>
|
|
|
|
|
|
|
|
|
|
</section>
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Interface -->
|
|
|
|
|
<xsl:template match="UML:Interface">
|
|
|
|
|
<xsl:variable name="element_name" select="@name"/>
|
|
|
|
|
<xsl:variable name="comment" select="@comment" />
|
|
|
|
|
<xsl:variable name="realizations"
|
|
|
|
|
select="Foundation.Core.ModelElement.supplierDependency/
|
|
|
|
|
Foundation.Core.Abstraction"/>
|
|
|
|
|
<xsl:variable name="generalizations"
|
|
|
|
|
select="UML:Generalization"/>
|
|
|
|
|
<xsl:variable name="specializations"
|
|
|
|
|
select="Foundation.Core.GeneralizableElement.specialization/
|
|
|
|
|
Foundation.Core.Generalization"/>
|
|
|
|
|
<xsl:variable name="class_operations"
|
|
|
|
|
select="UML:Classifier.feature/UML:Operation" />
|
|
|
|
|
<section>
|
|
|
|
|
<title><xsl:value-of select="$element_name"/></title>
|
|
|
|
|
<table frame='all'><title></title>
|
|
|
|
|
<tgroup cols='3' align='left' colsep='1' rowsep='1'>
|
|
|
|
|
<colspec colname='c1'/>
|
|
|
|
|
<colspec colname='c2'/>
|
|
|
|
|
<colspec colname='c3'/>
|
|
|
|
|
<thead>
|
|
|
|
|
<row>
|
|
|
|
|
<entry role="class-title" >Interface</entry>
|
|
|
|
|
<entry role="class-name" namest="c2" nameend="c3" ><xsl:value-of select="$element_name"/></entry>
|
|
|
|
|
</row>
|
|
|
|
|
</thead>
|
|
|
|
|
<tbody>
|
|
|
|
|
<xsl:if test="count($comment) > 0">
|
|
|
|
|
<row>
|
|
|
|
|
<entry role="comment" namest="c1" nameend="c3" ><para><xsl:value-of select="$comment"/></para></entry>
|
|
|
|
|
</row>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
<xsl:if test="count($class_operations) = 0">
|
|
|
|
|
<row>
|
|
|
|
|
<entry namest="c1" nameend="c3" ><para/></entry>
|
|
|
|
|
</row>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
|
|
<xsl:if test="count($realizations) = 0
|
|
|
|
|
and count($generalizations) = 0
|
|
|
|
|
and count($specializations) = 0
|
|
|
|
|
and count($class_operations) = 0">
|
|
|
|
|
</xsl:if>
|
|
|
|
|
<xsl:call-template name="realizations"/>
|
|
|
|
|
<xsl:call-template name="supertypes"/>
|
|
|
|
|
<xsl:call-template name="subtypes"/>
|
|
|
|
|
<xsl:call-template name="operations"/>
|
|
|
|
|
</tbody>
|
|
|
|
|
</tgroup>
|
|
|
|
|
</table>
|
|
|
|
|
|
|
|
|
|
</section>
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Class -->
|
|
|
|
|
<xsl:template match="UML:Class">
|
|
|
|
|
<xsl:variable name="element_name" select="@name"/>
|
|
|
|
|
<xsl:variable name="xmi_id" select="@xmi.id" />
|
|
|
|
|
<xsl:variable name="comment" select="@comment" />
|
|
|
|
|
<xsl:variable name="class_attributes"
|
|
|
|
|
select="UML:Classifier.feature/UML:Attribute" />
|
|
|
|
|
<xsl:variable name="class_operations"
|
|
|
|
|
select="UML:Classifier.feature/UML:Operation" />
|
|
|
|
|
|
|
|
|
|
<section>
|
|
|
|
|
<title><xsl:value-of select="$element_name"/></title>
|
|
|
|
|
|
|
|
|
|
<table frame='all'><title></title>
|
|
|
|
|
<tgroup cols='3' align='left' colsep='1' rowsep='1'>
|
|
|
|
|
<colspec colname='c1'/>
|
|
|
|
|
<colspec colname='c2'/>
|
|
|
|
|
<colspec colname='c3'/>
|
|
|
|
|
<thead>
|
|
|
|
|
<row>
|
|
|
|
|
<entry role="class-title" >Class</entry>
|
|
|
|
|
<entry role="class-name" namest="c2" nameend="c3" ><xsl:value-of select="$element_name"/></entry>
|
|
|
|
|
</row>
|
|
|
|
|
</thead>
|
|
|
|
|
<tbody>
|
|
|
|
|
<xsl:if test="count($comment) > 0">
|
|
|
|
|
<row>
|
|
|
|
|
<entry role="comment" namest="c1" nameend="c3" ><para><xsl:value-of select="$comment"/></para></entry>
|
|
|
|
|
</row>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
<xsl:if test="count($class_attributes) = 0
|
|
|
|
|
and count($class_operations) = 0">
|
|
|
|
|
<row>
|
|
|
|
|
<entry namest="c1" nameend="c3" ><para/></entry>
|
|
|
|
|
</row>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
|
|
<xsl:call-template name="specifications"/>
|
|
|
|
|
|
|
|
|
|
<xsl:call-template name="realizations"/>
|
|
|
|
|
|
|
|
|
|
<xsl:call-template name="supertypes"/>
|
|
|
|
|
|
|
|
|
|
<xsl:call-template name="subtypes"/>
|
|
|
|
|
|
|
|
|
|
<xsl:call-template name="associations">
|
|
|
|
|
<xsl:with-param name="source" select="$xmi_id"/>
|
|
|
|
|
</xsl:call-template>
|
|
|
|
|
|
|
|
|
|
<xsl:call-template name="attributes"/>
|
|
|
|
|
|
|
|
|
|
<xsl:call-template name="operations"/>
|
|
|
|
|
</tbody>
|
|
|
|
|
</tgroup>
|
|
|
|
|
</table>
|
|
|
|
|
|
|
|
|
|
</section>
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:template match="diagrams/diagram">
|
|
|
|
|
<xsl:variable name="xmi_id" select="@xmi.id" />
|
|
|
|
|
<xsl:comment >diagrambegin<xsl:value-of select="position()"/>namebegin<xsl:value-of select="@name"/>nameend</xsl:comment>
|
|
|
|
|
<xsl:comment >diagram<xsl:value-of select="position()"/>documentationbegin<xsl:value-of select="@documentation"/>documentationend</xsl:comment>
|
|
|
|
|
|
|
|
|
|
<section>
|
|
|
|
|
<title><xsl:value-of select="@name"/></title>
|
|
|
|
|
<para>
|
|
|
|
|
<xsl:value-of select="@documentation"/>
|
|
|
|
|
</para>
|
|
|
|
|
<mediaobject>
|
|
|
|
|
<imageobject>
|
|
|
|
|
<imagedata format="PNG">
|
|
|
|
|
<xsl:attribute name="fileref"><xsl:value-of select="@name"/>
|
|
|
|
|
<xsl:text>.png</xsl:text>
|
|
|
|
|
</xsl:attribute>
|
|
|
|
|
</imagedata>
|
|
|
|
|
</imageobject>
|
|
|
|
|
</mediaobject>
|
|
|
|
|
</section>
|
|
|
|
|
<xsl:if test="widgets/actorwidget">
|
|
|
|
|
<section>
|
|
|
|
|
<title>&actor;</title>
|
|
|
|
|
<xsl:for-each select="widgets/actorwidget">
|
|
|
|
|
<xsl:call-template name="actor"/>
|
|
|
|
|
</xsl:for-each>
|
|
|
|
|
</section>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
|
|
<xsl:if test="widgets/usecasewidget">
|
|
|
|
|
<section>
|
|
|
|
|
<title>&usecase;</title>
|
|
|
|
|
<xsl:for-each select="widgets/usecasewidget">
|
|
|
|
|
<xsl:call-template name="usecase"/>
|
|
|
|
|
</xsl:for-each>
|
|
|
|
|
</section>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
|
|
<xsl:if test="widgets/classwidget">
|
|
|
|
|
<section>
|
|
|
|
|
<title>&classes;</title>
|
|
|
|
|
<para/>
|
|
|
|
|
<!--xsl:for-each select="widgets/classwidget">
|
|
|
|
|
<xsl:call-template name="class"/>
|
|
|
|
|
</xsl:for-each-->
|
|
|
|
|
</section>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
|
|
<xsl:comment >diagramend<xsl:value-of select="position()"/></xsl:comment>
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- The following template is designed to be called for Abstractions with the "realize"
|
|
|
|
|
stereotype, i.e. Realization relationships. It formats the name of the supplier of the
|
|
|
|
|
Abstraction dependency, i.e. the class or interface specifying the behaviour of the
|
|
|
|
|
client in the dependency.
|
|
|
|
|
-->
|
|
|
|
|
<!-- Specifications (interface or class) -->
|
|
|
|
|
<xsl:template name="specifications">
|
|
|
|
|
|
|
|
|
|
<!-- Abstractions identify specifications -->
|
|
|
|
|
<xsl:variable name="specifications"
|
|
|
|
|
select="Foundation.Core.ModelElement.clientDependency/
|
|
|
|
|
Foundation.Core.Abstraction"/>
|
|
|
|
|
|
|
|
|
|
<xsl:if test="count($specifications) > 0">
|
|
|
|
|
<section>
|
|
|
|
|
<title>Specifications:</title>
|
|
|
|
|
<xsl:for-each select="$specifications">
|
|
|
|
|
<!-- get the supplier in the abstraction -->
|
|
|
|
|
<xsl:variable name="abstraction"
|
|
|
|
|
select="key('abstraction', ./@xmi.idref)" />
|
|
|
|
|
<xsl:variable name="target"
|
|
|
|
|
select="$abstraction/
|
|
|
|
|
Foundation.Core.Dependency.supplier/
|
|
|
|
|
*/@xmi.idref" />
|
|
|
|
|
<xsl:call-template name="classify">
|
|
|
|
|
<xsl:with-param name="target" select="$target"/>
|
|
|
|
|
</xsl:call-template>
|
|
|
|
|
|
|
|
|
|
<xsl:if test="position() != last()">
|
|
|
|
|
<xsl:text>, </xsl:text>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
</xsl:for-each>
|
|
|
|
|
</section>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- The following template is designed to be called for Abstractions with the "realize"
|
|
|
|
|
stereotype, i.e. Realization relationships. It formats the name of the client of the
|
|
|
|
|
Abstraction dependency, i.e. the class realizing the specification defined by the
|
|
|
|
|
supplier in the dependency.
|
|
|
|
|
-->
|
|
|
|
|
<!-- Realizations (of interface) -->
|
|
|
|
|
<xsl:template name="realizations">
|
|
|
|
|
|
|
|
|
|
<!-- Abstractions identify realizations -->
|
|
|
|
|
<xsl:variable name="realizations"
|
|
|
|
|
select="Foundation.Core.ModelElement.supplierDependency/
|
|
|
|
|
Foundation.Core.Abstraction"/>
|
|
|
|
|
|
|
|
|
|
<xsl:if test="count($realizations) > 0">
|
|
|
|
|
<section>
|
|
|
|
|
<title>Realizations:</title>
|
|
|
|
|
<xsl:for-each select="$realizations">
|
|
|
|
|
|
|
|
|
|
<!-- get the client in the abstraction -->
|
|
|
|
|
<xsl:variable name="abstraction"
|
|
|
|
|
select="key('abstraction', ./@xmi.idref)" />
|
|
|
|
|
<xsl:variable name="target"
|
|
|
|
|
select="$abstraction/
|
|
|
|
|
Foundation.Core.Dependency.client/
|
|
|
|
|
*/@xmi.idref" />
|
|
|
|
|
<xsl:call-template name="classify">
|
|
|
|
|
<xsl:with-param name="target" select="$target"/>
|
|
|
|
|
</xsl:call-template>
|
|
|
|
|
|
|
|
|
|
<xsl:if test="position() != last()">
|
|
|
|
|
<xsl:text>, </xsl:text>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
</xsl:for-each>
|
|
|
|
|
</section>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Supertypes (inheritance) -->
|
|
|
|
|
<xsl:template name="supertypes">
|
|
|
|
|
|
|
|
|
|
<!-- Generalizations identify supertypes -->
|
|
|
|
|
<xsl:variable name="generalizations"
|
|
|
|
|
select="UML:Generalization"/>
|
|
|
|
|
|
|
|
|
|
<xsl:if test="count($generalizations) > 0">
|
|
|
|
|
<section>
|
|
|
|
|
<title>Supertypes:</title>
|
|
|
|
|
<xsl:for-each select="$generalizations">
|
|
|
|
|
|
|
|
|
|
<!-- get the parent in the generalization -->
|
|
|
|
|
<xsl:variable name="generalization"
|
|
|
|
|
select="key('generalization', ./@xmi.idref)" />
|
|
|
|
|
<xsl:variable name="target"
|
|
|
|
|
select="$generalization/
|
|
|
|
|
Foundation.Core.Generalization.parent/
|
|
|
|
|
*/@xmi.idref" />
|
|
|
|
|
<xsl:call-template name="classify">
|
|
|
|
|
<xsl:with-param name="target" select="$target"/>
|
|
|
|
|
</xsl:call-template>
|
|
|
|
|
|
|
|
|
|
<xsl:if test="position() != last()">
|
|
|
|
|
<xsl:text>, </xsl:text>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
</xsl:for-each>
|
|
|
|
|
</section>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Subtypes (inheritance) -->
|
|
|
|
|
<xsl:template name="subtypes">
|
|
|
|
|
|
|
|
|
|
<!-- Specializations identify subtypes -->
|
|
|
|
|
<xsl:variable name="specializations"
|
|
|
|
|
select="Foundation.Core.GeneralizableElement.specialization/
|
|
|
|
|
Foundation.Core.Generalization"/>
|
|
|
|
|
|
|
|
|
|
<xsl:if test="count($specializations) > 0">
|
|
|
|
|
<section>
|
|
|
|
|
<title>Subtypes:</title>
|
|
|
|
|
<xsl:for-each select="$specializations">
|
|
|
|
|
|
|
|
|
|
<!-- get the child in the generalization -->
|
|
|
|
|
<xsl:variable name="generalization"
|
|
|
|
|
select="key('generalization', ./@xmi.idref)" />
|
|
|
|
|
<xsl:variable name="target"
|
|
|
|
|
select="$generalization/
|
|
|
|
|
Foundation.Core.Generalization.child/
|
|
|
|
|
*/@xmi.idref" />
|
|
|
|
|
<xsl:call-template name="classify">
|
|
|
|
|
<xsl:with-param name="target" select="$target"/>
|
|
|
|
|
</xsl:call-template>
|
|
|
|
|
|
|
|
|
|
<xsl:if test="position() != last()">
|
|
|
|
|
<xsl:text>, </xsl:text>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
</xsl:for-each>
|
|
|
|
|
</section>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Associations -->
|
|
|
|
|
<xsl:template name="associations">
|
|
|
|
|
<xsl:param name="source"/>
|
|
|
|
|
|
|
|
|
|
<xsl:variable name="association_ends"
|
|
|
|
|
select="//UML:AssociationEnd[@type=$source]" />
|
|
|
|
|
|
|
|
|
|
<xsl:if test="count($association_ends) > 0">
|
|
|
|
|
<section>
|
|
|
|
|
<title>Associations</title>
|
|
|
|
|
<para>visibility, type, properties.</para>
|
|
|
|
|
|
|
|
|
|
<xsl:for-each select="$association_ends">
|
|
|
|
|
<xsl:for-each select="preceding-sibling::UML:AssociationEnd |
|
|
|
|
|
following-sibling::UML:AssociationEnd">
|
|
|
|
|
|
|
|
|
|
<xsl:call-template name="association_end" />
|
|
|
|
|
|
|
|
|
|
</xsl:for-each>
|
|
|
|
|
</xsl:for-each>
|
|
|
|
|
</section>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Association End -->
|
|
|
|
|
<xsl:template name="association_end">
|
|
|
|
|
<!-- Visibility -->
|
|
|
|
|
<para>
|
|
|
|
|
<!--role="feature-detail"-->
|
|
|
|
|
<xsl:variable name="visibility"
|
|
|
|
|
select="@visibility" />
|
|
|
|
|
<xsl:choose>
|
|
|
|
|
<xsl:when test="string-length($visibility) > 0">
|
|
|
|
|
<xsl:value-of select="$visibility"/>
|
|
|
|
|
</xsl:when>
|
|
|
|
|
<xsl:otherwise>
|
|
|
|
|
<xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>
|
|
|
|
|
</xsl:otherwise>
|
|
|
|
|
</xsl:choose>
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<!-- Type -->
|
|
|
|
|
<para>
|
|
|
|
|
<!--role="feature-detail"-->
|
|
|
|
|
<xsl:variable name="target"
|
|
|
|
|
select="Foundation.Core.AssociationEnd.type/*/@xmi.idref" />
|
|
|
|
|
|
|
|
|
|
<xsl:call-template name="classify">
|
|
|
|
|
<xsl:with-param name="target" select="$target"/>
|
|
|
|
|
</xsl:call-template>
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<!-- Properties -->
|
|
|
|
|
<para>
|
|
|
|
|
<!--role="feature-detail"-->
|
|
|
|
|
<!-- Rolename -->
|
|
|
|
|
<xsl:variable name="rolename" select="@name"/>
|
|
|
|
|
|
|
|
|
|
<!--role="property-name"-->
|
|
|
|
|
Rolename:
|
|
|
|
|
<xsl:choose>
|
|
|
|
|
<xsl:when test="string-length($rolename) > 0">
|
|
|
|
|
<xsl:value-of select="$rolename"/>
|
|
|
|
|
</xsl:when>
|
|
|
|
|
<xsl:otherwise>(none)</xsl:otherwise>
|
|
|
|
|
</xsl:choose>
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<!-- Multiplicity -->
|
|
|
|
|
<xsl:apply-templates select=".//Foundation.Data_Types.Multiplicity" />
|
|
|
|
|
|
|
|
|
|
<!-- Navigable -->
|
|
|
|
|
<xsl:variable name="navigable"
|
|
|
|
|
select="Foundation.Core.AssociationEnd.isNavigable/@xmi.value"/>
|
|
|
|
|
<xsl:if test="string-length($navigable) > 0">
|
|
|
|
|
|
|
|
|
|
<para>
|
|
|
|
|
<!--role="property-name"-->
|
|
|
|
|
Navigable: <xsl:value-of select="$navigable"/>
|
|
|
|
|
</para>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
|
|
<!-- Ordering -->
|
|
|
|
|
<xsl:variable name="ordering"
|
|
|
|
|
select="Foundation.Core.AssociationEnd.ordering/@xmi.value"/>
|
|
|
|
|
<xsl:if test="string-length($ordering) > 0">
|
|
|
|
|
<para>
|
|
|
|
|
<!--role="property-name"-->
|
|
|
|
|
Ordering: <xsl:value-of select="$ordering"/>
|
|
|
|
|
</para>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Multiplicity (definition) -->
|
|
|
|
|
<xsl:template match="Foundation.Data_Types.Multiplicity[@xmi.id]">
|
|
|
|
|
|
|
|
|
|
<para>
|
|
|
|
|
<!--role="property-name"-->
|
|
|
|
|
Multiplicity:
|
|
|
|
|
|
|
|
|
|
<xsl:variable name="lower"
|
|
|
|
|
select=".//Foundation.Data_Types.MultiplicityRange.lower"/>
|
|
|
|
|
|
|
|
|
|
<xsl:variable name="upper"
|
|
|
|
|
select=".//Foundation.Data_Types.MultiplicityRange.upper"/>
|
|
|
|
|
|
|
|
|
|
<xsl:value-of select="$lower" />
|
|
|
|
|
<xsl:if test="$upper != $lower">
|
|
|
|
|
<xsl:text>..</xsl:text>
|
|
|
|
|
<xsl:value-of select="$upper" />
|
|
|
|
|
</xsl:if>
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
<!-- Multiplicity (reference) -->
|
|
|
|
|
<xsl:template match="Foundation.Data_Types.Multiplicity[@xmi.idref]">
|
|
|
|
|
<xsl:apply-templates select="key('multiplicity', @xmi.idref)" />
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Attributes -->
|
|
|
|
|
<xsl:template name="attributes">
|
|
|
|
|
<xsl:variable name="class_attributes"
|
|
|
|
|
select="UML:Classifier.feature/UML:Attribute" />
|
|
|
|
|
<xsl:if test="count($class_attributes) > 0">
|
|
|
|
|
<row>
|
|
|
|
|
<entry role="info-title" namest="c1" nameend="c3" >Attributes:</entry>
|
|
|
|
|
</row>
|
|
|
|
|
<row>
|
|
|
|
|
<entry role="feature-heading">visibility</entry>
|
|
|
|
|
<entry role="feature-heading">type</entry>
|
|
|
|
|
<entry role="feature-heading">name</entry>
|
|
|
|
|
</row>
|
|
|
|
|
<xsl:apply-templates select="UML:Classifier.feature/
|
|
|
|
|
UML:Attribute" />
|
|
|
|
|
</xsl:if>
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:template match="UML:Attribute">
|
|
|
|
|
<xsl:variable name="target"
|
|
|
|
|
select='@type'/>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<row>
|
|
|
|
|
<entry role="feature-detail">
|
|
|
|
|
<xsl:value-of select="@visibility"/>
|
|
|
|
|
</entry>
|
|
|
|
|
|
|
|
|
|
<entry role="feature-detail">
|
|
|
|
|
<xsl:call-template name="classify">
|
|
|
|
|
<xsl:with-param name="target" select="$target" />
|
|
|
|
|
</xsl:call-template>
|
|
|
|
|
</entry>
|
|
|
|
|
|
|
|
|
|
<entry role="feature-detail">
|
|
|
|
|
<xsl:value-of select="@name"/>
|
|
|
|
|
</entry>
|
|
|
|
|
</row>
|
|
|
|
|
|
|
|
|
|
<row>
|
|
|
|
|
<entry role="comment"/>
|
|
|
|
|
<entry namest="c2" nameend="c3" role="comment"><xsl:value-of select="@comment"/></entry>
|
|
|
|
|
</row>
|
|
|
|
|
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Operations -->
|
|
|
|
|
<xsl:template name="operations">
|
|
|
|
|
<xsl:variable name="class_operations"
|
|
|
|
|
select="UML:Classifier.feature/UML:Operation" />
|
|
|
|
|
<xsl:if test="count($class_operations) > 0">
|
|
|
|
|
<row>
|
|
|
|
|
<entry role="info-title" namest="c1" nameend="c3" ><para>Operations:</para></entry>
|
|
|
|
|
</row>
|
|
|
|
|
<row>
|
|
|
|
|
<entry role="feature-heading" ><para>visibility</para></entry>
|
|
|
|
|
<entry role="feature-heading" ><para>return</para></entry>
|
|
|
|
|
<entry role="feature-heading" ><para>name</para></entry>
|
|
|
|
|
</row>
|
|
|
|
|
|
|
|
|
|
<xsl:apply-templates select="UML:Classifier.feature/
|
|
|
|
|
UML:Operation" />
|
|
|
|
|
</xsl:if>
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:template match="UML:Operation">
|
|
|
|
|
|
|
|
|
|
<xsl:variable name="parameters"
|
|
|
|
|
select="UML:BehavioralFeature.parameter/
|
|
|
|
|
UML:Parameter[@kind!='return']" />
|
|
|
|
|
|
|
|
|
|
<xsl:variable name="return"
|
|
|
|
|
select="UML:BehavioralFeature.parameter/
|
|
|
|
|
UML:Parameter[@kind='return']" />
|
|
|
|
|
|
|
|
|
|
<xsl:variable name="target"
|
|
|
|
|
select="$return/@type" />
|
|
|
|
|
|
|
|
|
|
<row>
|
|
|
|
|
<entry role="feature-detail">
|
|
|
|
|
<xsl:value-of select="@visibility" />
|
|
|
|
|
</entry>
|
|
|
|
|
|
|
|
|
|
<entry role="feature-detail">
|
|
|
|
|
|
|
|
|
|
<xsl:choose>
|
|
|
|
|
<xsl:when test="string-length($target) = 0">
|
|
|
|
|
<para role="datatype"><xsl:text>void</xsl:text></para>
|
|
|
|
|
</xsl:when>
|
|
|
|
|
|
|
|
|
|
<xsl:otherwise>
|
|
|
|
|
<xsl:call-template name="classify">
|
|
|
|
|
<xsl:with-param name="target" select="$target" />
|
|
|
|
|
</xsl:call-template>
|
|
|
|
|
</xsl:otherwise>
|
|
|
|
|
</xsl:choose>
|
|
|
|
|
|
|
|
|
|
</entry>
|
|
|
|
|
|
|
|
|
|
<entry role="feature-detail">
|
|
|
|
|
<xsl:value-of select="@name"/>
|
|
|
|
|
</entry>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</row>
|
|
|
|
|
|
|
|
|
|
<row>
|
|
|
|
|
<entry role="comment"/>
|
|
|
|
|
<entry namest="c2" nameend="c3" role="comment"><xsl:value-of select="@comment"/></entry>
|
|
|
|
|
</row>
|
|
|
|
|
|
|
|
|
|
<xsl:variable name="parameter-count" select="count($parameters)" />
|
|
|
|
|
|
|
|
|
|
<xsl:if test="not(normalize-space($parameter-count)='0')">
|
|
|
|
|
|
|
|
|
|
<row>
|
|
|
|
|
<entry role="feature-detail" >
|
|
|
|
|
<xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>
|
|
|
|
|
</entry>
|
|
|
|
|
|
|
|
|
|
<entry role="parameter-heading" valign="top">parameters:</entry>
|
|
|
|
|
<entry bgcolor="#ffffff" align="right">
|
|
|
|
|
<!--table width="85%" align="right" cellpadding="0" cellspacing="0" border="0">
|
|
|
|
|
<xsl:apply-templates select="$parameters" />
|
|
|
|
|
</table-->
|
|
|
|
|
</entry>
|
|
|
|
|
</row>
|
|
|
|
|
|
|
|
|
|
</xsl:if >
|
|
|
|
|
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Parameter -->
|
|
|
|
|
<xsl:template match="UML:Parameter">
|
|
|
|
|
<xsl:variable name="target"
|
|
|
|
|
select="@type" />
|
|
|
|
|
|
|
|
|
|
<row>
|
|
|
|
|
<entry role="feature-detail" width="45%">
|
|
|
|
|
<xsl:call-template name="classify">
|
|
|
|
|
<xsl:with-param name="target" select="$target" />
|
|
|
|
|
</xsl:call-template>
|
|
|
|
|
</entry>
|
|
|
|
|
|
|
|
|
|
<entry role="feature-detail" width="55%">
|
|
|
|
|
<xsl:value-of select="@name"/>
|
|
|
|
|
</entry>
|
|
|
|
|
</row>
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Classification -->
|
|
|
|
|
<xsl:template name="classify">
|
|
|
|
|
<xsl:param name="target"/>
|
|
|
|
|
|
|
|
|
|
<xsl:variable name="classifier"
|
|
|
|
|
select="key('classifier', $target)" />
|
|
|
|
|
|
|
|
|
|
<xsl:variable name="classifier_name"
|
|
|
|
|
select="$classifier/@name" />
|
|
|
|
|
|
|
|
|
|
<xsl:variable name="type" select="name($classifier)" />
|
|
|
|
|
|
|
|
|
|
<!-- Get the type of the classifier (class, interface, datatype) -->
|
|
|
|
|
<xsl:variable name="classifier_type">
|
|
|
|
|
<xsl:choose>
|
|
|
|
|
<xsl:when test="$type='UML:Class'">classifier</xsl:when>
|
|
|
|
|
<xsl:when test="$type='UML:Interface'">interface</xsl:when>
|
|
|
|
|
<xsl:when test="$type='UML:DataType'">datatype</xsl:when>
|
|
|
|
|
<xsl:otherwise>classifier</xsl:otherwise>
|
|
|
|
|
</xsl:choose>
|
|
|
|
|
</xsl:variable>
|
|
|
|
|
|
|
|
|
|
<xsl:choose>
|
|
|
|
|
<!-- Datatypes don't have hyperlinks -->
|
|
|
|
|
<xsl:when test="$type='UML:DataType'">
|
|
|
|
|
<span role="datatype">
|
|
|
|
|
<xsl:value-of select="$classifier_name"/>
|
|
|
|
|
</span>
|
|
|
|
|
</xsl:when>
|
|
|
|
|
|
|
|
|
|
<!-- Classes and Interfaces have hyperlinks -->
|
|
|
|
|
<!-- The classifier type is used to style appropriately -->
|
|
|
|
|
<xsl:otherwise>
|
|
|
|
|
<xsl:if test="string-length($classifier) > 0">
|
|
|
|
|
<!--a role={$classifier_type}" href="#{$classifier_name}"-->
|
|
|
|
|
<xsl:value-of select="$classifier_name"/>
|
|
|
|
|
<!--/a-->
|
|
|
|
|
</xsl:if>
|
|
|
|
|
</xsl:otherwise>
|
|
|
|
|
</xsl:choose>
|
|
|
|
|
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
<!--xsl:template match="XMI.content">
|
|
|
|
|
|
|
|
|
|
<xsl:comment >maintitlebegin1&title1;maintitleend1</xsl:comment>
|
|
|
|
|
<xsl:comment >maintitlebegin2&title2;maintitleend2</xsl:comment>
|
|
|
|
|
<xsl:apply-templates select="diagrams/diagram"/>
|
|
|
|
|
</xsl:template-->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:template name="actor">
|
|
|
|
|
<xsl:param name = "idvalue"><xsl:value-of select="@xmi.id"/></xsl:param>
|
|
|
|
|
<!--td valign="top"-->
|
|
|
|
|
<para>
|
|
|
|
|
<!--role="push"-->
|
|
|
|
|
<xsl:for-each select="//XMI.content/umlobjects/UML:Actor">
|
|
|
|
|
<xsl:if test="@xmi.id = $idvalue">
|
|
|
|
|
<emphasis><xsl:value-of select="@name"/>:</emphasis>
|
|
|
|
|
<xsl:value-of select="@documentation"/>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
</xsl:for-each >
|
|
|
|
|
</para>
|
|
|
|
|
<!--/td-->
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
<xsl:template name="usecase">
|
|
|
|
|
<xsl:param name = "idvalue"><xsl:value-of select="@xmi.id"/></xsl:param>
|
|
|
|
|
<!--td valign="top"-->
|
|
|
|
|
<para>
|
|
|
|
|
<!--role="push"-->
|
|
|
|
|
<xsl:for-each select="//XMI.content/umlobjects/UML:UseCase">
|
|
|
|
|
<xsl:if test="@xmi.id = $idvalue">
|
|
|
|
|
<emphasis><xsl:value-of select="@name"/>:</emphasis>
|
|
|
|
|
<xsl:value-of select="@documentation"/>
|
|
|
|
|
|
|
|
|
|
</xsl:if>
|
|
|
|
|
</xsl:for-each >
|
|
|
|
|
</para>
|
|
|
|
|
<!--/td-->
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
<xsl:template name="class">
|
|
|
|
|
<xsl:param name = "idvalue"><xsl:value-of select="@xmi.id"/></xsl:param>
|
|
|
|
|
<!--td valign="top"-->
|
|
|
|
|
<div role="push">
|
|
|
|
|
<xsl:for-each select="//XMI.content/umlobjects/UML:Class">
|
|
|
|
|
<xsl:if test="@xmi.id = $idvalue">
|
|
|
|
|
<div role="boldtext">&packagename;<xsl:value-of select="@package"/></div>
|
|
|
|
|
<div role="boldtext">&classname;<xsl:value-of select="@name"/></div>
|
|
|
|
|
<xsl:value-of select="@documentation"/>
|
|
|
|
|
<div role="push">
|
|
|
|
|
|
|
|
|
|
Stereotype: <xsl:value-of select="@stereotype"/>
|
|
|
|
|
|
|
|
|
|
Abstarct:
|
|
|
|
|
<xsl:if test="@abstract='1'">
|
|
|
|
|
<xsl:text>&yes;</xsl:text>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
<xsl:if test="@abstract='0'">
|
|
|
|
|
<xsl:text>&no;</xsl:text>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
|
|
Visibility:
|
|
|
|
|
<xsl:if test="@scope='200'">
|
|
|
|
|
<xsl:text>public</xsl:text>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
<xsl:if test="@scope='201'">
|
|
|
|
|
<xsl:text>private</xsl:text>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
<xsl:if test="@scope='202'">
|
|
|
|
|
<xsl:text>protected</xsl:text>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
|
|
<xsl:call-template name="attribute"/>
|
|
|
|
|
<xsl:call-template name="operation"/>
|
|
|
|
|
</div>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
</xsl:for-each >
|
|
|
|
|
</div>
|
|
|
|
|
<!--/td-->
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<xsl:template name="attribute">
|
|
|
|
|
<!--td valign="top"-->
|
|
|
|
|
<div role="boldtext">&attributes;</div>
|
|
|
|
|
|
|
|
|
|
<xsl:for-each select="UML:Attribute">
|
|
|
|
|
<xsl:value-of select="@name"/><xsl:text> - </xsl:text><xsl:value-of select="@type"/>
|
|
|
|
|
Static:
|
|
|
|
|
<xsl:if test="@static='1'">
|
|
|
|
|
<xsl:text>&yes;</xsl:text>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
<xsl:if test="@static='0'">
|
|
|
|
|
<xsl:text>&no;</xsl:text>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
|
|
Visibility:
|
|
|
|
|
<xsl:if test="@scope='200'">
|
|
|
|
|
<xsl:text>public</xsl:text>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
<xsl:if test="@scope='201'">
|
|
|
|
|
<xsl:text>private</xsl:text>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
<xsl:if test="@scope='202'">
|
|
|
|
|
<xsl:text>protected</xsl:text>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
|
|
Default <20>t<EFBFBD>: <xsl:value-of select="@value"/>
|
|
|
|
|
|
|
|
|
|
<xsl:value-of select="@documentation"/>
|
|
|
|
|
|
|
|
|
|
</xsl:for-each >
|
|
|
|
|
<!--/td-->
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
<xsl:template name="operation">
|
|
|
|
|
<entry valign="top">
|
|
|
|
|
<div role="boldtext">&metodes;</div>
|
|
|
|
|
|
|
|
|
|
<xsl:for-each select="UML:Operation">
|
|
|
|
|
<i>
|
|
|
|
|
<xsl:if test="@abstract='1'">
|
|
|
|
|
<xsl:text>abstract </xsl:text>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
<xsl:if test="@scope='200'">
|
|
|
|
|
<xsl:text>public </xsl:text>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
<xsl:if test="@scope='201'">
|
|
|
|
|
<xsl:text>private </xsl:text>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
<xsl:if test="@scope='202'">
|
|
|
|
|
<xsl:text>protected </xsl:text>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
|
|
<xsl:value-of select="@type"/><xsl:text> </xsl:text>
|
|
|
|
|
|
|
|
|
|
<xsl:value-of select="@name"/><xsl:text>(</xsl:text>
|
|
|
|
|
|
|
|
|
|
<xsl:apply-templates select="UML:Parameter" mode="diagram"/>
|
|
|
|
|
<xsl:text>)</xsl:text>
|
|
|
|
|
|
|
|
|
|
</i>
|
|
|
|
|
<xsl:value-of select="@documentation"/>
|
|
|
|
|
¶meters;
|
|
|
|
|
<xsl:for-each select="UML:Parameter">
|
|
|
|
|
<div role="push">
|
|
|
|
|
<xsl:value-of select="@type"/>
|
|
|
|
|
<xsl:text> </xsl:text>
|
|
|
|
|
<xsl:value-of select="@name"/>
|
|
|
|
|
|
|
|
|
|
<xsl:value-of select="@documentation"/>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
</xsl:for-each>
|
|
|
|
|
|
|
|
|
|
</xsl:for-each >
|
|
|
|
|
</entry>
|
|
|
|
|
</xsl:template>
|
|
|
|
|
|
|
|
|
|
<xsl:template match="UML:Parameter" mode="diagram">
|
|
|
|
|
|
|
|
|
|
<xsl:value-of select="@type"/>
|
|
|
|
|
<xsl:text> </xsl:text>
|
|
|
|
|
<xsl:value-of select="@name"/>
|
|
|
|
|
<xsl:if test="position()!=last()">
|
|
|
|
|
<xsl:text>, </xsl:text>
|
|
|
|
|
</xsl:if>
|
|
|
|
|
|
|
|
|
|
</xsl:template>
|
|
|
|
|
</xsl:stylesheet>
|