当前位置: 代码迷 >> XML/SOAP >> 请问一XSL有关问题,查找半天无头绪,望指教
  详细解决方案

请问一XSL有关问题,查找半天无头绪,望指教

热度:454   发布时间:2012-02-16 21:30:36.0
请教一XSL问题,查找半天无头绪,望指教。
问题有二:(1)如何传递特殊字符?(如<,>,<=)我是转换成汉字给传递到xsl里的
  (2) 下面出现的数据中,前面4列是固定的,到出现等级后是动态的,
  如何在xsl文件里面将等级这几列中加入input,其余列不需要加。
上代码:
连接数据库,查找数据,查找数据为:姓名 年龄 班次 比较 等级一 等级二 等级三。
  xxx 12 1 < 90 80 70  
  xxx 11 2 <= 90 80 70
  ......

DataTable dt 
其中,等级一,二,三不固定,也就是说,有可能有的班级只有等级一,等级二,无等级三。
  Response.ContentType = "text/xml";
  Response.Write("<?xml version=\"1.0\" encoding=\"GB2312\"?>\n");
  Response.Write("<?xml-stylesheet type=\"text/xsl\"?>\n");
  Response.Write("<NewDataSet>\n");
  for (int i = 0; i < dt.Rows.Count; i++)
  {
  Response.Write("<Table>\n");
   
  for (int j = 0; j < dt.Columns.Count; j++)
  {
  <!-- 问题(1)-->  
  switch (dt.Rows[i][j].ToString())
  {
  case "<":
  dt.Rows[i][j] = "小于";
  break;
  case "<=":
  dt.Rows[i][j] = "小于等于";
  break;
  case ">":
  dt.Rows[i][j] = "大于";
  break;
  case ">=":
  dt.Rows[i][j] = "大于等于";
  break;
  case "between":
  dt.Rows[i][j] = "介于";
  break;
  default:
  break;
  }
  lo_value = dt.Rows[i][j];
  ls_col_name = dt.Columns[j].ColumnName.ToUpper();
   
  if (lo_value == System.DBNull.Value)
  {
  Response.Write("<" + ls_col_name + "></" + ls_col_name + ">\n");
  }
  else
  {
  Response.Write("<" + ls_col_name + ">" + lo_value.ToString() + "</" + ls_col_name + ">\n");
  }  
  }
  Response.Write("</Table>\n");
  }
  Response.Write("</NewDataSet>");
  Response.End();
下面用到XSL:
 <table id="DataTable" width="100%" cellspacing="1" CellPadding="3" class="GridCss" border="1" style="BORDER-COLLAPSE:collapse">

<!--这段显示列名-->  
 <tr >
  <xsl:for-each select="Table[1]/*"> 
  <th align="center" style="WHITE-SPACE:nowrap" bordercolor="#ffffff">
  <xsl:value-of select="name()"/>
  </th>
  </xsl:for-each>
  </tr>
 </table>
  
 <!--这段用来显示记录符合条件的记录-->
  相关解决方案