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

Revision 18609, 5.5 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.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="DEFTIMESTAMP">
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.