Hi, I am using the xsl transformation (pasted below) to convert the repository.xml to SQL for postgre. Maybe someone else using postgre may find it useful... Its not complete and full featured and generalized, but it is better than nothing at all.. :)
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="descriptor-repository"> <xsl:for-each select="class-descriptor"> <!-- sort sql statements so tables with dependencies on other tables are deleted first--> <xsl:sort select="reference-descriptor" order="descending"/> <xsl:text>DROP TABLE </xsl:text><xsl:value-of select="@table"/>; </xsl:for-each> <xsl:for-each select="class-descriptor"> <!-- tables without dependencies on other tables are created first--> <xsl:sort select="reference-descriptor" order="ascending"/> ----------------------------------------- --- <xsl:value-of select="@class"/> ----------------------------------------- <xsl:variable name="table" select="@table"/> <xsl:text>CREATE TABLE </xsl:text><xsl:value-of select="@table"/> <xsl:text> ( </xsl:text> <xsl:for-each select="field-descriptor"> <xsl:value-of select="@column"/> <xsl:text> </xsl:text> <xsl:value-of select="@jdbc-type"/> <xsl:if test="number(@length)"> <xsl:text>(</xsl:text> <xsl:value-of select="@length"/> <xsl:text>)</xsl:text> </xsl:if> <xsl:if test="number(@precision)"> <xsl:text>(</xsl:text> <xsl:value-of select="@precision"/> <xsl:if test="number(@scale)"> <xsl:text>,</xsl:text> <xsl:value-of select="@scale"/> </xsl:if> <xsl:text>)</xsl:text> </xsl:if> <xsl:if test="@primarykey='true'"> <xsl:text> primary key </xsl:text> </xsl:if> <xsl:if test="string-length(@sequence-name) > 0" ><xsl:text> default nextval(</xsl:text>'<xsl:value-of select="@sequence-name"/>'<xsl:text>) </xsl:text></xsl:if> <xsl:if test="not(position()=last())"><xsl:text>, </xsl:text></xsl:if> </xsl:for-each> <xsl:for-each select="reference-descriptor"> <xsl:text>, CONSTRAINT fk</xsl:text> <xsl:value-of select="$table"/> <xsl:value-of select="foreignkey/@field-ref"/> <xsl:text> FOREIGN KEY (</xsl:text> <xsl:for-each select="foreignkey"> <xsl:value-of select="@field-ref"/> </xsl:for-each> <xsl:text>) REFERENCES</xsl:text> <xsl:apply-templates select="//descriptor-repository/[EMAIL PROTECTED]()/@class-ref]"/> </xsl:for-each> <xsl:text> ); </xsl:text> <xsl:for-each select="field-descriptor"> <xsl:if test="'true'[EMAIL PROTECTED]"> DROP SEQUENCE <xsl:value-of select="@sequence-name"/>; CREATE SEQUENCE <xsl:value-of select="@sequence-name"/>; </xsl:if> </xsl:for-each> </xsl:for-each> </xsl:template> <xsl:template match="descriptor-repository/class-descriptor"> <xsl:text> </xsl:text> <xsl:value-of select="@table"/> <xsl:text> ( </xsl:text> <xsl:for-each select="[EMAIL PROTECTED] = 'true']"> <xsl:value-of select="@column"/> <xsl:if test="not(position()=last())"><xsl:text>, </xsl:text></xsl:if> </xsl:for-each> <xsl:text>) </xsl:text> </xsl:template> </xsl:stylesheet> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
