source: tmp/version-2_5-test/data/module/adodb/xsl/convert-0.1-0.3.xsl @ 18609

Revision 18609, 6.0 KB checked in by kajiwara, 14 years ago (diff)

正式版にナイトリービルド版をマージしてみるテスト

  • Property svn:mime-type set to text/plain
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.3</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="string-length(@opts) = 0"/>
65                <xsl:when test="@opts = 'UNSIGNED'">
66                    <xsl:element name="UNSIGNED"/>
67                </xsl:when>
68                <xsl:when test="contains(@opts,'UNSIGNED')">
69                    <xsl:attribute name="opts">
70                        <xsl:value-of select="concat(substring-before(@opts,'UNSIGNED'),substring-after(@opts,'UNSIGNED'))"/>
71                    </xsl:attribute>
72                    <xsl:element name="UNSIGNED"/>
73                </xsl:when>
74                <xsl:otherwise>
75                    <xsl:attribute name="opts"><xsl:value-of select="@opts"/></xsl:attribute>
76                </xsl:otherwise>
77            </xsl:choose>
78           
79            <xsl:choose>
80                <xsl:when test="count(PRIMARY) > 0">
81                    <xsl:element name="PRIMARY"/>
82                </xsl:when>
83                <xsl:when test="count(KEY) > 0">
84                    <xsl:element name="KEY"/>
85                </xsl:when>
86                <xsl:when test="count(NOTNULL) > 0">
87                    <xsl:element name="NOTNULL"/>
88                </xsl:when>
89            </xsl:choose>
90           
91            <xsl:choose>
92                <xsl:when test="count(AUTO) > 0">
93                    <xsl:element name="AUTO"/>
94                </xsl:when>
95                <xsl:when test="count(AUTOINCREMENT) > 0">
96                    <xsl:element name="AUTOINCREMENT"/>
97                </xsl:when>
98            </xsl:choose>
99           
100            <xsl:choose>
101                <xsl:when test="count(DEFAULT) > 0">
102                    <xsl:element name="DEFAULT">
103                        <xsl:attribute name="value">
104                            <xsl:value-of select="DEFAULT[1]/@value"/>
105                        </xsl:attribute>
106                    </xsl:element>
107                </xsl:when>
108                <xsl:when test="count(DEFDATE) > 0">
109                    <xsl:element name="DEFDATE">
110                        <xsl:attribute name="value">
111                            <xsl:value-of select="DEFDATE[1]/@value"/>
112                        </xsl:attribute>
113                    </xsl:element>
114                </xsl:when>
115                <xsl:when test="count(DEFTIMESTAMP) > 0">
116                    <xsl:element name="DEFTIMESTAMP">
117                        <xsl:attribute name="value">
118                            <xsl:value-of select="DEFTIMESTAMP[1]/@value"/>
119                        </xsl:attribute>
120                    </xsl:element>
121                </xsl:when>
122            </xsl:choose>
123           
124            <xsl:if test="count(NOQUOTE) > 0">
125                <xsl:element name="NOQUOTE"/>
126            </xsl:if>
127           
128            <xsl:apply-templates select="constraint"/>
129        </xsl:element>
130    </xsl:template>
131   
132    <!-- Constraint -->
133    <xsl:template match="constraint">
134        <xsl:element name="constraint">
135            <xsl:value-of select="normalize-space(text())"/>
136        </xsl:element>
137    </xsl:template>
138   
139    <!-- Index -->
140    <xsl:template match="index">
141        <xsl:element name="index">
142            <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
143           
144            <xsl:apply-templates select="descr[1]"/>
145           
146            <xsl:if test="count(CLUSTERED) > 0">
147                <xsl:element name="CLUSTERED"/>
148            </xsl:if>
149           
150            <xsl:if test="count(BITMAP) > 0">
151                <xsl:element name="BITMAP"/>
152            </xsl:if>
153           
154            <xsl:if test="count(UNIQUE) > 0">
155                <xsl:element name="UNIQUE"/>
156            </xsl:if>
157           
158            <xsl:if test="count(FULLTEXT) > 0">
159                <xsl:element name="FULLTEXT"/>
160            </xsl:if>
161           
162            <xsl:if test="count(HASH) > 0">
163                <xsl:element name="HASH"/>
164            </xsl:if>
165           
166            <xsl:choose>
167                <xsl:when test="count(DROP) > 0">
168                    <xsl:element name="DROP"/>
169                </xsl:when>
170                <xsl:otherwise>
171                    <xsl:apply-templates select="col"/>
172                </xsl:otherwise>
173            </xsl:choose>
174        </xsl:element>
175    </xsl:template>
176   
177    <!-- Index Column -->
178    <xsl:template match="col">
179        <xsl:element name="col">
180            <xsl:value-of select="normalize-space(text())"/>
181        </xsl:element>
182    </xsl:template>
183   
184    <!-- SQL QuerySet -->
185    <xsl:template match="sql">
186        <xsl:element name="sql">
187            <xsl:if test="string-length(@platform) > 0">
188                <xsl:attribute name="platform"><xsl:value-of select="@platform"/></xsl:attribute>
189            </xsl:if>
190           
191            <xsl:if test="string-length(@key) > 0">
192                <xsl:attribute name="key"><xsl:value-of select="@key"/></xsl:attribute>
193            </xsl:if>
194           
195            <xsl:if test="string-length(@prefixmethod) > 0">
196                <xsl:attribute name="prefixmethod"><xsl:value-of select="@prefixmethod"/></xsl:attribute>
197            </xsl:if>
198           
199            <xsl:apply-templates select="descr[1]"/>
200            <xsl:apply-templates select="query"/>
201        </xsl:element>
202    </xsl:template>
203   
204    <!-- Query -->
205    <xsl:template match="query">
206        <xsl:element name="query">
207            <xsl:if test="string-length(@platform) > 0">
208                <xsl:attribute name="platform"><xsl:value-of select="@platform"/></xsl:attribute>
209            </xsl:if>
210           
211            <xsl:value-of select="normalize-space(text())"/>
212        </xsl:element>
213    </xsl:template>
214   
215    <!-- Description -->
216    <xsl:template match="descr">
217        <xsl:element name="descr">
218            <xsl:value-of select="normalize-space(text())"/>
219        </xsl:element>
220    </xsl:template>
221</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.