📄 diagramsize.xsl
字号:
<?xml version="1.0" encoding="UTF-8"?>
<!--
Template: DiagramSize.xsl
Gets the width and height for a diagram
-->
<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:output media-type="image/svg+xml" method="xml" indent="yes"/>
<!-- DiagramSize -->
<xsl:template name="DiagramSize">
<xsl:variable name="GraphNode_MinX">
<xsl:for-each select="UML:GraphElement.contained/UML:GraphNode[@isVisible='true']/UML:GraphElement.position/XMI.field[1]">
<xsl:sort select="." data-type="number" order="ascending"/>
<xsl:if test="position() = 1">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="GraphNode_MinY">
<xsl:for-each select="UML:GraphElement.contained/UML:GraphNode[@isVisible='true']/UML:GraphElement.position/XMI.field[2]">
<xsl:sort select="." data-type="number" order="ascending"/>
<xsl:if test="position() = 1">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="GraphNodeText_MinX">
<xsl:for-each select="UML:GraphElement.contained/UML:GraphNode[@isVisible='true']/UML:GraphElement.contained/UML:GraphNode[@isVisible='true']">
<xsl:sort select="UML:GraphElement.position/XMI.field[1] + ../../UML:GraphElement.position/XMI.field[1]" data-type="number" order="ascending"/>
<xsl:if test="position() = 1">
<xsl:value-of select="UML:GraphElement.position/XMI.field[1] + ../../UML:GraphElement.position/XMI.field[1]"/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="GraphNodeText_MinY">
<xsl:for-each select="UML:GraphElement.contained/UML:GraphNode[@isVisible='true']/UML:GraphElement.contained/UML:GraphNode[@isVisible='true']">
<xsl:sort select="UML:GraphElement.position/XMI.field[2] + ../../UML:GraphElement.position/XMI.field[2]" data-type="number" order="ascending"/>
<xsl:if test="position() = 1">
<xsl:value-of select="UML:GraphElement.position/XMI.field[2] + ../../UML:GraphElement.position/XMI.field[2]"/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="GraphEdge_MinX">
<xsl:for-each select="UML:GraphElement.contained/UML:GraphEdge[@isVisible='true']/UML:GraphEdge.waypoints/XMI.field[position() mod 3 = 1]/XMI.field[1]">
<xsl:sort select=". + ../../../UML:GraphElement.position/XMI.field[1]" data-type="number" order="ascending"/>
<xsl:if test="position() = 1">
<xsl:value-of select=". + ../../../UML:GraphElement.position/XMI.field[1]"/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="GraphEdge_MinY">
<xsl:for-each select="UML:GraphElement.contained/UML:GraphEdge[@isVisible='true']/UML:GraphEdge.waypoints/XMI.field[position() mod 3 = 1]/XMI.field[2]">
<xsl:sort select=". + ../../../UML:GraphElement.position/XMI.field[2]" data-type="number" order="ascending"/>
<xsl:if test="position() = 1">
<xsl:value-of select=". + ../../../UML:GraphElement.position/XMI.field[2]"/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="GraphEdgeText_MinX">
<xsl:for-each select="UML:GraphElement.contained/UML:GraphEdge[@isVisible='true']/UML:GraphElement.contained/UML:GraphNode[@isVisible='true']/UML:GraphElement.contained/UML:GraphNode[@isVisible='true']">
<xsl:sort select="UML:GraphElement.position/XMI.field[1] + ../../UML:GraphElement.position/XMI.field[1] + ../../../../UML:GraphElement.position/XMI.field[1]" data-type="number" order="ascending"/>
<xsl:if test="position() = 1">
<xsl:value-of select="UML:GraphElement.position/XMI.field[1] + ../../UML:GraphElement.position/XMI.field[1] + ../../../../UML:GraphElement.position/XMI.field[1]"/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="GraphEdgeText_MinY">
<xsl:for-each select="UML:GraphElement.contained/UML:GraphEdge[@isVisible='true']/UML:GraphElement.contained/UML:GraphNode[@isVisible='true']/UML:GraphElement.contained/UML:GraphNode[@isVisible='true']">
<xsl:sort select="UML:GraphElement.position/XMI.field[2] + ../../UML:GraphElement.position/XMI.field[2] + ../../../../UML:GraphElement.position/XMI.field[2]" data-type="number" order="ascending"/>
<xsl:if test="position() = 1">
<xsl:value-of select="UML:GraphElement.position/XMI.field[2] + ../../UML:GraphElement.position/XMI.field[2] + ../../../../UML:GraphElement.position/XMI.field[2]"/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="ComponentPort_MinX">
<xsl:call-template name="ComponentPortMinX"/>
</xsl:variable>
<xsl:variable name="ComponentPort_MaxX">
<xsl:call-template name="ComponentPortMaxX"/>
</xsl:variable>
<xsl:variable name="ComponentPort_MinY">
<xsl:call-template name="ComponentPortMinY"/>
</xsl:variable>
<xsl:variable name="ComponentPort_MaxY">
<xsl:call-template name="ComponentPortMaxY"/>
</xsl:variable>
<xsl:variable name="Polyline_MinX">
<xsl:for-each select="UML:GraphElement.contained/UML:Polyline[@isVisible='true']/UML:Polyline.waypoints/XMI.field[position() mod 3 = 1]/XMI.field[1]">
<xsl:sort select="." data-type="number" order="ascending"/>
<xsl:if test="position() = 1">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="Polyline_MinY">
<xsl:for-each select="UML:GraphElement.contained/UML:Polyline[@isVisible='true']/UML:Polyline.waypoints/XMI.field[position() mod 3 = 1]/XMI.field[2]">
<xsl:sort select="." data-type="number" order="ascending"/>
<xsl:if test="position() = 1">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="Ellipse_MinX">
<xsl:for-each select="UML:GraphElement.contained/UML:Ellipse[@isVisible='true']">
<xsl:sort select="UML:Ellipse.center/XMI.field[1] - @radiusX" data-type="number" order="ascending"/>
<xsl:if test="position() = 1">
<xsl:value-of select="UML:Ellipse.center/XMI.field[1] - @radiusX"/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="Ellipse_MinY">
<xsl:for-each select="UML:GraphElement.contained/UML:Ellipse[@isVisible='true']">
<xsl:sort select="UML:Ellipse.center/XMI.field[2] - @radiusY" data-type="number" order="ascending"/>
<xsl:if test="position() = 1">
<xsl:value-of select="UML:Ellipse.center/XMI.field[2] - @radiusY"/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="MinX0">
<xsl:choose>
<xsl:when test="($GraphNodeText_MinX = '') or ($GraphNode_MinX <= $GraphNodeText_MinX)"><xsl:value-of select="$GraphNode_MinX"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$GraphNodeText_MinX"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="MinX1">
<xsl:choose>
<xsl:when test="($GraphEdge_MinX = '') or ($MinX0 <= $GraphEdge_MinX)"><xsl:value-of select="$MinX0"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$GraphEdge_MinX"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="MinX2">
<xsl:choose>
<xsl:when test="($GraphEdgeText_MinX = '') or ($MinX1 <= $GraphEdgeText_MinX)"><xsl:value-of select="$MinX1"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$GraphEdgeText_MinX"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="MinX3">
<xsl:choose>
<xsl:when test="($Polyline_MinX = '') or ($MinX2 <= $Polyline_MinX)"><xsl:value-of select="$MinX2"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$Polyline_MinX"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="MinX4">
<xsl:choose>
<xsl:when test="($Ellipse_MinX = '') or ($MinX3 <= $Ellipse_MinX)"><xsl:value-of select="$MinX3"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$Ellipse_MinX"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="Diagram_MinX">
<xsl:choose>
<xsl:when test="$MinX4 = ''"><xsl:text>0</xsl:text></xsl:when>
<xsl:otherwise><xsl:value-of select="$MinX4"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="MinY0">
<xsl:choose>
<xsl:when test="($GraphNodeText_MinY = '') or ($GraphNode_MinY <= $GraphNodeText_MinY)"><xsl:value-of select="$GraphNode_MinY"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$GraphNodeText_MinY"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="MinY1">
<xsl:choose>
<xsl:when test="($GraphEdge_MinY = '') or ($MinY0 <= $GraphEdge_MinY)"><xsl:value-of select="$MinY0"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$GraphEdge_MinY"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="MinY2">
<xsl:choose>
<xsl:when test="($GraphEdgeText_MinY = '') or ($MinY1 <= $GraphEdge_MinY)"><xsl:value-of select="$MinY1"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$GraphEdgeText_MinY"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="MinY3">
<xsl:choose>
<xsl:when test="($Polyline_MinY = '') or ($MinY2 <= $Polyline_MinY)"><xsl:value-of select="$MinY2"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$Polyline_MinY"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="MinY4">
<xsl:choose>
<xsl:when test="($Ellipse_MinY = '') or ($MinY3 <= $Ellipse_MinY)"><xsl:value-of select="$MinY3"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$Ellipse_MinY"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="Diagram_MinY">
<xsl:choose>
<xsl:when test="$MinY4 = ''"><xsl:text>0</xsl:text></xsl:when>
<xsl:otherwise><xsl:value-of select="$MinY4"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="ExtraSpaceBeforeX">
<xsl:choose>
<xsl:when test="$ComponentPort_MinX < $Diagram_MinX">
<xsl:value-of select="$Diagram_MinX - $ComponentPort_MinX"/>
</xsl:when>
<xsl:otherwise><xsl:text>0</xsl:text></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="ExtraSpaceBeforeY">
<xsl:choose>
<xsl:when test="$ComponentPort_MinY < $Diagram_MinY">
<xsl:value-of select="$Diagram_MinY - $ComponentPort_MinY"/>
</xsl:when>
<xsl:otherwise><xsl:text>0</xsl:text></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="ExtraSpaceAfterX">
<xsl:choose>
<xsl:when test="$ComponentPort_MaxX > ($Diagram_MinX + UML:GraphNode.size/XMI.field[1])">
<xsl:value-of select="$ComponentPort_MaxX - ($Diagram_MinX + UML:GraphNode.size/XMI.field[1])"/>
</xsl:when>
<xsl:otherwise><xsl:text>0</xsl:text></xsl:otherwise>
</xsl:choose>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -