From 83f163bb60e18efd8f53e3a08acf08bc6b87fbe1 Mon Sep 17 00:00:00 2001 From: sb <sb> Date: Thu, 10 Jul 2008 09:55:30 +0000 Subject: [PATCH] Mainly changes to MS-SQL generation --- transforms/adl2documentation.xslt | 4 ++-- transforms/adl2mssql.xslt | 34 +++++++++++++++++++------------ 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/transforms/adl2documentation.xslt b/transforms/adl2documentation.xslt index 3cf6755..02a47f4 100755 --- a/transforms/adl2documentation.xslt +++ b/transforms/adl2documentation.xslt @@ -116,7 +116,7 @@ </a> </xsl:when> <xsl:when test="@type = 'link'"> - to entity of type <a> + (many to many) to entities of type <a> <xsl:attribute name="href"> <xsl:value-of select="concat( '#entity-', @entity)"/> </xsl:attribute> @@ -124,7 +124,7 @@ </a> </xsl:when> <xsl:when test="@type = 'list'"> - of entities of type <a> + (one to many) of entities of type <a> <xsl:attribute name="href"> <xsl:value-of select="concat( '#entity-', @entity)"/> </xsl:attribute> diff --git a/transforms/adl2mssql.xslt b/transforms/adl2mssql.xslt index 213d464..51aa237 100755 --- a/transforms/adl2mssql.xslt +++ b/transforms/adl2mssql.xslt @@ -12,7 +12,7 @@ Convert ADL to MS-SQL $Author: sb $ - $Revision: 1.5 $ + $Revision: 1.6 $ --> <xsl:output indent="no" encoding="UTF-8" method="text"/> @@ -103,7 +103,8 @@ -- <xsl:value-of select="$product-version"/> -- -- Database for application <xsl:value-of select="@name"/> version <xsl:value-of select="@version"/> - -- Generated for MS-SQL 2000+ using adl2mssql.xslt <xsl:value-of select="substring('$Revision: 1.5 $', 12)"/> + -- Generated for MS-SQL 2000+ using adl2mssql.xslt <xsl:value-of select="substring('$Revision: 1.6 $', 12)"/> + -- THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT IT. -- -- Code generator (c) 2007 Cygnet Solutions Ltd -- @@ -185,6 +186,10 @@ </xsl:template> <!-- generate referential integrity constraints --> + <!-- there's a sort-of problem with this - if we have properties at both + ends of a link (which we often do) we currently generate two identical + constraints. This doesn't seem to cause any major problems but must hurt + efficiency. It would be better if we fixed this. --> <xsl:template match="adl:entity" mode="refinteg"> <xsl:variable name="nearside" select="@name"/> <xsl:for-each select="descendant::adl:property[@type='entity']"> @@ -208,20 +213,23 @@ </xsl:choose> </xsl:for-each> <xsl:for-each select="descendant::adl:property[@type='list']"> - <xsl:variable name="farkey"> - <xsl:choose> - <xsl:when test="@farkey"> - <xsl:value-of select="@farkey"/> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="../@name"/> - </xsl:otherwise> - </xsl:choose> - </xsl:variable> + <xsl:variable name="ns2" select="@entity"/> + <xsl:variable name="linkfield"> + <xsl:call-template name="property-column-name"> + <xsl:with-param name="property" + select="//adl:entity[@name=$ns2]//adl:property[@entity=$nearside]"/> + </xsl:call-template> + </xsl:variable> + <xsl:if test="string-length( $linkfield) = 0"> + <xsl:message terminate="yes"> + ADL: ERROR: Failed to infer link field name whilst processing list property <xsl:value-of select="@name"/> of <xsl:value-of select="ancestor::adl:entity/@name"/> + Entity is '<xsl:value-of select="$ns2"/>', nearside is '<xsl:value-of select="$nearside"/>' + </xsl:message> + </xsl:if> <xsl:call-template name="foreignkey"> <xsl:with-param name="nearside" select="@entity"/> <xsl:with-param name="farside" select="../@name"/> - <xsl:with-param name="linkfield" select="$farkey"/> + <xsl:with-param name="linkfield" select="$linkfield"/> <xsl:with-param name="ondelete"> <xsl:choose> <xsl:when test="@cascade='all'">CASCADE</xsl:when>