程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#發現之旅第三講 使用C#開發基於XSLT的代碼生成器(2)(2)

C#發現之旅第三講 使用C#開發基於XSLT的代碼生成器(2)(2)

編輯:關於C語言

而模板_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>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved