📄 transitiondescription.xsl
字号:
<?xml version="1.0" encoding="UTF-8"?>
<!--
Template: TransitionDescription.xsl
Displays Transition Description
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/2000/svg" xmlns:UML="org.omg.xmi.namespace.UML">
<xsl:import href="../Common/Styling.xsl"/>
<xsl:import href="../Common/StringTSpan.xsl"/>
<xsl:output media-type="image/svg+xml" method="xml" indent="yes"/>
<!-- TransitionDescription -->
<xsl:template name="TransitionDescription">
<xsl:param name="DiagramID" select="@xmi.id"/>
<xsl:param name="SemanticID" select="../../UML:GraphElement.semanticModel/UML:Uml1SemanticModelBridge/UML:Uml1SemanticModelBridge.element/*/@xmi.idref"/>
<!-- Main TransitionDescription group -->
<g transform="translate({UML:GraphElement.position/XMI.field[1]}, {UML:GraphElement.position/XMI.field[2]})" id="{$DiagramID}">
<xsl:apply-templates select="." mode="FontStyle"/>
<xsl:apply-templates select="." mode="StrokeStyle"/>
<xsl:apply-templates select="." mode="isVisible"/>
<desc><xsl:text>TransitionDescription</xsl:text></desc>
<!-- TransitionDescription text -->
<text stroke="none" baseline-shift="-100%">
<xsl:for-each select="UML:GraphElement.contained/UML:GraphNode">
<xsl:choose>
<xsl:when test="UML:GraphElement.semanticModel/UML:Uml1SemanticModelBridge/UML:Uml1SemanticModelBridge.element/UML:CallEvent">
<!-- CallEvent -->
<xsl:variable name="CallEventSemanticID" select="UML:GraphElement.semanticModel/UML:Uml1SemanticModelBridge/UML:Uml1SemanticModelBridge.element/*/@xmi.idref"/>
<xsl:for-each select="UML:GraphElement.contained/UML:GraphNode">
<xsl:choose>
<xsl:when test="UML:GraphElement.semanticModel/UML:SimpleSemanticModelElement/@typeInfo = 'Name'">
<xsl:call-template name="StringTSpan">
<xsl:with-param name="SemanticID" select="CallEventSemanticID"/>
<xsl:with-param name="String">
<xsl:choose>
<xsl:when test="key('xmi.id', $CallEventSemanticID)/@name">
<xsl:value-of select="key('xmi.id', $CallEventSemanticID)/@name"/>
</xsl:when>
<xsl:otherwise><xsl:text>anonymous</xsl:text></xsl:otherwise>
</xsl:choose>
</xsl:with-param>
<xsl:with-param name="x" select="../../UML:GraphElement.position/XMI.field[1] + UML:GraphElement.position/XMI.field[1]"/>
<xsl:with-param name="y" select="../../UML:GraphElement.position/XMI.field[2] + UML:GraphElement.position/XMI.field[2]"/>
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:when>
<xsl:when test="UML:GraphElement.semanticModel/UML:SimpleSemanticModelElement/@typeInfo = 'GuardStart'">
<!-- Guard start, '[' -->
<tspan x="{UML:GraphElement.position/XMI.field[1]}" y="{UML:GraphElement.position/XMI.field[2]}"><xsl:text>[</xsl:text></tspan>
</xsl:when>
<xsl:when test="UML:GraphElement.semanticModel/UML:Uml1SemanticModelBridge/UML:Uml1SemanticModelBridge.element/UML:Guard">
<!-- Transition guard -->
<xsl:variable name="GuardSemanticID" select="UML:GraphElement.semanticModel/UML:Uml1SemanticModelBridge/UML:Uml1SemanticModelBridge.element/*/@xmi.idref"/>
<xsl:for-each select="UML:GraphElement.contained/UML:GraphNode">
<xsl:choose>
<xsl:when test="UML:GraphElement.semanticModel/UML:SimpleSemanticModelElement/@typeInfo = 'Expression'">
<xsl:call-template name="StringTSpan">
<xsl:with-param name="SemanticID" select="GuardSemanticID"/>
<xsl:with-param name="String" select="key('xmi.id', $GuardSemanticID)/UML:Guard.expression/UML:BooleanExpression/@body"/>
<xsl:with-param name="x" select="../../UML:GraphElement.position/XMI.field[1] + UML:GraphElement.position/XMI.field[1]"/>
<xsl:with-param name="y" select="../../UML:GraphElement.position/XMI.field[2] + UML:GraphElement.position/XMI.field[2]"/>
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:when>
<xsl:when test="UML:GraphElement.semanticModel/UML:SimpleSemanticModelElement/@typeInfo = 'GuardEnd'">
<!-- Guard end, ']' -->
<tspan x="{UML:GraphElement.position/XMI.field[1]}" y="{UML:GraphElement.position/XMI.field[2]}"><xsl:text>]</xsl:text></tspan>
</xsl:when>
<xsl:when test="UML:GraphElement.semanticModel/UML:SimpleSemanticModelElement/@typeInfo = 'EffectStart'">
<!-- Effect start, '/' -->
<tspan x="{UML:GraphElement.position/XMI.field[1]}" y="{UML:GraphElement.position/XMI.field[2]}"><xsl:text>/</xsl:text></tspan>
</xsl:when>
<xsl:when test="UML:GraphElement.semanticModel/UML:SimpleSemanticModelElement/@typeInfo = 'Expression'">
<!-- Action expression -->
<xsl:call-template name="StringTSpan">
<xsl:with-param name="SemanticID" select="SemanticID"/>
<xsl:with-param name="String" select="key('xmi.id', $SemanticID)/UML:Action.script/UML:ActionExpression/@body"/>
<xsl:with-param name="x" select="UML:GraphElement.position/XMI.field[1]"/>
<xsl:with-param name="y" select="UML:GraphElement.position/XMI.field[2]"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="UML:GraphElement.semanticModel/UML:Uml1SemanticModelBridge/UML:Uml1SemanticModelBridge.element/UML:CallAction">
<!-- Call Action -->
<xsl:variable name="CallActionSemanticID" select="UML:GraphElement.semanticModel/UML:Uml1SemanticModelBridge/UML:Uml1SemanticModelBridge.element/*/@xmi.idref"/>
<xsl:for-each select="UML:GraphElement.contained/UML:GraphNode">
<xsl:choose>
<xsl:when test="UML:GraphElement.semanticModel/UML:SimpleSemanticModelElement/@typeInfo = 'Expression'">
<xsl:call-template name="StringTSpan">
<xsl:with-param name="SemanticID" select="CallActionSemanticID"/>
<xsl:with-param name="String" select="key('xmi.id', $CallActionSemanticID)/UML:Action.script/UML:ActionExpression/@body"/>
<xsl:with-param name="x" select="../../UML:GraphElement.position/XMI.field[1] + UML:GraphElement.position/XMI.field[1]"/>
<xsl:with-param name="y" select="../../UML:GraphElement.position/XMI.field[2] + UML:GraphElement.position/XMI.field[2]"/>
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</text>
</g>
</xsl:template>
</xsl:stylesheet>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -