Server : Apache/2.4.43 (Win64) OpenSSL/1.1.1g PHP/7.4.6 System : Windows NT USER-PC 6.1 build 7601 (Windows 7 Professional Edition Service Pack 1) AMD64 User : User ( 0) PHP Version : 7.4.6 Disable Function : NONE Directory : C:/xampp/php/pear/PHP/UML/Output/Html/ |
<?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" exclude-result-prefixes="uml xmi exslt exslt-set exslt-functions" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:uml="http://schema.omg.org/spec/UML/2.1.2" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:exslt="http://exslt.org/common" xmlns:exslt-set="http://exslt.org/sets" xmlns:exslt-functions="http://exslt.org/functions"> <!-- Called on every class/interface. One file per class/interface --> <xsl:template name="classifier"> <xsl:param name="relPathTop"/> <xsl:param name="entity"/> <xsl:param name="nestingPackageName"/> <xsl:param name="ownedAttributeSet"/> <xsl:param name="ownedOperationSet" /> <xsl:param name="generalization"/> <xsl:param name="implements"/> <xsl:param name="prevEntity"/> <xsl:param name="nextEntity"/> <xsl:param name="filePrefix"/> <xsl:param name="relPathClass"/> <xsl:variable name="path"> <element> <xsl:attribute name="id"><xsl:value-of select="@xmi:id"/></xsl:attribute> <xsl:call-template name="getPackageNamePart"/> <xsl:value-of select="@name"/> </element> <xsl:for-each select="generalization"> <xsl:call-template name="generalization"></xsl:call-template> </xsl:for-each> </xsl:variable> <xsl:variable name="allImplementedClasses" select="key('getElementById', key('getRealizations', exslt:node-set($path)/*/@id)/@supplier)"/> <xsl:variable name="allImplementingClasses" select="key('getElementById',key('getRealizingClasses', @xmi:id)/@client)"/> <xsl:variable name="allSubClasses" select="key('getSubclasses', @xmi:id)"/> <xsl:variable name="artifact" select="key('getElementById',key('getManifestation', @xmi:id)/@client)"/> <xsl:variable name="lcEntityName" select="translate($entity, 'CDI', 'cdi')"/> <html> <xsl:call-template name="htmlStartPage"/> <xsl:call-template name="htmlHead"> <xsl:with-param name="path" select="$relPathTop"/> <xsl:with-param name="title" select="concat($nestingPackageName, $packageDelimiter, @name)"/> </xsl:call-template> <body> <div id="navigation"> <div id="banner"> <ul class="sections"> <li><a href="{$relPathTop}{$fileOverviewSummary}" title="Summary of all packages">Overview</a></li> <li><a href="{$filePackageSummary}" title="Summary of {$nestingPackageName}">Package</a></li> <li class="active"><xsl:value-of select="$entity"/></li> <li><a href="{$relPathTop}{$fileIndexAll}">Index</a></li> </ul> <ul class="navigFrame"> <a href="{concat($relPathTop,$fileIndex,'?',$relPathClass,$filePrefix,@name,'.html')}" class="navigFrameElem" target="_top">FRAMES</a> <xsl:text> </xsl:text> <a href="{concat($filePrefix,@name,'.html')}" class="navigFrameElem" target="_top">NO FRAMES</a> </ul> </div> <ul class="siblingSections"> <xsl:if test="$prevEntity!=''"> <li><a href="{concat($filePrefix,$prevEntity,'.html')}"><xsl:value-of select="concat('Prev ', $entity)" /></a></li> </xsl:if> <xsl:if test="$nextEntity!=''"> <li class="last"><a href="{concat($filePrefix,$nextEntity,'.html')}"><xsl:value-of select="concat('Next ', $entity)" /></a></li> </xsl:if> </ul> </div> <div id="content"> <div class="classSummary"> <!-- Class Name --> <h3 id="entityPackage"><xsl:value-of select="$nestingPackageName"/></h3> <h1 id="entityName"><xsl:value-of select="concat($entity, ' ', @name)" /></h1> <!-- Class tree --> <xsl:call-template name="htmlInheritedClassTree"> <xsl:with-param name="path" select="$path"/> <xsl:with-param name="relPathTop" select="$relPathTop"/> </xsl:call-template> <!-- All Implemented Classes --> <xsl:if test="count($allImplementedClasses) > 0"> <h3 class="titleSmallList">All Implemented Interfaces:</h3> <div class="smallList"> <xsl:for-each select="$allImplementedClasses"> <xsl:call-template name="htmlLinkToElement"> <xsl:with-param name="relPathTop" select="$relPathTop"/> <xsl:with-param name="context" select="."/> <xsl:with-param name="style" select="string('linkSimple')"/> </xsl:call-template> <xsl:if test="position() < last()"><xsl:text>, </xsl:text></xsl:if> </xsl:for-each> </div> </xsl:if> <!-- All Implemented Classes --> <xsl:if test="count($allSubClasses) > 0"> <h3 class="titleSmallList">Direct Known Subclasses:</h3> <div class="smallList"> <xsl:for-each select="$allSubClasses"> <xsl:call-template name="htmlLinkToElement"> <xsl:with-param name="relPathTop" select="$relPathTop"/> <xsl:with-param name="context" select="."/> <xsl:with-param name="style" select="string('linkSimple')"/> </xsl:call-template> <xsl:if test="position() < last()"><xsl:text>, </xsl:text></xsl:if> </xsl:for-each> </div> </xsl:if> <!-- All Implementing Classes --> <xsl:if test="count($allImplementingClasses) > 0"> <h3 class="titleSmallList">All Known Implementing Classes:</h3> <div class="smallList"> <xsl:for-each select="$allImplementingClasses"> <xsl:call-template name="htmlLinkToElement"> <xsl:with-param name="relPathTop" select="$relPathTop"/> <xsl:with-param name="context" select="."/> <xsl:with-param name="style" select="string('linkSimple')"/> </xsl:call-template> <xsl:if test="position() < last()"><xsl:text>, </xsl:text></xsl:if> </xsl:for-each> </div> </xsl:if> <hr/> <!-- Class details --> <xsl:text>public </xsl:text> <xsl:if test="@isAbstract='true' and $entity!='Interface'"> <xsl:text>abstract </xsl:text> </xsl:if> <xsl:value-of select="concat($lcEntityName, ' ')"/> <strong><xsl:value-of select="@name" /></strong><br/> <xsl:if test="count($generalization) > 0"> extends <xsl:value-of select="$generalization/@name" /><br/> </xsl:if> <xsl:if test="count($implements) > 0"> implements <xsl:for-each select="$implements"> <xsl:value-of select="@name" /> <xsl:if test="position() < last()">, </xsl:if> </xsl:for-each> </xsl:if> <p> <xsl:call-template name="htmlDescription"> <xsl:with-param name="baseElement" select="@xmi:id"/> </xsl:call-template> <xsl:if test="count($artifact) > 0"> <b>File: </b> <xsl:for-each select="exslt:node-set($artifact)/ancestor::*[@xmi:type='uml:Package']"> <xsl:if test="position() > 1"><xsl:value-of select="concat('/',@name)"/></xsl:if> </xsl:for-each> <xsl:value-of select="concat('/', $artifact/@name)"/> </xsl:if> </p> <hr/> </div> <xsl:if test="count($ownedAttributeSet) > 0"> <div id="fieldSummary"> <h2>Field Summary</h2> <table border="1" class="tableSummary"> <xsl:for-each select="$ownedAttributeSet"> <xsl:call-template name="class-field-summary"> <xsl:with-param name="relPathTop" select="$relPathTop"/> </xsl:call-template> </xsl:for-each> </table> </div> </xsl:if> <xsl:if test="count($ownedOperationSet) > 0"> <div id="methodSummary"> <h2>Method Summary</h2> <table border="1" class="tableSummary"> <xsl:for-each select="$ownedOperationSet"> <xsl:call-template name="class-method-summary"> <xsl:with-param name="relPathTop" select="$relPathTop"/> </xsl:call-template> </xsl:for-each> </table> </div> </xsl:if> <xsl:if test="count($ownedAttributeSet) > 0"> <div id="fieldDetail"> <h2>Field Detail</h2> <xsl:for-each select="$ownedAttributeSet"> <xsl:call-template name="class-field-detail"> <xsl:with-param name="relPathTop" select="$relPathTop"/> </xsl:call-template> </xsl:for-each> </div> </xsl:if> <xsl:if test="count($ownedOperationSet) > 0"> <div id="methodDetail"> <h2>Method Detail</h2> <xsl:for-each select="$ownedOperationSet"> <xsl:call-template name="class-method-detail"> <xsl:with-param name="relPathTop" select="$relPathTop"/> <xsl:with-param name="specifiedBy" select="exslt:node-set($allImplementedClasses)/ownedOperation[@name=current()/@name]"/> </xsl:call-template> </xsl:for-each> </div> </xsl:if> <xsl:variable name="nestedClassSet" select="nestedClassifier[@xmi:type='uml:Class']"/> <xsl:if test="count($nestedClassSet) > 0"> <div> <h2>Nested Classes</h2> <xsl:call-template name="htmlTableSummary"> <xsl:with-param name="relPathTop" select="$relPathTop"/> <xsl:with-param name="set" select="$nestedClassSet"/> <xsl:with-param name="filePrefix" select="string(concat(@name, '/', $fileprefixClass))"/> </xsl:call-template> </div> </xsl:if> </div> </body> </html> </xsl:template> <xsl:template name="class-field-summary"> <xsl:param name="relPathTop"/> <tr> <td align="right" width="1%" valign="top"> <span class="code"> <xsl:choose> <xsl:when test="@isReadOnly='true'">const</xsl:when> <xsl:otherwise> <xsl:choose> <xsl:when test="@visibility='private'">private</xsl:when> <xsl:when test="@visibility='protected'">protected</xsl:when> </xsl:choose> <xsl:if test="@isStatic='true'"> static</xsl:if> </xsl:otherwise> </xsl:choose> <xsl:if test="count(type) > 0"> <xsl:text> </xsl:text> <xsl:call-template name="htmlType"> <xsl:with-param name="relPathTop" select="$relPathTop"/> <xsl:with-param name="context" select="."/> </xsl:call-template> </xsl:if> </span> </td> <td valign="top"> <span class="code"> <a href="#{@name}" class="linkSummary"><xsl:value-of select="@name" /></a> </span> </td> </tr> </xsl:template> <!-- Method summary --> <xsl:template name="class-method-summary"> <xsl:param name="relPathTop"/> <tr> <td align="right" width="1%" valign="top"> <span class="code"> <xsl:if test="@isReadOnly='true'">final</xsl:if> <xsl:choose> <xsl:when test="@visibility='private'"> private</xsl:when> <xsl:when test="@visibility='protected'"> protected</xsl:when> </xsl:choose> <xsl:if test="@isAbstract='true'"> abstract</xsl:if> <xsl:if test="@isStatic='true'"> static</xsl:if> <xsl:choose> <xsl:when test="ownedParameter[@direction='return']"> <xsl:text> </xsl:text> <xsl:call-template name="htmlType"> <xsl:with-param name="relPathTop" select="$relPathTop"/> <xsl:with-param name="context" select="ownedParameter[@direction='return']"/> </xsl:call-template> </xsl:when> <xsl:otherwise/> </xsl:choose> </span> </td> <td valign="top"> <span class="code"> <xsl:variable name="parameters"> <xsl:call-template name="htmlParametersBracket"> <xsl:with-param name="relPathTop" select="$relPathTop"/> </xsl:call-template> </xsl:variable> <a href="#{concat(@name,$parameters)}" class="linkSummary"><xsl:value-of select="@name"/></a> <xsl:copy-of select="$parameters"/> </span> </td> </tr> </xsl:template> <!-- Field Detail --> <xsl:template name="class-field-detail"> <xsl:param name="relPathTop"/> <div class="detail" id="{@name}"> <h4><xsl:value-of select="@name" /></h4> <div class="detailContent"> <span class="code"> <xsl:choose> <xsl:when test="@isReadOnly='true'">const</xsl:when> <xsl:otherwise> <xsl:choose> <xsl:when test="@visibility='private'">private</xsl:when> <xsl:when test="@visibility='protected'">protected</xsl:when> <xsl:otherwise>public</xsl:otherwise> </xsl:choose> <xsl:if test="@isStatic='true'"> static</xsl:if> </xsl:otherwise> </xsl:choose> <xsl:if test="count(type) > 0"> <xsl:text> </xsl:text> <xsl:call-template name="htmlType"> <xsl:with-param name="relPathTop" select="$relPathTop"/> <xsl:with-param name="context" select="."/> </xsl:call-template> </xsl:if> <b><xsl:value-of select="concat(' ', @name)" /></b> <xsl:if test="defaultValue"> <xsl:value-of select="concat(' = ', defaultValue/@value)" /> </xsl:if> </span> <p> <xsl:call-template name="htmlDescription"> <xsl:with-param name="baseElement" select="@xmi:id"/> </xsl:call-template> </p> </div> </div> <hr/> </xsl:template> <!-- Method Detail --> <xsl:template name="class-method-detail"> <xsl:param name="relPathTop"/> <xsl:param name="specifiedBy"/> <xsl:variable name="artifact" select="key('getElementById',key('getManifestation', @xmi:id)/@client)"/> <xsl:variable name="parameters"> <xsl:call-template name="htmlParametersBracket"> <xsl:with-param name="relPathTop" select="$relPathTop"/> </xsl:call-template> </xsl:variable> <div class="detail" id="{concat(@name,$parameters)}"> <h4><xsl:value-of select="@name"/></h4> <div class="detailContent"> <span class="code"> <xsl:choose> <xsl:when test="@visibility='private'">private</xsl:when> <xsl:when test="@visibility='protected'">protected</xsl:when> <xsl:otherwise>public</xsl:otherwise> </xsl:choose> <xsl:if test="@isAbstract='true'"> abstract</xsl:if> <xsl:if test="@isStatic='true'"> static</xsl:if> <xsl:choose> <xsl:when test="ownedParameter[@direction='return']"> <xsl:text> </xsl:text> <xsl:call-template name="htmlType"> <xsl:with-param name="relPathTop" select="$relPathTop"/> <xsl:with-param name="context" select="ownedParameter[@direction='return']"/> </xsl:call-template> </xsl:when> <xsl:otherwise/> </xsl:choose> <b><xsl:value-of select="concat(' ', @name)" /></b> <xsl:copy-of select="$parameters"/> </span> <!-- Description and tags --> <p> <xsl:call-template name="htmlDescriptionParam"> <xsl:with-param name="baseElement" select="@xmi:id"/> </xsl:call-template> <xsl:if test="count($artifact) > 0"> <b>File: </b> <xsl:for-each select="exslt:node-set($artifact)/ancestor::*[@xmi:type='uml:Package']"> <xsl:if test="position() > 1"><xsl:value-of select="concat('/',@name)"/></xsl:if> </xsl:for-each> <xsl:value-of select="concat('/', $artifact/@name)"/> </xsl:if> </p> <!-- Specified By --> <xsl:if test="count($specifiedBy) > 0"> <xsl:for-each select="exslt:node-set($specifiedBy)/ownedComment"> <h3 class="titleSmallList">Description Copied From interface:</h3> <div class="smallList"> <xsl:value-of select="@body"/> <xsl:call-template name="br-replace"> <xsl:with-param name="str" select="body/text()"/> </xsl:call-template> </div> </xsl:for-each> <h3 class="titleSmallList">Specified By</h3> <div class="smallList"> <xsl:for-each select="$specifiedBy"> <xsl:variable name="classParent" select="parent::*"/> <xsl:variable name="path"> <xsl:call-template name="getPackageFilePath"> <xsl:with-param name="context" select="$classParent"/> </xsl:call-template> <xsl:call-template name="getPrefix"> <xsl:with-param name="context" select="$classParent"/> </xsl:call-template> </xsl:variable> <span class="code"> <a href="{concat($relPathTop,$path,$classParent/@name,'.html#',@name,$parameters)}" class="$linkType"> <xsl:value-of select="@name"/> </a> </span> <xsl:text> in </xsl:text> <span class="code"> <xsl:call-template name="htmlLinkToElement"> <xsl:with-param name="relPathTop" select="$relPathTop"/> <xsl:with-param name="context" select="$classParent"/> <xsl:with-param name="style" select="string('linkSimple')"/> </xsl:call-template> </span> </xsl:for-each> </div> </xsl:if> <xsl:variable name="params" select="ownedParameter[not(@direction) or @direction!='return']"/> <xsl:if test="count($params) > 0"> <h3 class="titleSmallList">Parameters</h3> <div class="smallList"> <xsl:variable name="id" select="@xmi:id"/> <xsl:for-each select="$params"> <xsl:variable name="cnt" select="position()"/> <span class="code"><xsl:value-of select="@name"/></span> <xsl:text> - </xsl:text> <xsl:for-each select="key('getMetadata', $id)/*[local-name()='param'][$cnt]"> <xsl:call-template name="htmlDocblockParam"/> </xsl:for-each> <br/> </xsl:for-each> </div> </xsl:if> </div> </div> </xsl:template> </xsl:stylesheet>