home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2005 February / PCpro_2005_02.ISO / files / opensource / Dia_0.94 / dia-setup-0.94.exe / dia-uml2docbook.xsl < prev    next >
Encoding:
Extensible Markup Language  |  2003-08-24  |  6.4 KB  |  215 lines

  1. <?xml version="1.0"?>
  2. <!-- 
  3.      Transform dia UML objects to DocBook documentation 
  4.  
  5.      Copyright(c) 2003 Steffen Macke <sdteffen@web.de>     
  6.  
  7.      This program is free software; you can redistribute it and/or modify
  8.      it under the terms of the GNU General Public License as published by
  9.      the Free Software Foundation; either version 2 of the License, or
  10.      (at your option) any later version.
  11.      
  12.      This program is distributed in the hope that it will be useful,
  13.      but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.      GNU General Public License for more details.
  16.      
  17.      You should have received a copy of the GNU General Public License
  18.      along with this program; if not, write to the Free Software
  19.      Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  20.  
  21. -->
  22.  
  23. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  24.  
  25.   <xsl:output method="xml"/>
  26.   
  27.   <xsl-template match="dia-uml">
  28.     <article lang="en">
  29.       <xsl:apply-templates />
  30.     </article>
  31.   </xsl-template>
  32.   
  33.   <xsl:template match="class">
  34.     <sect1>
  35.       <title><xsl:value-of select="@name" /></title>
  36.       <xsl:if test="comment != ''">
  37.         <para><xsl:value-of select="comment" /></para>
  38.       </xsl:if>
  39.  
  40.       <xsl:text>#ifndef _</xsl:text>
  41.       <xsl:value-of select="@name"/>
  42.       <xsl:text>_hh_ </xsl:text>
  43.  
  44.       <xsl:text>#define _</xsl:text>
  45.       <xsl:value-of select="@name"/>
  46.       <xsl:text>_hh_ </xsl:text>
  47.  
  48.       <xsl:text>class </xsl:text>
  49.       <xsl:value-of select="@name"/>
  50.       <xsl:if test="@stereotype!=''">
  51.         <xsl:text> : public </xsl:text>
  52.         <xsl:value-of select="@stereotype"/>      
  53.       </xsl:if>
  54.       <xsl:text> { </xsl:text>
  55.       <xsl:apply-templates select="attributes"/>
  56.       <xsl:text> </xsl:text>
  57.       <xsl:apply-templates select="operations"/>
  58.       <xsl:text> }; </xsl:text>
  59.       <xsl:text> #endif /* _</xsl:text>
  60.       <xsl:value-of select="@name"/>
  61.       <xsl:text>_hh_ */ </xsl:text>
  62.     </sect1>
  63.   </xsl:template>
  64.   
  65.   <xsl:template match="operations|attributes">
  66.     <xsl:if test="*[@visibility='private']">
  67.       <xsl:value-of select="$visident"/>
  68.       <xsl:text>private: </xsl:text>
  69.       <xsl:apply-templates select="*[@visibility='private']"/>
  70.       <xsl:text> </xsl:text>
  71.     </xsl:if>
  72.     <xsl:if test="*[@visibility='protected']">
  73.       <xsl:value-of select="$visident"/>
  74.       <xsl:text>protected: </xsl:text>
  75.       <xsl:apply-templates select="*[@visibility='protected']"/>
  76.       <xsl:text> </xsl:text>
  77.     </xsl:if>
  78.     <xsl:if test="*[@visibility='public']">
  79.       <xsl:value-of select="$visident"/>
  80.       <xsl:text>public: </xsl:text>
  81.       <xsl:apply-templates select="*[@visibility='public']"/>
  82.       <xsl:text> </xsl:text>
  83.     </xsl:if>
  84.     <xsl:if test="*[not(@visibility)]">
  85.       <xsl:apply-templates select="*[not(@visibility)]"/>
  86.       <xsl:text> </xsl:text>
  87.     </xsl:if>
  88.   </xsl:template>
  89.  
  90.  
  91.   <xsl:template match="attribute">
  92.     <xsl:if test="comment!=''">
  93.       <xsl:text> </xsl:text>
  94.       <xsl:value-of select="$ident"/>
  95.       <xsl:text>/* </xsl:text>
  96.       <xsl:value-of select="$ident"/>
  97.       <xsl:text> * </xsl:text>
  98.       <xsl:value-of select="comment"/>
  99.       <xsl:text> </xsl:text>
  100.       <xsl:value-of select="$ident"/>
  101.       <xsl:text> */ </xsl:text>
  102.     </xsl:if>
  103.  
  104.     <xsl:value-of select="$ident"/>
  105.     <xsl:if test="@class_scope">
  106.       <xsl:text>static </xsl:text>
  107.     </xsl:if>
  108.     <xsl:value-of select="type"/>
  109.     <xsl:text> </xsl:text>
  110.     <xsl:value-of select="name"/>
  111.     <xsl:text>; </xsl:text>
  112.   </xsl:template>
  113.  
  114.   <xsl:template match="operation">
  115.  
  116.     <xsl:if test="comment!=''">
  117.       <xsl:text> </xsl:text>
  118.       <xsl:value-of select="$ident"/>
  119.       <xsl:text>/* </xsl:text>
  120.       <xsl:value-of select="$ident"/>
  121.       <xsl:text> * </xsl:text>
  122.       <xsl:value-of select="comment"/>
  123.       <xsl:text> </xsl:text>
  124.       <xsl:for-each select="parameters/parameter/comment">
  125.     <xsl:value-of select="$ident"/>
  126.     <xsl:text> * @</xsl:text>
  127.     <xsl:value-of select="../name"/>
  128.     <xsl:text> </xsl:text>
  129.       </xsl:for-each>
  130.       <xsl:value-of select="$ident"/>
  131.       <xsl:text> */ </xsl:text>
  132.     </xsl:if>
  133.  
  134.     <xsl:value-of select="$ident"/>
  135.     <xsl:choose>
  136.       <xsl:when test="@inheritance='polymorphic'">
  137.         <xsl:text>virtual </xsl:text>
  138.       </xsl:when>
  139.       <xsl:when test="@inheritance='abstract'">
  140.         <xsl:text>virtual </xsl:text>
  141.       </xsl:when>      
  142.     </xsl:choose>
  143.     
  144.     <xsl:if test="@class_scope">
  145.       <xsl:text>static </xsl:text>
  146.     </xsl:if>
  147.     
  148.     <!-- Constructor has no type -->
  149.     <xsl:if test="type">
  150.       <xsl:value-of select="type"/>
  151.       <xsl:text> </xsl:text>      
  152.     </xsl:if>
  153.     
  154.     <xsl:value-of select="name"/>
  155.     <xsl:text>(</xsl:text>
  156.     <xsl:for-each select="parameters/*">
  157.       <xsl:choose>
  158.         <xsl:when test="@kind='in'">
  159.           <xsl:text>const </xsl:text>
  160.         </xsl:when>
  161.       </xsl:choose>
  162.  
  163.       <xsl:value-of select="type"/>
  164.       <xsl:if test="@kind">
  165.         <xsl:text>&</xsl:text>
  166.       </xsl:if>
  167.       
  168.       <xsl:text> </xsl:text>
  169.       <xsl:value-of select="name"/>
  170.       <xsl:if test="value">
  171.         <xsl:text> = </xsl:text>
  172.         <xsl:value-of select="value"/>
  173.       </xsl:if>
  174.       <xsl:if test="not(position()=last())">
  175.         <xsl:text>, </xsl:text>        
  176.       </xsl:if>
  177.     </xsl:for-each>
  178.  
  179.     <xsl:text>)</xsl:text>
  180.     <xsl:if test="@inheritance='abstract'">
  181.       <xsl:text> = 0</xsl:text>
  182.     </xsl:if>
  183.     <xsl:if test="@query=1">
  184.       <xsl:text> const</xsl:text>
  185.     </xsl:if>
  186.     <xsl:text>; </xsl:text>
  187.   </xsl:template>
  188.  
  189.  
  190.   <xsl:template match="text()">    
  191.   </xsl:template>
  192.  
  193.   <xsl:template match="node()|@*">
  194.     <xsl:apply-templates match="node()|@*"/>  
  195.   </xsl:template>
  196.  
  197. </xsl:stylesheet>
  198. <!-- Keep this comment at the end of the file
  199. Local variables:
  200. mode: xml
  201. sgml-omittag:nil
  202. sgml-shorttag:nil
  203. sgml-namecase-general:nil
  204. sgml-general-insert-case:lower
  205. sgml-minimize-attributes:nil
  206. sgml-always-quote-attributes:t
  207. sgml-indent-step:2
  208. sgml-indent-data:t
  209. sgml-parent-document:nil
  210. sgml-exposed-tags:nil
  211. sgml-local-catalogs:nil
  212. sgml-local-ecat-files:nil
  213. End:
  214. -->
  215.