source: moodle/trunk/fuentes/admin/tool/xmldb/actions/generate_documentation/xmldb.xsl @ 136

Last change on this file since 136 was 136, checked in by mabarracus, 4 years ago

Ported code to xenial

File size: 5.5 KB
Line 
1<?xml version="1.0" encoding="utf-8"?>
2<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
3
4<xsl:output omit-xml-declaration="yes"/>
5
6<!-- Top level: disclaimer/intro -->
7<xsl:template match="/">
8  <xsl:apply-templates/>
9</xsl:template>
10
11<!-- Tables: heading, comment -->
12<xsl:template match="TABLE">
13  <xsl:variable name="tableid">table_<xsl:value-of select="@NAME"/></xsl:variable>
14  <h3 id="{$tableid}" style="margin-top:3em"><xsl:value-of select="@NAME"/></h3>
15  <xsl:call-template name="display-comment"><xsl:with-param name="PARA">y</xsl:with-param></xsl:call-template>
16  <xsl:apply-templates>
17    <xsl:with-param name="tableid" select="$tableid" />
18  </xsl:apply-templates>
19</xsl:template>
20
21<!-- Fields (if any): table with field, type, comment -->
22<xsl:template match="FIELDS[FIELD]">
23  <xsl:param name="tableid" />
24  <table class="generaltable boxaligncenter" style="margin:1em 0" cellspacing="1" cellpadding="5" width="100%">
25    <tr>
26      <th class="header c0" scope="col">Field</th>
27      <th class="header c1" scope="col">Type</th>
28      <th class="header c2 lastcol" scope="col">Description</th>
29    </tr>
30    <xsl:apply-templates>
31      <xsl:with-param name="tableid" select="$tableid" />
32    </xsl:apply-templates>
33  </table>
34</xsl:template>
35
36<!-- Each individual field -->
37<xsl:template match="FIELD">
38  <xsl:param name="tableid" />
39  <xsl:variable name="fieldid"><xsl:value-of select="$tableid"/>_field_<xsl:value-of select="@NAME"/></xsl:variable>
40  <xsl:variable name="COUNT" select="count(preceding-sibling::*)"/>
41  <tr class="r{$COUNT}">
42    <td id="{$fieldid}" class="cell c0"><xsl:value-of select="@NAME"/></td>
43    <td class="cell c1" style="white-space: nowrap;">
44      <xsl:value-of select="@TYPE"/>
45      (<xsl:value-of select="@LENGTH"/><xsl:if test="@DECIMALS">, <xsl:value-of select="@DECIMALS"/></xsl:if>)
46      <xsl:if test="@NOTNULL='true'">not null </xsl:if>
47      <xsl:if test="@DEFAULT">
48        <xsl:choose>
49          <xsl:when test="@TYPE='char'">default '<xsl:value-of select="@DEFAULT"/>'</xsl:when>
50          <xsl:when test="@TYPE='text'">default '<xsl:value-of select="@DEFAULT"/>'</xsl:when>
51          <xsl:otherwise>default <xsl:value-of select="@DEFAULT"/></xsl:otherwise>
52        </xsl:choose>
53      </xsl:if>
54      <xsl:if test="@SEQUENCE='true'">seq</xsl:if>
55    </td>
56    <td class="cell c2 lastcol"><xsl:call-template name="display-comment"/></td>
57  </tr>
58</xsl:template>
59
60<!-- Keys (if any): table with key, type, field(s), reference, and comment -->
61<xsl:template match="KEYS[KEY]">
62  <h4>Keys</h4>
63  <table class="generaltable boxaligncenter" cellspacing="1" cellpadding="5" width="100%">
64    <tr>
65      <th class="header c0" scope="col">Name</th>
66      <th class="header c1" scope="col">Type</th>
67      <th class="header c2" scope="col">Field(s)</th>
68      <th class="header c3" scope="col">Reference</th>
69      <!-- If no keys have comments (which is usually sensible since it's
70         completely obvious what they are) then the comment column is not
71         included -->
72      <xsl:if test="*[normalize-space(@COMMENT)!='']">
73        <th class="header c4 lastcol" scope="col">Description</th>
74      </xsl:if>
75    </tr>
76    <xsl:apply-templates/>
77  </table>
78</xsl:template>
79
80<!-- Individual key -->
81<xsl:template match="KEY">
82  <xsl:variable name="COUNT" select="count(preceding-sibling::*)"/>
83  <tr class="r{$COUNT}">
84    <td class="cell c0"><xsl:value-of select="@NAME"/></td>
85    <td class="cell c1"><xsl:value-of select="@TYPE"/></td>
86    <td class="cell c2"><xsl:value-of select="@FIELDS"/></td>
87    <td class="cell c3">
88      <xsl:if test="@REFTABLE">
89        <xsl:variable name="tableid">table_<xsl:value-of select="@REFTABLE"/></xsl:variable>
90        <a href="#{$tableid}"><xsl:value-of select="@REFTABLE"/></a> (<xsl:value-of select="@REFFIELDS"/>)
91      </xsl:if>
92    </td>
93    <xsl:if test="../*[normalize-space(@COMMENT)!='']">
94      <td class="cell c4 lastcol"><xsl:call-template name="display-comment"/></td>
95    </xsl:if>
96  </tr>
97</xsl:template>
98
99<!-- Indexes -->
100<xsl:template match="INDEXES[INDEX]">
101  <h4>Indexes</h4>
102  <table class="generaltable boxaligncenter" cellspacing="1" cellpadding="5" width="100%">
103    <tr>
104      <th class="header c0" scope="col">Name</th>
105      <th class="header c1" scope="col">Type</th>
106      <th class="header c2" scope="col">Field(s)</th>
107      <xsl:if test="*[normalize-space(@COMMENT)!='']">
108        <th class="header c4 lastcol" scope="col">Description</th>
109      </xsl:if>
110    </tr>
111    <xsl:apply-templates/>
112  </table>
113</xsl:template>
114
115<!-- Individual index -->
116<xsl:template match="INDEX">
117  <xsl:variable name="COUNT" select="count(preceding-sibling::*)"/>
118  <tr class="r{$COUNT}">
119    <td class="cell c0"><xsl:value-of select="@NAME"/></td>
120    <td class="cell c1">
121      <xsl:choose>
122        <xsl:when test="@UNIQUE='true'">Unique</xsl:when>
123        <xsl:otherwise>Not unique</xsl:otherwise>
124      </xsl:choose>
125    </td>
126    <td class="cell c2"><xsl:value-of select="@FIELDS"/></td>
127    <xsl:if test="../*[normalize-space(@COMMENT)!='']">
128      <td class="cell c4 lastcol"><xsl:call-template name="display-comment"/></td>
129    </xsl:if>
130  </tr>
131</xsl:template>
132
133<xsl:template name="display-comment">
134  <xsl:param name="PARA"/>
135  <xsl:if test="normalize-space(@COMMENT)!=''">
136    <xsl:choose>
137      <xsl:when test="$PARA">
138        <p class="xmldb_comment"><xsl:value-of select="@COMMENT"/></p>
139      </xsl:when>
140      <xsl:otherwise>
141        <xsl:value-of select="@COMMENT"/>
142      </xsl:otherwise>
143    </xsl:choose>
144  </xsl:if>
145</xsl:template>
146
147</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.