📄 uml2svg.xsl
字号:
<!--Template: UML2SVG.xslMain template--><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="ClassDiagrams/ClassDiagram2SVG.xsl"/> <xsl:import href="UseCaseDiagrams/UseCaseDiagram2SVG.xsl"/> <xsl:import href="StateDiagrams/StateDiagram2SVG.xsl"/> <xsl:import href="ActivityDiagrams/ActivityDiagram2SVG.xsl"/> <xsl:import href="CollaborationDiagrams/CollaborationDiagram2SVG.xsl"/> <xsl:import href="SequenceDiagrams/SequenceDiagram2SVG.xsl"/> <xsl:import href="DeploymentDiagrams/DeploymentDiagram2SVG.xsl"/> <xsl:import href="System/MakeArrowScript.xsl"/> <xsl:import href="System/MakeTreeScript.xsl"/> <xsl:import href="System/MakeTree.xsl"/> <xsl:output media-type="image/svg+xml" method="xml" indent="yes"/> <xsl:param name="SelectedDiagram"/> <xsl:key name="xmi.id" match="UML:*" use="@xmi.id"/> <!-- UML2SVG --> <xsl:template match="text()"/> <xsl:template match="/XMI"> <!-- A Diagram ID, if only one diagram is to be processed --> <svg font-family="sans-serif" font-size="11px" stroke="black" fill-rule="nonzero"> <xsl:choose> <xsl:when test="$SelectedDiagram"> <!-- If the user specified a certain diagram, look for that diagram and process it --> <xsl:for-each select="key('xmi.id', $SelectedDiagram)"> <xsl:if test=".//*[@typeInfo = 'Arrow']"> <xsl:attribute name="onload">OrientArrows()</xsl:attribute> <xsl:call-template name="MakeArrowScript"/> </xsl:if> <xsl:call-template name="DiagramSelector"> <xsl:with-param name="display" select="'true'"/> </xsl:call-template> </xsl:for-each> </xsl:when> <xsl:when test="count(/XMI/XMI.content/UML:Diagram) = 1"> <!-- If there is only one diagram --> <xsl:if test="//*[@typeInfo = 'Arrow']"> <xsl:attribute name="onload">OrientArrows()</xsl:attribute> <xsl:call-template name="MakeArrowScript"/> </xsl:if> <xsl:for-each select="/XMI/XMI.content/UML:Diagram"> <xsl:call-template name="DiagramSelector"> <xsl:with-param name="display" select="'true'"/> </xsl:call-template> </xsl:for-each> </xsl:when> <xsl:otherwise> <!-- If no diagram was specified, process all the diagrams --> <xsl:call-template name="MakeTreeScript"/> <xsl:if test="//*[@typeInfo = 'Arrow']"> <xsl:attribute name="onload">OrientArrows()</xsl:attribute> <xsl:call-template name="MakeArrowScript"/> </xsl:if> <xsl:for-each select="/XMI/XMI.content/UML:Diagram"> <xsl:call-template name="DiagramSelector"/> </xsl:for-each> <xsl:call-template name="MakeTree"/> </xsl:otherwise> </xsl:choose> <style type="text/css"><![CDATA[text{ stroke: none; baseline-shift: -100%;} ]]></style> </svg> </xsl:template> <xsl:template name="DiagramSelector"> <xsl:param name="display" select="'false'"/> <xsl:choose> <xsl:when test="UML:GraphElement.semanticModel/UML:SimpleSemanticModelElement/@typeInfo = 'ClassDiagram'"> <xsl:call-template name="ClassDiagram"> <xsl:with-param name="display" select="$display"/> </xsl:call-template> </xsl:when> <xsl:when test="UML:GraphElement.semanticModel/UML:SimpleSemanticModelElement/@typeInfo = 'UseCaseDiagram'"> <xsl:call-template name="UseCaseDiagram"> <xsl:with-param name="display" select="$display"/> </xsl:call-template> </xsl:when> <xsl:when test="UML:GraphElement.semanticModel/UML:SimpleSemanticModelElement/@typeInfo = 'StateDiagram'"> <xsl:call-template name="StateDiagram"> <xsl:with-param name="display" select="$display"/> </xsl:call-template> </xsl:when> <xsl:when test="UML:GraphElement.semanticModel/UML:SimpleSemanticModelElement/@typeInfo = 'ActivityDiagram'"> <xsl:call-template name="ActivityDiagram"> <xsl:with-param name="display" select="$display"/> </xsl:call-template> </xsl:when> <xsl:when test="UML:GraphElement.semanticModel/UML:SimpleSemanticModelElement/@typeInfo = 'CollaborationDiagram'"> <xsl:call-template name="CollaborationDiagram"> <xsl:with-param name="display" select="$display"/> </xsl:call-template> </xsl:when> <xsl:when test="UML:GraphElement.semanticModel/UML:SimpleSemanticModelElement/@typeInfo = 'SequenceDiagram'"> <xsl:call-template name="SequenceDiagram"> <xsl:with-param name="display" select="$display"/> </xsl:call-template> </xsl:when> <xsl:when test="UML:GraphElement.semanticModel/UML:SimpleSemanticModelElement/@typeInfo = 'DeploymentDiagram'"> <xsl:call-template name="DeploymentDiagram"> <xsl:with-param name="display" select="$display"/> </xsl:call-template> </xsl:when> </xsl:choose> </xsl:template></xsl:stylesheet>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -