国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > XML > 正文

xsl傳遞參數在客戶端單個xml分框架顯示

2024-09-05 20:55:54
字體:
來源:轉載
供稿:網友

  通過向xsl傳遞參數+數據島方式,實現在客戶端單個xml的分框架顯示。

  對于數據較少的xml數據,可以使用一次下載完所有數據,將顯示全部放到客戶端完成,下面例子中,將一個xml文件顯示為左右兩個框架,左邊顯示條目,右邊顯示內容。可以在本地,不用通過服務器解釋.

  關鍵:使用msxml的dom對象向xsl模板傳遞參數
  環境: ie6 + msxml3.0

  examples:

  /*** book.xml ***/

<?xml version="1.0" encoding="gb2312" ?>
<?xml-stylesheet type="text/xsl" href="book.xsl"?>
<moonpiazza>
 <book id="1">
      <書名>基于xml 的 asp.net開發</書名>
   <定價>42</定價>
      <作者>dan wahlin/王寶良</作者>
 </book>
 <book id="2">
      <書名>xml應用的uml建模技術</書名>
      <定價>32</定價>
      <作者>david carlson/周靖 侯奕萌 沈金河等</作者>
 </book>
 <book id="3">
      <書名>極限編程研究</書名>
      <定價>70</定價>
      <作者>giancarrio succi/michele marchesi/張輝(譯)</作者>
 </book>
 <book id="4">
      <書名>design patterns</書名>
      <定價>38</定價>
      <作者>erich gamma/richard helm/ralph johnson/john vlissides</作者>
 </book>
</moonpiazza>

  /*** book.xsl ***/

<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform">
<xsl:template match="/">
<html>
<head>
<script language="javascript">
<xsl:comment>
<![cdata[
var m_oxsl ; 
var m_sframeattr_left, m_sframeattr_main ;
var m_sxmlfile, m_sxsltfile ;
m_sxmlfile = "" ;
m_sxsltfile = "book_view.xsl"; // 指定xsl文件
function window.onload()
{
 var oxsldoc ; 
 m_sframename_left = "left_frame"; 
 m_sframename_main = "main_frame";

 m_oxsl = new activexobject("msxml2.xsltemplate.3.0");
 oxsldoc = new activexobject("msxml2.freethreadeddomdocument.3.0");
 oxsldoc.async = false;
 oxsldoc.load(m_sxsltfile);
 m_oxsl.stylesheet= oxsldoc;
 initpage() ;
}
function initpage()
{
 content.cols = "270,*" ;
 viewframe(m_sframename_left);
 var  shtmlstr = "請選擇書目...";
 eval(m_sframename_main + ".document").open ("text/html","gb2312");
 eval(m_sframename_main + ".document").write(shtmlstr) ;  
}
function viewframe(p_sframename)
{
 var oxslproc;
 var shtmlstr;
 oxslproc  = m_oxsl.createprocessor();
 oxslproc.input = xmldata;
 // 指定參數,顯示左(或右)框架
 oxslproc.addparameter("framename_left", m_sframename_left);
 oxslproc.addparameter("framename_main", m_sframename_main);
 oxslproc.addparameter("framename", p_sframename);
 oxslproc.transform();
 shtmlstr = oxslproc.output ; // 獲得轉化后的字符串
 eval(p_sframename + ".document").open ("text/html","gb2312");
 eval(p_sframename + ".document").write(shtmlstr) ;
}
function viewdata(p_sdataid)
{
 var oxslproc;
 var shtmlstr;
 oxslproc  = m_oxsl.createprocessor();
 oxslproc.input = xmldata;
 
 // 指定參數,顯示id為 p_sdataid 的數據
 oxslproc.addparameter("framename_left", m_sframename_left);
 oxslproc.addparameter("framename_main", m_sframename_main);
 oxslproc.addparameter("framename", m_sframename_main);
 oxslproc.addparameter("dataid", p_sdataid);
 oxslproc.transform();
 shtmlstr = oxslproc.output ; // 獲得轉化后的字符串
 eval(m_sframename_main + ".document").open ("text/html","gb2312");
 eval(m_sframename_main + ".document").write(shtmlstr) ;
}
]]> 
</xsl:comment>

</script>
</head>
<xml id="xmldata">
 <xsl:copy-of select="*"  />
</xml>
<frameset cols="0,*" name="content">
 <frame name="left_frame" src="about:blank" />
 <frame name="main_frame"  src="about:blank" />
</frameset>
</html>
</xsl:template>
</xsl:stylesheet> 

/*** book_view.xsl ***/
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform">
<xsl:param name="framename_left" select="'left_frame_null'" />
<xsl:param name="framename_main" select="'main_frame_null'" />
<xsl:param name="framename" select="''" />
<xsl:param name="dataid" select="''" />
<xsl:template match="/">
<html>
<head>
<style type="text/css">
body
{
 font-size:9pt;
}
td
{
 font-size:9pt;
}
a{
 font-size:9pt;
}
</style>
</head>
 <xsl:choose>
  <xsl:when test="$framename = $framename_left">
   <xsl:call-template name="left_frame" /> 
  </xsl:when>
  <xsl:when test="$framename = $framename_main">
   <xsl:call-template name="main_frame" /> 
  </xsl:when>
 </xsl:choose>
</html>
</xsl:template>
<xsl:template name="left_frame">
 <xsl:for-each select="moonpiazza/book">
  <xsl:element name="a">
   <xsl:attribute name="href">
    javascript:parent.viewdata(<xsl:value-of select="@id" />);
   </xsl:attribute>
   <xsl:value-of select="書名" />
  </xsl:element>
  
  <br/>
 </xsl:for-each>
</xsl:template>
<xsl:template name="main_frame">
<xsl:choose>
 <xsl:when test="$dataid != ''">
  <table border="1" width="500">
   <xsl:for-each select="moonpiazza/book[@id = $dataid]/*">
    <tr>
     <td width="70"><xsl:value-of select="name()" /></td>
     <td><xsl:value-of select="." /></td>
    </tr>
   </xsl:for-each>
  </table>  
 </xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 咸宁市| 石台县| 朝阳区| 保靖县| 衡南县| 台江县| 孝义市| 金塔县| 曲麻莱县| 武平县| 什邡市| 丰县| 定襄县| 沁水县| 乐山市| 禹州市| 伊宁县| 青海省| 锦州市| 沁阳市| 盱眙县| 成安县| 黔西县| 南华县| 鸡东县| 丘北县| 安仁县| 永德县| 宝坻区| 安庆市| 正宁县| 曲阳县| 兴义市| 滦南县| 阳信县| 平阳县| 塔城市| 黔西| 太仆寺旗| 四平市| 慈溪市|