source: trunk/phpgwapi/inc/adodb/xsl/convert-0.1-0.2.xsl @ 2

Revision 2, 5.5 KB checked in by niltonneto, 17 years ago (diff)

Removida todas as tags usadas pelo CVS ($Id, $Source).
Primeira versão no CVS externo.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<xsl:stylesheet version="1.0"
3        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4>
5        <xsl:output method="xml" indent="yes" omit-xml-declaration="no" encoding="UTF-8"/>
6       
7        <!-- Schema -->
8        <xsl:template match="/">
9                <xsl:comment>
10ADODB XMLSchema
11http://adodb-xmlschema.sourceforge.net
12</xsl:comment>
13               
14                <xsl:element name="schema">
15                        <xsl:attribute name="version">0.2</xsl:attribute>
16                       
17                        <xsl:apply-templates select="schema/table|schema/sql"/>
18                </xsl:element>
19        </xsl:template>
20       
21        <!-- Table -->
22        <xsl:template match="table">
23                <xsl:variable name="table_name" select="@name"/>
24               
25                <xsl:element name="table">
26                        <xsl:attribute name="name"><xsl:value-of select="$table_name"/></xsl:attribute>
27                       
28                        <xsl:if test="string-length(@platform) > 0">
29                                <xsl:attribute name="platform"><xsl:value-of select="@platform"/></xsl:attribute>
30                        </xsl:if>
31                       
32                        <xsl:if test="string-length(@version) > 0">
33                                <xsl:attribute name="version"><xsl:value-of select="@version"/></xsl:attribute>
34                        </xsl:if>
35                       
36                        <xsl:apply-templates select="descr[1]"/>
37                       
38                        <xsl:choose>
39                                <xsl:when test="count(DROP) > 0">
40                                        <xsl:element name="DROP"/>
41                                </xsl:when>
42                                <xsl:otherwise>
43                                        <xsl:apply-templates select="field"/>
44                                </xsl:otherwise>
45                        </xsl:choose>
46                       
47                        <xsl:apply-templates select="constraint"/>
48                       
49                        <xsl:apply-templates select="../index[@table=$table_name]"/>
50                </xsl:element>
51        </xsl:template>
52       
53        <!-- Field -->
54        <xsl:template match="field">
55                <xsl:element name="field">
56                        <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
57                        <xsl:attribute name="type"><xsl:value-of select="@type"/></xsl:attribute>
58                       
59                        <xsl:if test="string-length(@size) > 0">
60                                <xsl:attribute name="size"><xsl:value-of select="@size"/></xsl:attribute>
61                        </xsl:if>
62                       
63                        <xsl:choose>
64                                <xsl:when test="count(PRIMARY) > 0">
65                                        <xsl:element name="PRIMARY"/>
66                                </xsl:when>
67                                <xsl:when test="count(KEY) > 0">
68                                        <xsl:element name="KEY"/>
69                                </xsl:when>
70                                <xsl:when test="count(NOTNULL) > 0">
71                                        <xsl:element name="NOTNULL"/>
72                                </xsl:when>
73                        </xsl:choose>
74                       
75                        <xsl:choose>
76                                <xsl:when test="count(AUTO) > 0">
77                                        <xsl:element name="AUTO"/>
78                                </xsl:when>
79                                <xsl:when test="count(AUTOINCREMENT) > 0">
80                                        <xsl:element name="AUTOINCREMENT"/>
81                                </xsl:when>
82                        </xsl:choose>
83                       
84                        <xsl:choose>
85                                <xsl:when test="count(DEFAULT) > 0">
86                                        <xsl:element name="DEFAULT">
87                                                <xsl:attribute name="value">
88                                                        <xsl:value-of select="DEFAULT[1]/@value"/>
89                                                </xsl:attribute>
90                                        </xsl:element>
91                                </xsl:when>
92                                <xsl:when test="count(DEFDATE) > 0">
93                                        <xsl:element name="DEFDATE">
94                                                <xsl:attribute name="value">
95                                                        <xsl:value-of select="DEFDATE[1]/@value"/>
96                                                </xsl:attribute>
97                                        </xsl:element>
98                                </xsl:when>
99                                <xsl:when test="count(DEFTIMESTAMP) > 0">
100                                        <xsl:element name="DEFDTIMESTAMP">
101                                                <xsl:attribute name="value">
102                                                        <xsl:value-of select="DEFTIMESTAMP[1]/@value"/>
103                                                </xsl:attribute>
104                                        </xsl:element>
105                                </xsl:when>
106                        </xsl:choose>
107                       
108                        <xsl:if test="count(NOQUOTE) > 0">
109                                <xsl:element name="NOQUOTE"/>
110                        </xsl:if>
111                       
112                        <xsl:apply-templates select="constraint"/>
113                </xsl:element>
114        </xsl:template>
115       
116        <!-- Constraint -->
117        <xsl:template match="constraint">
118                <xsl:element name="constraint">
119                        <xsl:value-of select="normalize-space(text())"/>
120                </xsl:element>
121        </xsl:template>
122       
123        <!-- Index -->
124        <xsl:template match="index">
125                <xsl:element name="index">
126                        <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
127                       
128                        <xsl:apply-templates select="descr[1]"/>
129                       
130                        <xsl:if test="count(CLUSTERED) > 0">
131                                <xsl:element name="CLUSTERED"/>
132                        </xsl:if>
133                       
134                        <xsl:if test="count(BITMAP) > 0">
135                                <xsl:element name="BITMAP"/>
136                        </xsl:if>
137                       
138                        <xsl:if test="count(UNIQUE) > 0">
139                                <xsl:element name="UNIQUE"/>
140                        </xsl:if>
141                       
142                        <xsl:if test="count(FULLTEXT) > 0">
143                                <xsl:element name="FULLTEXT"/>
144                        </xsl:if>
145                       
146                        <xsl:if test="count(HASH) > 0">
147                                <xsl:element name="HASH"/>
148                        </xsl:if>
149                       
150                        <xsl:choose>
151                                <xsl:when test="count(DROP) > 0">
152                                        <xsl:element name="DROP"/>
153                                </xsl:when>
154                                <xsl:otherwise>
155                                        <xsl:apply-templates select="col"/>
156                                </xsl:otherwise>
157                        </xsl:choose>
158                </xsl:element>
159        </xsl:template>
160       
161        <!-- Index Column -->
162        <xsl:template match="col">
163                <xsl:element name="col">
164                        <xsl:value-of select="normalize-space(text())"/>
165                </xsl:element>
166        </xsl:template>
167       
168        <!-- SQL QuerySet -->
169        <xsl:template match="sql">
170                <xsl:element name="sql">
171                        <xsl:if test="string-length(@platform) > 0">
172                                <xsl:attribute name="platform"><xsl:value-of select="@platform"/></xsl:attribute>
173                        </xsl:if>
174                       
175                        <xsl:if test="string-length(@key) > 0">
176                                <xsl:attribute name="key"><xsl:value-of select="@key"/></xsl:attribute>
177                        </xsl:if>
178                       
179                        <xsl:if test="string-length(@prefixmethod) > 0">
180                                <xsl:attribute name="prefixmethod"><xsl:value-of select="@prefixmethod"/></xsl:attribute>
181                        </xsl:if>
182                       
183                        <xsl:apply-templates select="descr[1]"/>
184                        <xsl:apply-templates select="query"/>
185                </xsl:element>
186        </xsl:template>
187       
188        <!-- Query -->
189        <xsl:template match="query">
190                <xsl:element name="query">
191                        <xsl:if test="string-length(@platform) > 0">
192                                <xsl:attribute name="platform"><xsl:value-of select="@platform"/></xsl:attribute>
193                        </xsl:if>
194                       
195                        <xsl:value-of select="normalize-space(text())"/>
196                </xsl:element>
197        </xsl:template>
198       
199        <!-- Description -->
200        <xsl:template match="descr">
201                <xsl:element name="descr">
202                        <xsl:value-of select="normalize-space(text())"/>
203                </xsl:element>
204        </xsl:template>
205</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.