而模板_cshaprhashtable.xslt的代碼為
<xsl:stylesheet XMLns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!--
根據表結構XML文檔創建影射數 據庫字段的 C# 代碼,內部使用 Hashtable 來存儲字段數據
編制 袁永福 2008- 1-17
-->
<xsl:template match="/*">
<xsl:if test="name(.) != 'Table' ">
<font color="red">本模板只能用於單表</font>
<br />
</xsl:if>
<textarea wrap="off" readonly="1" style="
border:1 solid black;
overflow=visible;
background-color:#dddddd">
<xsl:variable name="classname">
<xsl:value-of select="concat('DB2_' , Name )" />
</xsl:variable>
//*****************************************************************************
// 文件名 <xsl:value-of select="Name" />.cs
//*****************************************************************************
/// <summary>
/// 數據庫表 <xsl:value-of select="Name" />
<xsl:if test="Remark! =''">
<xsl:value-of select="concat(' [',Remark,']')" />
</xsl:if> 操作對象
/// </summary>
/// <remark>
/// 該表有<xsl:value-of select="count(Fields/FIEld) " />個字段
/// 編制: 代碼生成器
/// 時間:
///</remark>
[System.Serializable()]
public class <xsl:value-of select="$classname" />
{
///<summary>返回數據表名稱 <xsl:value-of select="Name" /></summary>
public static string TableName
{
get{ return "<xsl:value-of select="Name" />" ; }
}
///<summary>返回所有字段的名稱</summary>
<xsl:text>
public static string[]FIEldNames
{
get
{
return new string[]{ </xsl:text>
<xsl:for-each select="Fields/FIEld">
<xsl:if test="position()>1">
<xsl:text>
,</xsl:text>
</xsl:if>
<xsl:text>"</xsl:text>
<xsl:value-of select="Name" />
<xsl:text>"</xsl:text>
</xsl:for-each>
<xsl:text>
};
}
}
#region 定義數據庫字段變量及屬性 //////////////////////////////////////////
private System.Collections.Hashtable myValues = new System.Collections.Hashtable();
</xsl:text>
///<summary>包含所有字段值的列表 </summary>
<xsl:text>
public System.Collections.Hashtable Values
{
get{ return myValues ;}
}
</xsl:text>
<xsl:for-each select="Fields/FIEld"><!-- 開始循環遍歷所有的字段定義信息 -- >
<xsl:variable name="remark">
<xsl:if test="string-length( Remark ) > 0 ">
<xsl:value-of select="concat( '(' , Remark , ')') " />
</xsl:if>
</xsl:variable>
///<summary>字段值 <xsl:value-of select="Name" />
<xsl:value-of select="$remark" />
<xsl:if test="PrimaryKey='true'">[關鍵字段]</xsl:if>
</summary>
public <xsl:value-of select="concat( ValueTypeName , ' ' , Name )" />
{
get{ return <xsl:choose>
<xsl:when test="ValueTypeName='System.Byte[]'">
<xsl:text>( </xsl:text>
<xsl:value-of select="ValueTypeName" />
<xsl:text> ) myValues["</xsl:text>
<xsl:value-of select="Name" />
<xsl:text>"]</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>Convert.To</xsl:text>
<xsl:value-of select="substring-after( ValueTypeName , '.' )" />
<xsl:text>( myValues["</xsl:text>
<xsl:value-of select="Name" />
<xsl:text>"] )</xsl:text>
</xsl:otherwise>
</xsl:choose> ;}
set{ myValues["<xsl:value-of select="Name" />"] = value;}
}
</xsl:for-each>
#endregion
}// 數 據庫操作類 <xsl:value-of select="$classname" /> 定義結束
< /textarea>
</xsl:template>
< /xsl:stylesheet>