[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnue/common/utils/xml2sql display.xsl mssql.xsl...
From: |
Jason Cater |
Subject: |
gnue/common/utils/xml2sql display.xsl mssql.xsl... |
Date: |
Fri, 19 Jul 2002 14:59:01 -0400 |
CVSROOT: /cvsroot/gnue
Module name: gnue
Changes by: Jason Cater <address@hidden> 02/07/19 14:59:01
Modified files:
common/utils/xml2sql: display.xsl mssql.xsl mysql.xsl pgsql.xsl
sybase.xsl
Log message:
removed annoying tabs
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/utils/xml2sql/display.xsl.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/utils/xml2sql/mssql.xsl.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/utils/xml2sql/mysql.xsl.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/utils/xml2sql/pgsql.xsl.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/utils/xml2sql/sybase.xsl.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
Patches:
Index: gnue/common/utils/xml2sql/display.xsl
diff -c gnue/common/utils/xml2sql/display.xsl:1.2
gnue/common/utils/xml2sql/display.xsl:1.3
*** gnue/common/utils/xml2sql/display.xsl:1.2 Sat Jul 13 06:55:16 2002
--- gnue/common/utils/xml2sql/display.xsl Fri Jul 19 14:59:01 2002
***************
*** 2,63 ****
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="html"/><xsl:template match="/schema">
<html><head>
! <title>Schema Display</title>
! <style type="text/css">
! body { background-color: white; margin-left: 10%; margin-right:
10%; }
! th { text-align: left; }
! th.header { border-bottom: solid black 2px; cursor: hand;
cursor: pointer; }
! tr.even { background-color: white; }
! tr.odd { background-color: #c0c0c0; }
! table { width: 100%; }
! img { border: solid black 1px; }
! </style>
! <script language="JavaScript">
! <![CDATA[
! function showHide(sDiv)
! {
! var oDiv = document.getElementById(sDiv);
! if (oDiv)
! oDiv.style.display = oDiv.style.display ==
"none" ? "" : "none";
! }
! ]]>
! </script>
</head><body>
! <xsl:for-each select="tables/table"><xsl:sort select="@name"/>
! <table border="0">
! <tr><th class="header" colspan="6"
onclick="showHide('address@hidden');"><xsl:value-of select="@name"/></th></tr>
! </table>
! <div id="address@hidden" style="display: none;">
! <table border="0">
!
<tr><th>Name</th><th>Type</th><th>Size</th><th>Scale</th><th>Null?</th><th>Default</th></tr>
! <xsl:for-each select="fields/field">
! <xsl:variable name="tdclass">
! <xsl:choose>
! <xsl:when test="(position() mod 2) =
0">even</xsl:when>
! <xsl:otherwise>odd</xsl:otherwise>
! </xsl:choose>
! </xsl:variable>
! <tr class="{$tdclass}">
! <xsl:variable name="name"><xsl:value-of
select="@name"/></xsl:variable>
! <td><xsl:value-of select="$name"/>
! <xsl:for-each
select="../../primarykey/pkfield">
! <xsl:if test=". =
$name"><xsl:text> </xsl:text><img src="key.png"/></xsl:if>
! </xsl:for-each>
! </td>
! <td><xsl:value-of select="@type"/></td>
! <td><xsl:value-of select="@size"/></td>
! <td><xsl:value-of select="@scale"/></td>
! <td>
! <xsl:choose>
! <xsl:when test="@nullable =
"N""><img src="no.png"/></xsl:when>
! <xsl:otherwise><img
src="yes.png"/></xsl:otherwise>
! </xsl:choose>
! </td>
! <td><xsl:value-of select="@default"/></td>
! </tr>
! </xsl:for-each>
! </table>
! </div>
! </xsl:for-each>
</body></html>
</xsl:template></xsl:stylesheet>
--- 2,63 ----
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="html"/><xsl:template match="/schema">
<html><head>
! <title>Schema Display</title>
! <style type="text/css">
! body { background-color: white; margin-left: 10%; margin-right: 10%; }
! th { text-align: left; }
! th.header { border-bottom: solid black 2px; cursor: hand; cursor:
pointer; }
! tr.even { background-color: white; }
! tr.odd { background-color: #c0c0c0; }
! table { width: 100%; }
! img { border: solid black 1px; }
! </style>
! <script language="JavaScript">
! <![CDATA[
! function showHide(sDiv)
! {
! var oDiv = document.getElementById(sDiv);
! if (oDiv)
! oDiv.style.display = oDiv.style.display == "none" ? "" : "none";
! }
! ]]>
! </script>
</head><body>
! <xsl:for-each select="tables/table"><xsl:sort select="@name"/>
! <table border="0">
! <tr><th class="header" colspan="6"
onclick="showHide('address@hidden');"><xsl:value-of select="@name"/></th></tr>
! </table>
! <div id="address@hidden" style="display: none;">
! <table border="0">
!
<tr><th>Name</th><th>Type</th><th>Size</th><th>Scale</th><th>Null?</th><th>Default</th></tr>
! <xsl:for-each select="fields/field">
! <xsl:variable name="tdclass">
! <xsl:choose>
! <xsl:when test="(position() mod 2) = 0">even</xsl:when>
! <xsl:otherwise>odd</xsl:otherwise>
! </xsl:choose>
! </xsl:variable>
! <tr class="{$tdclass}">
! <xsl:variable name="name"><xsl:value-of
select="@name"/></xsl:variable>
! <td><xsl:value-of select="$name"/>
! <xsl:for-each select="../../primarykey/pkfield">
! <xsl:if test=". = $name"><xsl:text> </xsl:text><img
src="key.png"/></xsl:if>
! </xsl:for-each>
! </td>
! <td><xsl:value-of select="@type"/></td>
! <td><xsl:value-of select="@size"/></td>
! <td><xsl:value-of select="@scale"/></td>
! <td>
! <xsl:choose>
! <xsl:when test="@nullable = "N""><img
src="no.png"/></xsl:when>
! <xsl:otherwise><img src="yes.png"/></xsl:otherwise>
! </xsl:choose>
! </td>
! <td><xsl:value-of select="@default"/></td>
! </tr>
! </xsl:for-each>
! </table>
! </div>
! </xsl:for-each>
</body></html>
</xsl:template></xsl:stylesheet>
Index: gnue/common/utils/xml2sql/mssql.xsl
diff -c gnue/common/utils/xml2sql/mssql.xsl:1.2
gnue/common/utils/xml2sql/mssql.xsl:1.3
*** gnue/common/utils/xml2sql/mssql.xsl:1.2 Sat Jul 13 06:55:16 2002
--- gnue/common/utils/xml2sql/mssql.xsl Fri Jul 19 14:59:01 2002
***************
*** 1,121 ****
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
! <xsl:template match="/schema"><sql>
! <xsl:for-each select="tables/table">
! <xsl:call-template name="doTable"/>
! <xsl:call-template name="doPrimaryKey"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! <xsl:call-template name="doIndexes"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! <xsl:call-template name="doConstraints"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! </xsl:for-each></sql>
! </xsl:template>
! <xsl:template name="doTable"><xsl:variable name="numFields"
select="count(fields/field)"/><xsl:variable name="tableName" select="@name"/>
! <command>Create Table <xsl:value-of select="$tableName"/>
(<xsl:for-each select="fields/field">
! <xsl:value-of select="@name"/>
! <xsl:choose>
! <xsl:when test="@type =
"auto""><xsl:text> int identity(1,1)</xsl:text></xsl:when>
! <xsl:when test="@type = "int"">
! <xsl:choose>
! <xsl:when test="@size =
2"><xsl:text> smallint</xsl:text></xsl:when>
! <xsl:when test="@size =
4"><xsl:text> int</xsl:text></xsl:when>
! <xsl:when test="@size =
8"><xsl:text> int</xsl:text></xsl:when>
! </xsl:choose>
! </xsl:when>
! <xsl:when test="@type = "float"">
! <xsl:choose>
! <xsl:when test="@size =
4"><xsl:text> float</xsl:text></xsl:when>
! <xsl:when test="@size =
8"><xsl:text> real</xsl:text></xsl:when>
! </xsl:choose>
! </xsl:when>
! <xsl:when test="@type =
"decimal""><xsl:text> </xsl:text><xsl:value-of
select="@type"/>(<xsl:value-of select="@precision"/>,<xsl:value-of
select="@scale"/>)</xsl:when>
! <xsl:when test="@type =
"varchar""><xsl:text> </xsl:text><xsl:value-of
select="@type"/>(<xsl:value-of select="@size"/>)</xsl:when>
! <xsl:when test="@type =
"char""><xsl:text> </xsl:text><xsl:value-of
select="@type"/>(<xsl:value-of select="@size"/>)</xsl:when>
! <xsl:when test="@type =
"blob""><xsl:text> image</xsl:text></xsl:when>
! <xsl:when test="@type =
"date""><xsl:text> smalldatetime</xsl:text></xsl:when>
! <xsl:when test="@type =
"datetime""><xsl:text> datetime</xsl:text></xsl:when>
! <xsl:when test="@type =
"longtext""><xsl:text> text</xsl:text></xsl:when>
! <xsl:when test="@type =
"text""><xsl:text> </xsl:text><xsl:value-of
select="@type"/></xsl:when>
! <xsl:when test="@type =
"timestamp""><xsl:text> timestamp</xsl:text></xsl:when>
! <xsl:otherwise><xsl:text> UNHANDLED
TYPE(</xsl:text><xsl:value-of select="@type"/>)</xsl:otherwise>
! </xsl:choose>
! <xsl:choose>
! <xsl:when test="@nullable =
"N""><xsl:text> NOT
NULL</xsl:text></xsl:when><xsl:otherwise><xsl:text>
NULL</xsl:text></xsl:otherwise>
! </xsl:choose>
! <xsl:if test="@default != """><xsl:text>
default </xsl:text>
! <xsl:choose>
! <xsl:when test="@default =
"getdate()"">GetDate()</xsl:when>
! <xsl:otherwise><xsl:value-of
select="@default"/></xsl:otherwise>
! </xsl:choose>
! </xsl:if>
! <xsl:if test="position() < $numFields">, </xsl:if>
! </xsl:for-each><xsl:text>)
GO
</xsl:text></command>
! </xsl:template>
! <xsl:template name="doPrimaryKey">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:if test="count(./primarykey/pkfield[text()]) >
0">
! <command><xsl:text>Alter Table
</xsl:text><xsl:value-of select="$table"/><xsl:text> Add Constraint </xsl:text>
! <xsl:value-of
select="primarykey/@name"/><xsl:text> Primary Key(</xsl:text>
! <xsl:for-each select="primarykey/pkfield">
! <xsl:if test="position() >
1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! <xsl:text>)
GO
</xsl:text></command>
! </xsl:if>
! </xsl:if>
! </xsl:template>
! <xsl:template name="doIndexes">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:for-each select="indexes/index">
! <command><xsl:text>Create </xsl:text>
! <xsl:if test="@type =
"unique""><xsl:text>Unique </xsl:text></xsl:if>
! <xsl:text> Index </xsl:text><xsl:value-of
select="@name"/><xsl:text> On </xsl:text>
! <xsl:value-of select="$table"/>
! <xsl:text>(</xsl:text>
! <xsl:for-each select="idxfield">
! <xsl:if test="position() >
1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! <xsl:text>)
GO
</xsl:text></command>
! </xsl:for-each>
! </xsl:if>
! </xsl:template>
! <xsl:template name="doConstraints">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:for-each select="constraints/constraint">
! <command>
! <xsl:choose>
! <xsl:when test="@type = "unique"">
! <xsl:text>Alter Table
</xsl:text><xsl:value-of select="$table"/><xsl:text> Add Constraint </xsl:text>
! <xsl:value-of
select="@name"/><xsl:text> Unique (</xsl:text>
! <xsl:for-each select="constraintfield">
! <xsl:if test="position() >
1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! </xsl:when>
! <xsl:when test="@type = "foreignkey"">
! <xsl:text>Alter Table
</xsl:text><xsl:value-of select="$table"/><xsl:text> Add Constraint </xsl:text>
! <xsl:value-of
select="@name"/><xsl:text> foreign key (</xsl:text>
! <xsl:value-of
select="ref/@sourceField"/><xsl:text>) references </xsl:text>
! <xsl:value-of
select="ref/@destinationTable"/><xsl:text>(</xsl:text><xsl:value-of
select="ref/@destinationField"/>
! </xsl:when>
! </xsl:choose>
! <xsl:text>)
GO
</xsl:text>
! </command>
! </xsl:for-each>
! </xsl:if>
! </xsl:template>
</xsl:stylesheet>
--- 1,121 ----
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
! <xsl:template match="/schema"><sql>
! <xsl:for-each select="tables/table">
! <xsl:call-template name="doTable"/>
! <xsl:call-template name="doPrimaryKey"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! <xsl:call-template name="doIndexes"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! <xsl:call-template name="doConstraints"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! </xsl:for-each></sql>
! </xsl:template>
! <xsl:template name="doTable"><xsl:variable name="numFields"
select="count(fields/field)"/><xsl:variable name="tableName" select="@name"/>
! <command>Create Table <xsl:value-of select="$tableName"/> (<xsl:for-each
select="fields/field">
! <xsl:value-of select="@name"/>
! <xsl:choose>
! <xsl:when test="@type = "auto""><xsl:text> int
identity(1,1)</xsl:text></xsl:when>
! <xsl:when test="@type = "int"">
! <xsl:choose>
! <xsl:when test="@size = 2"><xsl:text>
smallint</xsl:text></xsl:when>
! <xsl:when test="@size = 4"><xsl:text> int</xsl:text></xsl:when>
! <xsl:when test="@size = 8"><xsl:text> int</xsl:text></xsl:when>
! </xsl:choose>
! </xsl:when>
! <xsl:when test="@type = "float"">
! <xsl:choose>
! <xsl:when test="@size = 4"><xsl:text> float</xsl:text></xsl:when>
! <xsl:when test="@size = 8"><xsl:text> real</xsl:text></xsl:when>
! </xsl:choose>
! </xsl:when>
! <xsl:when test="@type = "decimal""><xsl:text>
</xsl:text><xsl:value-of select="@type"/>(<xsl:value-of
select="@precision"/>,<xsl:value-of select="@scale"/>)</xsl:when>
! <xsl:when test="@type = "varchar""><xsl:text>
</xsl:text><xsl:value-of select="@type"/>(<xsl:value-of
select="@size"/>)</xsl:when>
! <xsl:when test="@type = "char""><xsl:text>
</xsl:text><xsl:value-of select="@type"/>(<xsl:value-of
select="@size"/>)</xsl:when>
! <xsl:when test="@type = "blob""><xsl:text>
image</xsl:text></xsl:when>
! <xsl:when test="@type = "date""><xsl:text>
smalldatetime</xsl:text></xsl:when>
! <xsl:when test="@type = "datetime""><xsl:text>
datetime</xsl:text></xsl:when>
! <xsl:when test="@type = "longtext""><xsl:text>
text</xsl:text></xsl:when>
! <xsl:when test="@type = "text""><xsl:text>
</xsl:text><xsl:value-of select="@type"/></xsl:when>
! <xsl:when test="@type = "timestamp""><xsl:text>
timestamp</xsl:text></xsl:when>
! <xsl:otherwise><xsl:text> UNHANDLED TYPE(</xsl:text><xsl:value-of
select="@type"/>)</xsl:otherwise>
! </xsl:choose>
! <xsl:choose>
! <xsl:when test="@nullable = "N""><xsl:text> NOT
NULL</xsl:text></xsl:when><xsl:otherwise><xsl:text>
NULL</xsl:text></xsl:otherwise>
! </xsl:choose>
! <xsl:if test="@default != """><xsl:text> default </xsl:text>
! <xsl:choose>
! <xsl:when test="@default = "getdate()"">GetDate()</xsl:when>
! <xsl:otherwise><xsl:value-of select="@default"/></xsl:otherwise>
! </xsl:choose>
! </xsl:if>
! <xsl:if test="position() < $numFields">, </xsl:if>
! </xsl:for-each><xsl:text>)
GO
</xsl:text></command>
! </xsl:template>
! <xsl:template name="doPrimaryKey">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:if test="count(./primarykey/pkfield[text()]) > 0">
! <command><xsl:text>Alter Table </xsl:text><xsl:value-of
select="$table"/><xsl:text> Add Constraint </xsl:text>
! <xsl:value-of select="primarykey/@name"/><xsl:text> Primary
Key(</xsl:text>
! <xsl:for-each select="primarykey/pkfield">
! <xsl:if test="position() > 1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! <xsl:text>)
GO
</xsl:text></command>
! </xsl:if>
! </xsl:if>
! </xsl:template>
! <xsl:template name="doIndexes">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:for-each select="indexes/index">
! <command><xsl:text>Create </xsl:text>
! <xsl:if test="@type = "unique""><xsl:text>Unique
</xsl:text></xsl:if>
! <xsl:text> Index </xsl:text><xsl:value-of select="@name"/><xsl:text>
On </xsl:text>
! <xsl:value-of select="$table"/>
! <xsl:text>(</xsl:text>
! <xsl:for-each select="idxfield">
! <xsl:if test="position() > 1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! <xsl:text>)
GO
</xsl:text></command>
! </xsl:for-each>
! </xsl:if>
! </xsl:template>
! <xsl:template name="doConstraints">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:for-each select="constraints/constraint">
! <command>
! <xsl:choose>
! <xsl:when test="@type = "unique"">
! <xsl:text>Alter Table </xsl:text><xsl:value-of
select="$table"/><xsl:text> Add Constraint </xsl:text>
! <xsl:value-of select="@name"/><xsl:text> Unique (</xsl:text>
! <xsl:for-each select="constraintfield">
! <xsl:if test="position() > 1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! </xsl:when>
! <xsl:when test="@type = "foreignkey"">
! <xsl:text>Alter Table </xsl:text><xsl:value-of
select="$table"/><xsl:text> Add Constraint </xsl:text>
! <xsl:value-of select="@name"/><xsl:text> foreign key (</xsl:text>
! <xsl:value-of select="ref/@sourceField"/><xsl:text>) references
</xsl:text>
! <xsl:value-of
select="ref/@destinationTable"/><xsl:text>(</xsl:text><xsl:value-of
select="ref/@destinationField"/>
! </xsl:when>
! </xsl:choose>
! <xsl:text>)
GO
</xsl:text>
! </command>
! </xsl:for-each>
! </xsl:if>
! </xsl:template>
</xsl:stylesheet>
Index: gnue/common/utils/xml2sql/mysql.xsl
diff -c gnue/common/utils/xml2sql/mysql.xsl:1.2
gnue/common/utils/xml2sql/mysql.xsl:1.3
*** gnue/common/utils/xml2sql/mysql.xsl:1.2 Sat Jul 13 06:55:16 2002
--- gnue/common/utils/xml2sql/mysql.xsl Fri Jul 19 14:59:01 2002
***************
*** 1,124 ****
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
! <xsl:template match="/schema"><sql>
! <xsl:for-each select="tables/table">
! <xsl:call-template name="doTable"/>
! <xsl:call-template name="doPrimaryKey"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! <xsl:call-template name="doIndexes"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! <xsl:call-template name="doConstraints"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! </xsl:for-each></sql>
! </xsl:template>
! <xsl:template name="doTable"><xsl:variable name="numFields"
select="count(fields/field)"/><xsl:variable name="tableName" select="@name"/>
! <command>Create Table <xsl:value-of select="$tableName"/>
(<xsl:for-each select="fields/field">
! <xsl:value-of select="@name"/>
! <xsl:choose>
! <xsl:when test="@type =
"auto""><xsl:text> int(11) auto_increment</xsl:text></xsl:when>
! <xsl:when test="@type = "int"">
! <xsl:choose>
! <xsl:when test="@size =
2"><xsl:text> smallint</xsl:text></xsl:when>
! <xsl:when test="@size =
4"><xsl:text> int</xsl:text></xsl:when>
! <xsl:when test="@size =
8"><xsl:text> bigint</xsl:text></xsl:when>
! </xsl:choose>
! </xsl:when>
! <xsl:when test="@type = "float"">
! <xsl:choose>
! <xsl:when test="@size =
4"><xsl:text> float</xsl:text></xsl:when>
! <xsl:when test="@size =
8"><xsl:text> double</xsl:text></xsl:when>
! </xsl:choose>
! </xsl:when>
! <xsl:when test="@type =
"decimal""><xsl:text> </xsl:text><xsl:value-of
select="@type"/>(<xsl:value-of select="@precision"/>,<xsl:value-of
select="@scale"/>)</xsl:when>
! <xsl:when test="@type = "varchar"">
! <xsl:choose>
! <xsl:when test="@size >
255"><xsl:text> text</xsl:text></xsl:when>
! <xsl:otherwise><xsl:text>
</xsl:text><xsl:value-of select="@type"/>(<xsl:value-of
select="@size"/>)</xsl:otherwise>
! </xsl:choose>
! </xsl:when>
! <xsl:when test="@type = "char"">
! <xsl:choose>
! <xsl:when test="@size >
255"><xsl:text> text</xsl:text></xsl:when>
! <xsl:otherwise><xsl:text>
</xsl:text><xsl:value-of select="@type"/>(<xsl:value-of
select="@size"/>)</xsl:otherwise>
! </xsl:choose>
! </xsl:when>
! <xsl:when test="@type =
"blob""><xsl:text> </xsl:text><xsl:value-of
select="@type"/></xsl:when>
! <xsl:when test="@type =
"date""><xsl:text> </xsl:text><xsl:value-of
select="@type"/></xsl:when>
! <xsl:when test="@type =
"longtext""><xsl:text> </xsl:text><xsl:value-of
select="@type"/></xsl:when>
! <xsl:when test="@type =
"text""><xsl:text> </xsl:text><xsl:value-of
select="@type"/></xsl:when>
! <xsl:when test="@type =
"datetime""><xsl:text> </xsl:text><xsl:value-of
select="@type"/></xsl:when>
! <xsl:when test="@type =
"timestamp""><xsl:text> timestamp</xsl:text></xsl:when>
! <xsl:otherwise><xsl:text> UNHANDLED
TYPE(</xsl:text><xsl:value-of select="@type"/>)</xsl:otherwise>
! </xsl:choose>
! <xsl:choose>
! <xsl:when test="@nullable =
"N""><xsl:text> NOT
NULL</xsl:text></xsl:when><xsl:otherwise><xsl:text>
NULL</xsl:text></xsl:otherwise>
! </xsl:choose>
! <xsl:if test="@default != """><xsl:text>
default </xsl:text>
! <xsl:choose>
! <xsl:when test="@default =
"getdate()"">'now'</xsl:when>
! <xsl:otherwise><xsl:value-of
select="@default"/></xsl:otherwise>
! </xsl:choose>
! </xsl:if>
! <xsl:if test="position() < $numFields">, </xsl:if>
! </xsl:for-each>);</command>
! </xsl:template>
! <xsl:template name="doPrimaryKey">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:if test="count(./primarykey/pkfield[text()]) >
0">
! <command><xsl:text>Alter Table
</xsl:text><xsl:value-of select="$table"/><xsl:text> Add Primary Key(</xsl:text>
! <xsl:for-each select="primarykey/pkfield">
! <xsl:if test="position() >
1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! <xsl:text>);</xsl:text></command>
! </xsl:if>
! </xsl:if>
! </xsl:template>
! <xsl:template name="doIndexes">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:for-each select="indexes/index">
! <command><xsl:text>Alter Table
</xsl:text><xsl:value-of select="$table"/>
! <xsl:choose>
! <xsl:when test="@type =
"unique""><xsl:text> Add Unique </xsl:text></xsl:when>
! <xsl:otherwise><xsl:text> Add Index
</xsl:text></xsl:otherwise>
! </xsl:choose>
! <xsl:value-of
select="@name"/><xsl:text>(</xsl:text>
! <xsl:for-each select="idxfield">
! <xsl:if test="position() >
1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! <xsl:text>);</xsl:text></command>
! </xsl:for-each>
! </xsl:if>
! </xsl:template>
! <xsl:template name="doConstraints">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:for-each select="constraints/constraint">
! <command>
! <xsl:choose>
! <xsl:when test="@type = "unique"">
! <xsl:text>Alter Table
</xsl:text><xsl:value-of select="$table"/><xsl:text> Add Unique </xsl:text>
! <xsl:value-of
select="@name"/><xsl:text>(</xsl:text>
! <xsl:for-each select="constraintfield">
! <xsl:if test="position() >
1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! <xsl:text>);</xsl:text>
! </xsl:when>
! <xsl:when test="@type = "foreignkey"">
! <!--<xsl:text>Alter Table
</xsl:text><xsl:value-of select="$table"/><xsl:text> Add Constraint </xsl:text>
! <xsl:value-of
select="@name"/><xsl:text> foreign key (</xsl:text>
! <xsl:value-of
select="ref/@sourceField"/><xsl:text>) references </xsl:text>
! <xsl:value-of
select="ref/@destinationTable"/><xsl:text>(</xsl:text><xsl:value-of
select="ref/@destinationField"/>
! <xsl:text>);</xsl:text>-->
! </xsl:when>
! </xsl:choose>
! </command>
! </xsl:for-each>
! </xsl:if>
! </xsl:template>
</xsl:stylesheet>
--- 1,124 ----
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
! <xsl:template match="/schema"><sql>
! <xsl:for-each select="tables/table">
! <xsl:call-template name="doTable"/>
! <xsl:call-template name="doPrimaryKey"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! <xsl:call-template name="doIndexes"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! <xsl:call-template name="doConstraints"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! </xsl:for-each></sql>
! </xsl:template>
! <xsl:template name="doTable"><xsl:variable name="numFields"
select="count(fields/field)"/><xsl:variable name="tableName" select="@name"/>
! <command>Create Table <xsl:value-of select="$tableName"/> (<xsl:for-each
select="fields/field">
! <xsl:value-of select="@name"/>
! <xsl:choose>
! <xsl:when test="@type = "auto""><xsl:text> int(11)
auto_increment</xsl:text></xsl:when>
! <xsl:when test="@type = "int"">
! <xsl:choose>
! <xsl:when test="@size = 2"><xsl:text>
smallint</xsl:text></xsl:when>
! <xsl:when test="@size = 4"><xsl:text> int</xsl:text></xsl:when>
! <xsl:when test="@size = 8"><xsl:text> bigint</xsl:text></xsl:when>
! </xsl:choose>
! </xsl:when>
! <xsl:when test="@type = "float"">
! <xsl:choose>
! <xsl:when test="@size = 4"><xsl:text> float</xsl:text></xsl:when>
! <xsl:when test="@size = 8"><xsl:text> double</xsl:text></xsl:when>
! </xsl:choose>
! </xsl:when>
! <xsl:when test="@type = "decimal""><xsl:text>
</xsl:text><xsl:value-of select="@type"/>(<xsl:value-of
select="@precision"/>,<xsl:value-of select="@scale"/>)</xsl:when>
! <xsl:when test="@type = "varchar"">
! <xsl:choose>
! <xsl:when test="@size > 255"><xsl:text>
text</xsl:text></xsl:when>
! <xsl:otherwise><xsl:text> </xsl:text><xsl:value-of
select="@type"/>(<xsl:value-of select="@size"/>)</xsl:otherwise>
! </xsl:choose>
! </xsl:when>
! <xsl:when test="@type = "char"">
! <xsl:choose>
! <xsl:when test="@size > 255"><xsl:text>
text</xsl:text></xsl:when>
! <xsl:otherwise><xsl:text> </xsl:text><xsl:value-of
select="@type"/>(<xsl:value-of select="@size"/>)</xsl:otherwise>
! </xsl:choose>
! </xsl:when>
! <xsl:when test="@type = "blob""><xsl:text>
</xsl:text><xsl:value-of select="@type"/></xsl:when>
! <xsl:when test="@type = "date""><xsl:text>
</xsl:text><xsl:value-of select="@type"/></xsl:when>
! <xsl:when test="@type = "longtext""><xsl:text>
</xsl:text><xsl:value-of select="@type"/></xsl:when>
! <xsl:when test="@type = "text""><xsl:text>
</xsl:text><xsl:value-of select="@type"/></xsl:when>
! <xsl:when test="@type = "datetime""><xsl:text>
</xsl:text><xsl:value-of select="@type"/></xsl:when>
! <xsl:when test="@type = "timestamp""><xsl:text>
timestamp</xsl:text></xsl:when>
! <xsl:otherwise><xsl:text> UNHANDLED TYPE(</xsl:text><xsl:value-of
select="@type"/>)</xsl:otherwise>
! </xsl:choose>
! <xsl:choose>
! <xsl:when test="@nullable = "N""><xsl:text> NOT
NULL</xsl:text></xsl:when><xsl:otherwise><xsl:text>
NULL</xsl:text></xsl:otherwise>
! </xsl:choose>
! <xsl:if test="@default != """><xsl:text> default </xsl:text>
! <xsl:choose>
! <xsl:when test="@default = "getdate()"">'now'</xsl:when>
! <xsl:otherwise><xsl:value-of select="@default"/></xsl:otherwise>
! </xsl:choose>
! </xsl:if>
! <xsl:if test="position() < $numFields">, </xsl:if>
! </xsl:for-each>);</command>
! </xsl:template>
! <xsl:template name="doPrimaryKey">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:if test="count(./primarykey/pkfield[text()]) > 0">
! <command><xsl:text>Alter Table </xsl:text><xsl:value-of
select="$table"/><xsl:text> Add Primary Key(</xsl:text>
! <xsl:for-each select="primarykey/pkfield">
! <xsl:if test="position() > 1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! <xsl:text>);</xsl:text></command>
! </xsl:if>
! </xsl:if>
! </xsl:template>
! <xsl:template name="doIndexes">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:for-each select="indexes/index">
! <command><xsl:text>Alter Table </xsl:text><xsl:value-of
select="$table"/>
! <xsl:choose>
! <xsl:when test="@type = "unique""><xsl:text> Add Unique
</xsl:text></xsl:when>
! <xsl:otherwise><xsl:text> Add Index </xsl:text></xsl:otherwise>
! </xsl:choose>
! <xsl:value-of select="@name"/><xsl:text>(</xsl:text>
! <xsl:for-each select="idxfield">
! <xsl:if test="position() > 1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! <xsl:text>);</xsl:text></command>
! </xsl:for-each>
! </xsl:if>
! </xsl:template>
! <xsl:template name="doConstraints">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:for-each select="constraints/constraint">
! <command>
! <xsl:choose>
! <xsl:when test="@type = "unique"">
! <xsl:text>Alter Table </xsl:text><xsl:value-of
select="$table"/><xsl:text> Add Unique </xsl:text>
! <xsl:value-of select="@name"/><xsl:text>(</xsl:text>
! <xsl:for-each select="constraintfield">
! <xsl:if test="position() > 1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! <xsl:text>);</xsl:text>
! </xsl:when>
! <xsl:when test="@type = "foreignkey"">
! <!--<xsl:text>Alter Table </xsl:text><xsl:value-of
select="$table"/><xsl:text> Add Constraint </xsl:text>
! <xsl:value-of select="@name"/><xsl:text> foreign key (</xsl:text>
! <xsl:value-of select="ref/@sourceField"/><xsl:text>) references
</xsl:text>
! <xsl:value-of
select="ref/@destinationTable"/><xsl:text>(</xsl:text><xsl:value-of
select="ref/@destinationField"/>
! <xsl:text>);</xsl:text>-->
! </xsl:when>
! </xsl:choose>
! </command>
! </xsl:for-each>
! </xsl:if>
! </xsl:template>
</xsl:stylesheet>
Index: gnue/common/utils/xml2sql/pgsql.xsl
diff -c gnue/common/utils/xml2sql/pgsql.xsl:1.2
gnue/common/utils/xml2sql/pgsql.xsl:1.3
*** gnue/common/utils/xml2sql/pgsql.xsl:1.2 Wed Jul 10 16:29:59 2002
--- gnue/common/utils/xml2sql/pgsql.xsl Fri Jul 19 14:59:01 2002
***************
*** 1,121 ****
! <?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/schema"><sql>
! <xsl:for-each select="tables/table">
! <xsl:call-template name="doSequence"/>
! <xsl:call-template name="doTable"/>
! <xsl:call-template name="doPrimaryKey"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! <xsl:call-template name="doIndexes"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! <xsl:call-template name="doConstraints"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! </xsl:for-each>
! <xsl:for-each select="data/tabledata">
! <xsl:call-template name="doTableData"/>
! </xsl:for-each></sql>
! </xsl:template>
!
! <xsl:template name="doSequence">
! <xsl:if test="count(./fields/address@hidden"auto"]) >
0"><command>Create Sequence seq_<xsl:value-of
select="@name"/>;</command></xsl:if>
! </xsl:template>
!
! <xsl:template name="doTable"><xsl:variable name="numFields"
select="count(fields/field)"/><xsl:variable name="tableName" select="@name"/>
! <command>Create Table <xsl:value-of select="$tableName"/>
(<xsl:for-each select="fields/field">
! <xsl:value-of select="@name"/>
! <xsl:choose>
! <xsl:when test="@type =
"auto""><xsl:text> </xsl:text>int4</xsl:when>
! <xsl:when test="@type =
"int""><xsl:text> </xsl:text><xsl:value-of
select="@type"/><xsl:value-of select="@size"/></xsl:when>
! <xsl:when test="@type =
"float""><xsl:text> </xsl:text><xsl:value-of
select="@type"/><xsl:value-of select="@size"/></xsl:when>
! <xsl:when test="@type =
"decimal""><xsl:text> </xsl:text><xsl:value-of
select="@type"/>(<xsl:value-of select="@precision"/>,<xsl:value-of
select="@scale"/>)</xsl:when>
! <xsl:when test="@type =
"varchar""><xsl:text> </xsl:text><xsl:value-of
select="@type"/>(<xsl:value-of select="@size"/>)</xsl:when>
! <xsl:when test="@type =
"char""><xsl:text> </xsl:text><xsl:value-of
select="@type"/>(<xsl:value-of select="@size"/>)</xsl:when>
! <xsl:when test="@type =
"blob""><xsl:text> </xsl:text>text</xsl:when>
! <xsl:when test="@type =
"date""><xsl:text> </xsl:text><xsl:value-of
select="@type"/></xsl:when>
! <xsl:when test="@type =
"longtext""><xsl:text> </xsl:text>text</xsl:when>
! <xsl:when test="@type =
"text""><xsl:text> </xsl:text><xsl:value-of
select="@type"/></xsl:when>
! <xsl:when test="@type =
"datetime""><xsl:text> </xsl:text><xsl:value-of
select="@type"/></xsl:when>
! <xsl:when test="@type =
"timestamp""><xsl:text> </xsl:text><xsl:value-of
select="@type"/></xsl:when>
! <xsl:otherwise><xsl:text> </xsl:text>UNHANDLED
TYPE(<xsl:value-of select="@type"/>)</xsl:otherwise>
! </xsl:choose>
! <xsl:choose>
! <xsl:when test="@nullable =
"N""><xsl:text> </xsl:text>NOT
NULL</xsl:when><xsl:otherwise><xsl:text> </xsl:text>NULL</xsl:otherwise>
! </xsl:choose>
! <xsl:choose>
! <xsl:when test="@type =
"auto""><xsl:text> </xsl:text>default nextval('seq_<xsl:value-of
select="$tableName"/>')</xsl:when>
! <xsl:otherwise>
! <xsl:if test="@default !=
"""><xsl:text> default </xsl:text>
! <xsl:choose>
! <xsl:when test="@default =
"getdate()"">now()</xsl:when>
! <xsl:otherwise><xsl:value-of
select="@default"/></xsl:otherwise>
! </xsl:choose>
! </xsl:if>
! </xsl:otherwise>
! </xsl:choose><xsl:if test="position() <
$numFields"><xsl:text>, </xsl:text></xsl:if>
! </xsl:for-each>);</command>
! </xsl:template>
!
! <xsl:template name="doPrimaryKey">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:if test="count(./primarykey/pkfield[text()]) >
0">
! <command><xsl:text>Create Unique Index
</xsl:text><xsl:value-of select="primarykey/@name"/><xsl:text> On </xsl:text>
! <xsl:value-of
select="$table"/><xsl:text>(</xsl:text>
! <xsl:for-each select="primarykey/pkfield">
! <xsl:if test="position() >
1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! <xsl:text>);</xsl:text></command>
! </xsl:if>
! </xsl:if>
! </xsl:template>
!
! <xsl:template name="doIndexes">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:for-each select="indexes/index">
! <command><xsl:text>Create</xsl:text>
! <xsl:if test="@type =
"unique""><xsl:text> Unique</xsl:text></xsl:if>
! <xsl:text> Index </xsl:text><xsl:value-of
select="@name"/><xsl:text> On </xsl:text>
! <xsl:value-of
select="$table"/><xsl:text>(</xsl:text>
! <xsl:for-each select="idxfield">
! <xsl:if test="position() >
1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! <xsl:text>);</xsl:text></command>
! </xsl:for-each>
! </xsl:if>
! </xsl:template>
!
! <xsl:template name="doConstraints">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:for-each select="constraints/constraint">
! <command>
! <xsl:choose>
! <xsl:when test="@type = "unique"">
! <xsl:text>Create Unique Index
</xsl:text>
! <xsl:value-of
select="@name"/><xsl:text> On </xsl:text>
! <xsl:value-of
select="$table"/><xsl:text>(</xsl:text>
! <xsl:for-each select="constraintfield">
! <xsl:if test="position() >
1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! <xsl:text>);</xsl:text>
! </xsl:when>
! <xsl:when test="@type = "foreignkey"">
! <xsl:text>Alter Table
</xsl:text><xsl:value-of select="$table"/><xsl:text> Add Constraint </xsl:text>
! <xsl:value-of
select="@name"/><xsl:text> foreign key (</xsl:text>
! <xsl:value-of
select="ref/@sourceField"/><xsl:text>) references </xsl:text>
! <xsl:value-of
select="ref/@destinationTable"/><xsl:text>(</xsl:text><xsl:value-of
select="ref/@destinationField"/>
! <xsl:text>);</xsl:text>
! </xsl:when>
! </xsl:choose>
! </command>
! </xsl:for-each>
! </xsl:if>
! </xsl:template>
<xsl:template name="doTableData"><xsl:variable name="tableName"
select="@tablename"/>
<xsl:for-each select="rows/row"> <command>Insert into <xsl:value-of
select="$tableName"/> values (<xsl:variable name="numValues"
select="count(value)"/><xsl:for-each select="value"><xsl:value-of
select="."/><xsl:if test="position() < $numValues"><xsl:text>,
</xsl:text></xsl:if></xsl:for-each>);</command>
</xsl:for-each>
! </xsl:template>
</xsl:stylesheet>
--- 1,121 ----
! <?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/schema"><sql>
! <xsl:for-each select="tables/table">
! <xsl:call-template name="doSequence"/>
! <xsl:call-template name="doTable"/>
! <xsl:call-template name="doPrimaryKey"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! <xsl:call-template name="doIndexes"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! <xsl:call-template name="doConstraints"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! </xsl:for-each>
! <xsl:for-each select="data/tabledata">
! <xsl:call-template name="doTableData"/>
! </xsl:for-each></sql>
! </xsl:template>
!
! <xsl:template name="doSequence">
! <xsl:if test="count(./fields/address@hidden"auto"]) >
0"><command>Create Sequence seq_<xsl:value-of
select="@name"/>;</command></xsl:if>
! </xsl:template>
!
! <xsl:template name="doTable"><xsl:variable name="numFields"
select="count(fields/field)"/><xsl:variable name="tableName" select="@name"/>
! <command>Create Table <xsl:value-of select="$tableName"/> (<xsl:for-each
select="fields/field">
! <xsl:value-of select="@name"/>
! <xsl:choose>
! <xsl:when test="@type = "auto""><xsl:text>
</xsl:text>int4</xsl:when>
! <xsl:when test="@type = "int""><xsl:text>
</xsl:text><xsl:value-of select="@type"/><xsl:value-of
select="@size"/></xsl:when>
! <xsl:when test="@type = "float""><xsl:text>
</xsl:text><xsl:value-of select="@type"/><xsl:value-of
select="@size"/></xsl:when>
! <xsl:when test="@type = "decimal""><xsl:text>
</xsl:text><xsl:value-of select="@type"/>(<xsl:value-of
select="@precision"/>,<xsl:value-of select="@scale"/>)</xsl:when>
! <xsl:when test="@type = "varchar""><xsl:text>
</xsl:text><xsl:value-of select="@type"/>(<xsl:value-of
select="@size"/>)</xsl:when>
! <xsl:when test="@type = "char""><xsl:text>
</xsl:text><xsl:value-of select="@type"/>(<xsl:value-of
select="@size"/>)</xsl:when>
! <xsl:when test="@type = "blob""><xsl:text>
</xsl:text>text</xsl:when>
! <xsl:when test="@type = "date""><xsl:text>
</xsl:text><xsl:value-of select="@type"/></xsl:when>
! <xsl:when test="@type = "longtext""><xsl:text>
</xsl:text>text</xsl:when>
! <xsl:when test="@type = "text""><xsl:text>
</xsl:text><xsl:value-of select="@type"/></xsl:when>
! <xsl:when test="@type = "datetime""><xsl:text>
</xsl:text><xsl:value-of select="@type"/></xsl:when>
! <xsl:when test="@type = "timestamp""><xsl:text>
</xsl:text><xsl:value-of select="@type"/></xsl:when>
! <xsl:otherwise><xsl:text> </xsl:text>UNHANDLED TYPE(<xsl:value-of
select="@type"/>)</xsl:otherwise>
! </xsl:choose>
! <xsl:choose>
! <xsl:when test="@nullable = "N""><xsl:text> </xsl:text>NOT
NULL</xsl:when><xsl:otherwise><xsl:text> </xsl:text>NULL</xsl:otherwise>
! </xsl:choose>
! <xsl:choose>
! <xsl:when test="@type = "auto""><xsl:text>
</xsl:text>default nextval('seq_<xsl:value-of select="$tableName"/>')</xsl:when>
! <xsl:otherwise>
! <xsl:if test="@default != """><xsl:text> default
</xsl:text>
! <xsl:choose>
! <xsl:when test="@default = "getdate()"">now()</xsl:when>
! <xsl:otherwise><xsl:value-of select="@default"/></xsl:otherwise>
! </xsl:choose>
! </xsl:if>
! </xsl:otherwise>
! </xsl:choose><xsl:if test="position() < $numFields"><xsl:text>,
</xsl:text></xsl:if>
! </xsl:for-each>);</command>
! </xsl:template>
!
! <xsl:template name="doPrimaryKey">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:if test="count(./primarykey/pkfield[text()]) > 0">
! <command><xsl:text>Create Unique Index </xsl:text><xsl:value-of
select="primarykey/@name"/><xsl:text> On </xsl:text>
! <xsl:value-of select="$table"/><xsl:text>(</xsl:text>
! <xsl:for-each select="primarykey/pkfield">
! <xsl:if test="position() > 1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! <xsl:text>);</xsl:text></command>
! </xsl:if>
! </xsl:if>
! </xsl:template>
!
! <xsl:template name="doIndexes">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:for-each select="indexes/index">
! <command><xsl:text>Create</xsl:text>
! <xsl:if test="@type = "unique""><xsl:text>
Unique</xsl:text></xsl:if>
! <xsl:text> Index </xsl:text><xsl:value-of select="@name"/><xsl:text>
On </xsl:text>
! <xsl:value-of select="$table"/><xsl:text>(</xsl:text>
! <xsl:for-each select="idxfield">
! <xsl:if test="position() > 1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! <xsl:text>);</xsl:text></command>
! </xsl:for-each>
! </xsl:if>
! </xsl:template>
!
! <xsl:template name="doConstraints">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:for-each select="constraints/constraint">
! <command>
! <xsl:choose>
! <xsl:when test="@type = "unique"">
! <xsl:text>Create Unique Index </xsl:text>
! <xsl:value-of select="@name"/><xsl:text> On </xsl:text>
! <xsl:value-of select="$table"/><xsl:text>(</xsl:text>
! <xsl:for-each select="constraintfield">
! <xsl:if test="position() > 1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! <xsl:text>);</xsl:text>
! </xsl:when>
! <xsl:when test="@type = "foreignkey"">
! <xsl:text>Alter Table </xsl:text><xsl:value-of
select="$table"/><xsl:text> Add Constraint </xsl:text>
! <xsl:value-of select="@name"/><xsl:text> foreign key (</xsl:text>
! <xsl:value-of select="ref/@sourceField"/><xsl:text>) references
</xsl:text>
! <xsl:value-of
select="ref/@destinationTable"/><xsl:text>(</xsl:text><xsl:value-of
select="ref/@destinationField"/>
! <xsl:text>);</xsl:text>
! </xsl:when>
! </xsl:choose>
! </command>
! </xsl:for-each>
! </xsl:if>
! </xsl:template>
<xsl:template name="doTableData"><xsl:variable name="tableName"
select="@tablename"/>
<xsl:for-each select="rows/row"> <command>Insert into <xsl:value-of
select="$tableName"/> values (<xsl:variable name="numValues"
select="count(value)"/><xsl:for-each select="value"><xsl:value-of
select="."/><xsl:if test="position() < $numValues"><xsl:text>,
</xsl:text></xsl:if></xsl:for-each>);</command>
</xsl:for-each>
! </xsl:template>
</xsl:stylesheet>
Index: gnue/common/utils/xml2sql/sybase.xsl
diff -c gnue/common/utils/xml2sql/sybase.xsl:1.2
gnue/common/utils/xml2sql/sybase.xsl:1.3
*** gnue/common/utils/xml2sql/sybase.xsl:1.2 Sat Jul 13 06:55:16 2002
--- gnue/common/utils/xml2sql/sybase.xsl Fri Jul 19 14:59:01 2002
***************
*** 1,121 ****
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
! <xsl:template match="/schema"><sql>
! <xsl:for-each select="tables/table">
! <xsl:call-template name="doTable"/>
! <xsl:call-template name="doPrimaryKey"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! <xsl:call-template name="doIndexes"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! <xsl:call-template name="doConstraints"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! </xsl:for-each></sql>
! </xsl:template>
! <xsl:template name="doTable"><xsl:variable name="numFields"
select="count(fields/field)"/><xsl:variable name="tableName" select="@name"/>
! <command>Create Table <xsl:value-of select="$tableName"/>
(<xsl:for-each select="fields/field">
! <xsl:value-of select="@name"/>
! <xsl:choose>
! <xsl:when test="@type =
"auto""><xsl:text> numeric(11,0) identity</xsl:text></xsl:when>
! <xsl:when test="@type = "int"">
! <xsl:choose>
! <xsl:when test="@size =
2"><xsl:text> smallint</xsl:text></xsl:when>
! <xsl:when test="@size =
4"><xsl:text> int</xsl:text></xsl:when>
! <xsl:when test="@size =
8"><xsl:text> int</xsl:text></xsl:when>
! </xsl:choose>
! </xsl:when>
! <xsl:when test="@type = "float"">
! <xsl:choose>
! <xsl:when test="@size =
4"><xsl:text> float</xsl:text></xsl:when>
! <xsl:when test="@size =
8"><xsl:text> real</xsl:text></xsl:when>
! </xsl:choose>
! </xsl:when>
! <xsl:when test="@type =
"decimal""><xsl:text> </xsl:text><xsl:value-of
select="@type"/>(<xsl:value-of select="@precision"/>,<xsl:value-of
select="@scale"/>)</xsl:when>
! <xsl:when test="@type =
"varchar""><xsl:text> </xsl:text><xsl:value-of
select="@type"/>(<xsl:value-of select="@size"/>)</xsl:when>
! <xsl:when test="@type =
"char""><xsl:text> </xsl:text><xsl:value-of
select="@type"/>(<xsl:value-of select="@size"/>)</xsl:when>
! <xsl:when test="@type =
"blob""><xsl:text> image</xsl:text></xsl:when>
! <xsl:when test="@type =
"date""><xsl:text> smalldatetime</xsl:text></xsl:when>
! <xsl:when test="@type =
"datetime""><xsl:text> datetime</xsl:text></xsl:when>
! <xsl:when test="@type =
"longtext""><xsl:text> text</xsl:text></xsl:when>
! <xsl:when test="@type =
"text""><xsl:text> </xsl:text><xsl:value-of
select="@type"/></xsl:when>
! <xsl:when test="@type =
"timestamp""><xsl:text> timestamp</xsl:text></xsl:when>
! <xsl:otherwise><xsl:text> UNHANDLED
TYPE(</xsl:text><xsl:value-of select="@type"/>)</xsl:otherwise>
! </xsl:choose>
! <xsl:choose>
! <xsl:when test="@nullable =
"N""><xsl:text> NOT
NULL</xsl:text></xsl:when><xsl:otherwise><xsl:text>
NULL</xsl:text></xsl:otherwise>
! </xsl:choose>
! <xsl:if test="@default != """><xsl:text>
default </xsl:text>
! <xsl:choose>
! <xsl:when test="@default =
"getdate()"">GetDate()</xsl:when>
! <xsl:otherwise><xsl:value-of
select="@default"/></xsl:otherwise>
! </xsl:choose>
! </xsl:if>
! <xsl:if test="position() < $numFields">, </xsl:if>
! </xsl:for-each>)<xsl:text>
GO
</xsl:text></command>
! </xsl:template>
! <xsl:template name="doPrimaryKey">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:if test="count(./primarykey/pkfield[text()]) >
0">
! <command><xsl:text>Alter Table
</xsl:text><xsl:value-of select="$table"/><xsl:text> Add Constraint </xsl:text>
! <xsl:value-of
select="primarykey/@name"/><xsl:text> Primary Key(</xsl:text>
! <xsl:for-each select="primarykey/pkfield">
! <xsl:if test="position() >
1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! <xsl:text>)
GO
</xsl:text></command>
! </xsl:if>
! </xsl:if>
! </xsl:template>
! <xsl:template name="doIndexes">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:for-each select="indexes/index">
! <command><xsl:text>Create </xsl:text>
! <xsl:if test="@type =
"unique""><xsl:text>Unique </xsl:text></xsl:if>
! <xsl:text> Index </xsl:text><xsl:value-of
select="@name"/><xsl:text> On </xsl:text>
! <xsl:value-of select="$table"/>
! <xsl:text>(</xsl:text>
! <xsl:for-each select="idxfield">
! <xsl:if test="position() >
1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! <xsl:text>)
GO
</xsl:text></command>
! </xsl:for-each>
! </xsl:if>
! </xsl:template>
! <xsl:template name="doConstraints">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:for-each select="constraints/constraint">
! <command>
! <xsl:choose>
! <xsl:when test="@type = "unique"">
! <xsl:text>Alter Table
</xsl:text><xsl:value-of select="$table"/><xsl:text> Add Constraint </xsl:text>
! <xsl:value-of
select="@name"/><xsl:text> Unique (</xsl:text>
! <xsl:for-each select="constraintfield">
! <xsl:if test="position() >
1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! </xsl:when>
! <xsl:when test="@type = "foreignkey"">
! <xsl:text>Alter Table
</xsl:text><xsl:value-of select="$table"/><xsl:text> Add Constraint </xsl:text>
! <xsl:value-of
select="@name"/><xsl:text> foreign key (</xsl:text>
! <xsl:value-of
select="ref/@sourceField"/><xsl:text>) references </xsl:text>
! <xsl:value-of
select="ref/@destinationTable"/><xsl:text>(</xsl:text><xsl:value-of
select="ref/@destinationField"/>
! </xsl:when>
! </xsl:choose>
! <xsl:text>)
GO
</xsl:text>
! </command>
! </xsl:for-each>
! </xsl:if>
! </xsl:template>
</xsl:stylesheet>
--- 1,121 ----
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
! <xsl:template match="/schema"><sql>
! <xsl:for-each select="tables/table">
! <xsl:call-template name="doTable"/>
! <xsl:call-template name="doPrimaryKey"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! <xsl:call-template name="doIndexes"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! <xsl:call-template name="doConstraints"><xsl:with-param
name="table"><xsl:value-of select="@name"/></xsl:with-param></xsl:call-template>
! </xsl:for-each></sql>
! </xsl:template>
! <xsl:template name="doTable"><xsl:variable name="numFields"
select="count(fields/field)"/><xsl:variable name="tableName" select="@name"/>
! <command>Create Table <xsl:value-of select="$tableName"/> (<xsl:for-each
select="fields/field">
! <xsl:value-of select="@name"/>
! <xsl:choose>
! <xsl:when test="@type = "auto""><xsl:text> numeric(11,0)
identity</xsl:text></xsl:when>
! <xsl:when test="@type = "int"">
! <xsl:choose>
! <xsl:when test="@size = 2"><xsl:text>
smallint</xsl:text></xsl:when>
! <xsl:when test="@size = 4"><xsl:text> int</xsl:text></xsl:when>
! <xsl:when test="@size = 8"><xsl:text> int</xsl:text></xsl:when>
! </xsl:choose>
! </xsl:when>
! <xsl:when test="@type = "float"">
! <xsl:choose>
! <xsl:when test="@size = 4"><xsl:text> float</xsl:text></xsl:when>
! <xsl:when test="@size = 8"><xsl:text> real</xsl:text></xsl:when>
! </xsl:choose>
! </xsl:when>
! <xsl:when test="@type = "decimal""><xsl:text>
</xsl:text><xsl:value-of select="@type"/>(<xsl:value-of
select="@precision"/>,<xsl:value-of select="@scale"/>)</xsl:when>
! <xsl:when test="@type = "varchar""><xsl:text>
</xsl:text><xsl:value-of select="@type"/>(<xsl:value-of
select="@size"/>)</xsl:when>
! <xsl:when test="@type = "char""><xsl:text>
</xsl:text><xsl:value-of select="@type"/>(<xsl:value-of
select="@size"/>)</xsl:when>
! <xsl:when test="@type = "blob""><xsl:text>
image</xsl:text></xsl:when>
! <xsl:when test="@type = "date""><xsl:text>
smalldatetime</xsl:text></xsl:when>
! <xsl:when test="@type = "datetime""><xsl:text>
datetime</xsl:text></xsl:when>
! <xsl:when test="@type = "longtext""><xsl:text>
text</xsl:text></xsl:when>
! <xsl:when test="@type = "text""><xsl:text>
</xsl:text><xsl:value-of select="@type"/></xsl:when>
! <xsl:when test="@type = "timestamp""><xsl:text>
timestamp</xsl:text></xsl:when>
! <xsl:otherwise><xsl:text> UNHANDLED TYPE(</xsl:text><xsl:value-of
select="@type"/>)</xsl:otherwise>
! </xsl:choose>
! <xsl:choose>
! <xsl:when test="@nullable = "N""><xsl:text> NOT
NULL</xsl:text></xsl:when><xsl:otherwise><xsl:text>
NULL</xsl:text></xsl:otherwise>
! </xsl:choose>
! <xsl:if test="@default != """><xsl:text> default </xsl:text>
! <xsl:choose>
! <xsl:when test="@default = "getdate()"">GetDate()</xsl:when>
! <xsl:otherwise><xsl:value-of select="@default"/></xsl:otherwise>
! </xsl:choose>
! </xsl:if>
! <xsl:if test="position() < $numFields">, </xsl:if>
! </xsl:for-each>)<xsl:text>
GO
</xsl:text></command>
! </xsl:template>
! <xsl:template name="doPrimaryKey">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:if test="count(./primarykey/pkfield[text()]) > 0">
! <command><xsl:text>Alter Table </xsl:text><xsl:value-of
select="$table"/><xsl:text> Add Constraint </xsl:text>
! <xsl:value-of select="primarykey/@name"/><xsl:text> Primary
Key(</xsl:text>
! <xsl:for-each select="primarykey/pkfield">
! <xsl:if test="position() > 1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! <xsl:text>)
GO
</xsl:text></command>
! </xsl:if>
! </xsl:if>
! </xsl:template>
! <xsl:template name="doIndexes">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:for-each select="indexes/index">
! <command><xsl:text>Create </xsl:text>
! <xsl:if test="@type = "unique""><xsl:text>Unique
</xsl:text></xsl:if>
! <xsl:text> Index </xsl:text><xsl:value-of select="@name"/><xsl:text>
On </xsl:text>
! <xsl:value-of select="$table"/>
! <xsl:text>(</xsl:text>
! <xsl:for-each select="idxfield">
! <xsl:if test="position() > 1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! <xsl:text>)
GO
</xsl:text></command>
! </xsl:for-each>
! </xsl:if>
! </xsl:template>
! <xsl:template name="doConstraints">
! <xsl:param name="table"></xsl:param>
! <xsl:if test="$table != """>
! <xsl:for-each select="constraints/constraint">
! <command>
! <xsl:choose>
! <xsl:when test="@type = "unique"">
! <xsl:text>Alter Table </xsl:text><xsl:value-of
select="$table"/><xsl:text> Add Constraint </xsl:text>
! <xsl:value-of select="@name"/><xsl:text> Unique (</xsl:text>
! <xsl:for-each select="constraintfield">
! <xsl:if test="position() > 1"><xsl:text>, </xsl:text></xsl:if>
! <xsl:value-of select="."/>
! </xsl:for-each>
! </xsl:when>
! <xsl:when test="@type = "foreignkey"">
! <xsl:text>Alter Table </xsl:text><xsl:value-of
select="$table"/><xsl:text> Add Constraint </xsl:text>
! <xsl:value-of select="@name"/><xsl:text> foreign key (</xsl:text>
! <xsl:value-of select="ref/@sourceField"/><xsl:text>) references
</xsl:text>
! <xsl:value-of
select="ref/@destinationTable"/><xsl:text>(</xsl:text><xsl:value-of
select="ref/@destinationField"/>
! </xsl:when>
! </xsl:choose>
! <xsl:text>)
GO
</xsl:text>
! </command>
! </xsl:for-each>
! </xsl:if>
! </xsl:template>
</xsl:stylesheet>
- gnue/common/utils/xml2sql display.xsl mssql.xsl...,
Jason Cater <=