home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2007 September / maximum-cd-2007-09.iso / Assets / data / AssaultCube_v0.93.exe / docs / transformations / cuberef2cubescript.xslt < prev    next >
Encoding:
Extensible Markup Language  |  2007-05-10  |  5.2 KB  |  150 lines

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- ZLIB licensed, (C) 2007 Adrian 'driAn' Henke, http://www.sprintf.org -->
  3.  
  4. <!--
  5.   transforms a cuberef document to a cubescript document
  6. -->
  7.  
  8. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:t="http://cubers.net/Schemas/CubeRef">
  9.  
  10.   <xsl:output method="text" encoding="utf-8"/>
  11.   
  12.   <!-- horizontal tab -->
  13.   <xsl:variable name="indent">
  14.     <xsl:text> </xsl:text>
  15.   </xsl:variable>
  16.  
  17.   <!-- line feed, CRLF (dos/win) -->
  18.   <xsl:variable name="newline">
  19.     <xsl:text> </xsl:text>
  20.   </xsl:variable>
  21.  
  22.   <xsl:template match="/t:cuberef">
  23.     <xsl:text>// auto generated script to make the doc reference readable for Cube games, see the 'docs/cuberef.txt'</xsl:text>
  24.     <xsl:value-of select="$newline"/>
  25.  
  26.     <!-- sections -->
  27.     <xsl:for-each select="t:sections/t:section">
  28.       <xsl:text>docsection </xsl:text>
  29.       <xsl:text>[</xsl:text>
  30.       <xsl:value-of select="@name"/>
  31.       <xsl:text>]</xsl:text>
  32.       <xsl:value-of select="$newline"/>
  33.       <xsl:value-of select="$newline"/>
  34.  
  35.       <!-- identifiers -->
  36.       <xsl:for-each select="t:identifiers/*">
  37.         <xsl:sort select="@name"/> <!-- always sort to avoid axcessive sorting inside the Cube games -->
  38.         <xsl:text>docident </xsl:text>
  39.         <xsl:text>[</xsl:text>
  40.         <xsl:value-of select="@name"/>
  41.         <xsl:text>] [</xsl:text>
  42.         <xsl:value-of select="normalize-space(t:description)"/>
  43.         <xsl:text>];</xsl:text>
  44.         <xsl:value-of select="$newline"/>
  45.         
  46.         <!-- argument descriptions -->
  47.         <xsl:for-each select="t:arguments/*">
  48.           <xsl:text>docargument </xsl:text>
  49.           <xsl:text>[</xsl:text>
  50.           <xsl:value-of select="@token"/>
  51.           <xsl:text>] [</xsl:text>
  52.           <xsl:value-of select="@description"/>
  53.           <xsl:text>] [</xsl:text>
  54.           <xsl:value-of select="@valueNotes"/>
  55.           <xsl:text>] [</xsl:text>
  56.           <xsl:choose>
  57.             <xsl:when test="local-name() = 'variableArgument'">
  58.               <xsl:text>1</xsl:text>
  59.             </xsl:when>
  60.             <xsl:otherwise>
  61.               <xsl:text>0</xsl:text>
  62.             </xsl:otherwise>
  63.           </xsl:choose>
  64.           <xsl:text>];</xsl:text>
  65.           <xsl:value-of select="$newline"/>
  66.         </xsl:for-each>
  67.         
  68.         <!-- var descriptions (fake arg) -->
  69.         <xsl:if test="t:value">
  70.           <xsl:text>docargument </xsl:text>
  71.           <xsl:text>[</xsl:text>
  72.           <xsl:value-of select="t:value/@token"/>
  73.           <xsl:text>] [</xsl:text>
  74.           <xsl:value-of select="t:value/@description"/>
  75.           <xsl:text>] [</xsl:text>
  76.           <xsl:value-of select="t:value/@valueNotes"/>
  77.           <xsl:choose>
  78.             <xsl:when test="t:value/@readOnly">
  79.               <xsl:text> read-only</xsl:text>
  80.             </xsl:when>
  81.             <xsl:otherwise>
  82.               <xsl:if test="t:value/@valueNotes">
  83.                 <xsl:text> </xsl:text>
  84.               </xsl:if>
  85.               <xsl:text>min </xsl:text>
  86.               <xsl:value-of select="t:value/@minValue"/>
  87.               <xsl:text>/max </xsl:text>
  88.               <xsl:value-of select="t:value/@maxValue"/>
  89.               <xsl:text>/default </xsl:text>
  90.               <xsl:value-of select="t:value/@defaultValue"/>
  91.             </xsl:otherwise>
  92.           </xsl:choose>
  93.           <xsl:text>];</xsl:text>
  94.           <xsl:value-of select="$newline"/>
  95.         </xsl:if>
  96.  
  97.         <!-- remarks -->
  98.         <xsl:for-each select="t:remarks/t:remark">
  99.           <xsl:text>docremark </xsl:text>
  100.           <xsl:text>[</xsl:text>
  101.           <xsl:value-of select="normalize-space(.)"/>
  102.           <xsl:text>];</xsl:text>
  103.           <xsl:value-of select="$newline"/>
  104.         </xsl:for-each>
  105.         
  106.         <!-- examples -->
  107.         <xsl:for-each select="t:examples/*">
  108.           <xsl:text>docexample </xsl:text>
  109.           <xsl:text>[</xsl:text>
  110.           <xsl:value-of select="normalize-space(t:code)"/>
  111.           <xsl:text>] [</xsl:text>
  112.           <xsl:value-of select="normalize-space(t:explanation)"/>
  113.           <xsl:text>];</xsl:text>
  114.           <xsl:value-of select="$newline"/>
  115.         </xsl:for-each>
  116.  
  117.         <!-- default keys -->
  118.         <xsl:for-each select="t:defaultKeys/*">
  119.           <xsl:text>dockey </xsl:text>
  120.           <xsl:text>[</xsl:text>
  121.           <xsl:value-of select="@alias"/>
  122.           <xsl:text>] [</xsl:text>
  123.           <xsl:value-of select="@name"/>
  124.           <xsl:text>] [</xsl:text>
  125.           <xsl:value-of select="@description"/>
  126.           <xsl:text>];</xsl:text>
  127.           <xsl:value-of select="$newline"/>
  128.         </xsl:for-each>
  129.  
  130.         <!-- references -->
  131.         <xsl:for-each select="t:references/t:reference">
  132.           <xsl:text>docref </xsl:text>
  133.           <xsl:text>[</xsl:text>
  134.           <xsl:value-of select="@name"/>
  135.           <xsl:text>] [</xsl:text>
  136.           <xsl:value-of select="@identifier"/>
  137.           <xsl:text>] [</xsl:text>
  138.           <xsl:value-of select="@url"/>
  139.           <xsl:text>];</xsl:text>
  140.           <xsl:value-of select="$newline"/>
  141.         </xsl:for-each>
  142.  
  143.         <xsl:value-of select="$newline"/>
  144.       </xsl:for-each>
  145.     </xsl:for-each>
  146.  
  147.   </xsl:template>
  148.  
  149. </xsl:stylesheet>
  150.