⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 diagramsize.xsl

📁 Copyright&copy 2004 Sergiu Dumitriu, Marta G&icirc rdea, C&#259 t&#259 lin Hri&#355 cu Permission is
💻 XSL
📖 第 1 页 / 共 3 页
字号:
<?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 &lt;= $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 &lt;= $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 &lt;= $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 &lt;= $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 &lt;= $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 &lt;= $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 &lt;= $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 &lt;= $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 &lt;= $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 &lt;= $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 &lt; $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 &lt; $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 &gt; ($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 + -