以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DOM/SAX/XPath 』  (http://bbs.xml.org.cn/list.asp?boardid=11)
----  请大家看看这个DOM的问题,怎么回事呢?急!  (http://bbs.xml.org.cn/dispbbs.asp?boardid=11&rootid=&id=43680)


--  作者:yahuu
--  发布时间:3/6/2007 4:53:00 PM

--  请大家看看这个DOM的问题,怎么回事呢?急!
我用ASP文件通过查询数据库,动态生成了一个XML文件,然后想用XSLT做一个分页的且固定大小的表格,就是说让这个表格每页固定显示14条数据,末页如果数据不足14条,就显示空白行补足14条。
但是现在我也不知道为什么,我在IE浏览器中查看该页的时候,总是显示如下错误:

无法显示 XML 页。
使用 XSL 样式表无法查看 XML 输入。请更正错误然后单击 刷新按钮,或以后重试。
--------------------------------------------------------------------------------
Microsoft JScript 运行时错误 'document' 未定义行 = 4, 列 = 4 (行是指距脚本块起始的偏移量)。属性或方法调用返回错误。

我的XSL文件代码如下:
<?xml version="1.0"  encoding="gb2312" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:huanglei" exclude-result-prefixes="msxsl user">
   <msxsl:script  implements-prefix="user"><![CDATA[
    var page,sortField,valField,count;
    page=1;
    sortField = document.XSLDocument.SelectSingleNode("//xsl:for-each/@select");
    valField= document.XSLDocument.SelectSingleNode("//xsl:variable/@select");
    count= document.XMLDocument.selectNodes("//辅助材料").length;
     function divide(a,b)
       {
         var e,f;
         if(a%b==0)
        {    
         e=parseInt(a/b);
         return e;
        }
         else
        {
         e=parseInt(a/b);
         f=e+1;
         return f;
         }
       }
    var  pageall=divide(count,14);
    s.innerHTML=pageall;
    t.innerHTML=page;
    
      function order(field)
      {
        field1=field+14;
        sortField.value="/型号/产品/*/辅助材料[(position()&ge;"+field+")$and$(position()&lt;"+field1+")]";
        valField.value="count(/型号/产品/*/辅助材料[(position()&ge;"+field+")$and$(position()&lt;"+field1+")])";
        str=source.documentElement.transformNode(stylesheet);
        listing.innerHTML=str;
        s.innerHTML=pageall;
        t.innerHTML=page;
       }
       
       function ss()
       {
         page++;
         if(page>pageall)
         {
         page=pageall;
         alert('这已经是最后一页了!');
         }
        order((page-1)*14);
       }
       
       function tt()
       {
        page--;
        if(page==0)
        {
         page=1;
         alert('这已经是第一页了!');
         }
         order((page-1)*14);
       }
       ]]>
   </msxsl:script>
<xsl:template match="/">
  <html>
   <head>
     <title>装配工艺卡片</title>
   </head>
   <body background="bg.jpg">
   
   <table border="0" width="1239">
     <tr>
       <td align="center" width="309"><a href="zong.asp">返回首页</a></td>
       <td align="center" width="310"><a href="gygc.asp">装配工艺规程</a></td>
       <td align="center" width="310"><a href="gzgj.asp">总装仪器设备配套明细表</a></td>
       <td align="center" width="310"><a href="zsj.asp">总装直属件配套明细表</a></td>
  </tr>
    </table>
   <br></br>
   
   <div align="center" id="listing">
   <xsl:apply-templates select="型号"/>
   </div>
   
   <div align="center">
    <table>
      <tr align="center">
        <td>当前:
          <span id="t"></span>/
          <span id="s"></span>
        </td>
     <td width="100">
      <input type="button" onclick="user:ss()" value="下一页" > </input>
     </td>
     <td width="100">
       <input type="button" onclick="user:tt()" value="上一页" > </input>
     </td>
      </tr>
    </table>
   </div>
  </body>
  </html>
</xsl:template>

<xsl:template match="型号">
  <table bgcolor="#F0FFF0">
    <tr>
   <td align="center" colspan="10"><b><font size="5">五院总装与环境工程部辅助材料定额明细表<br></br></font></b></td>
    </tr>
    <tr>
   <td width="125" align="right">型号名称:</td>
   <td width="125"><xsl:value-of select="/型号/@型号名称"/></td>
   <td width="125" align="right">型号代号:</td>
   <td width="125"><xsl:value-of select="/型号/@型号代号"/></td>
   <td width="125" align="right">阶段标记:</td>
   <td width="114"><xsl:value-of select="/型号/@阶段标记"/></td>
   <td width="125" align="right">产品名称:</td>
   <td width="125"><xsl:value-of select="/型号/产品/@产品名称"/></td>
   <td width="125" align="right">产品代号:</td>
   <td width="125"><xsl:value-of select="/型号/产品/@产品代号"/></td>
    </tr>
   </table>
   <table border="1" bgcolor="#F0FFF0">
    <tr>
   <td width="50" rowspan="2" align="center">序号</td>
   <td width="150" rowspan="2" align="center">名称</td>
   <td width="150" rowspan="2" align="center">牌号状态</td>
   <td width="150" rowspan="2" align="center">技术条件</td>
   <td width="150" rowspan="2" align="center">规格</td>
   <td width="50" rowspan="2" align="center">数量</td>
   <td width="70" rowspan="2" align="center">单位</td>
   <td colspan="3" align="center" height="30">对料记录</td>
   <td width="139" rowspan="2" align="center">备注</td>
    </tr>
    <tr>
   <td width="80" height="30" align="center">有/无</td>
   <td width="130" height="30" align="center">合格证</td>
   <td width="130" height="30" align="center">代料处理单号</td>
    </tr>
<xsl:for-each select="/型号/产品/*/辅助材料[position()&lt;14]">
   <tr>
  <td height="30" align="center"><xsl:value-of select="@辅助材料序号"/></td>
  <td height="30" align="center"><xsl:value-of select="@辅助材料名称"/></td>
  <td height="30" align="center"><xsl:value-of select="@辅助材料牌号"/></td>
  <td height="30" align="center"><xsl:value-of select="@辅助材料技术条件"/></td>
  <td height="30" align="center"><xsl:value-of select="@辅助材料规格"/></td>
  <td height="30" align="center"><xsl:value-of select="@辅助材料数量"/></td>
  <td height="30" align="center"><xsl:value-of select="@辅助材料单位"/></td>
     <td height="30" align="center"><xsl:value-of select="辅助材料对料记录/@辅助材料对料记录标记"/></td>
     <td height="30" align="center"><xsl:value-of select="辅助材料对料记录/@辅助材料对料记录合格证"/></td>
     <td height="30" align="center"><xsl:value-of select="辅助材料对料记录/@辅助材料对料记录代料处理单号"/></td>
     <td height="30" align="center"><xsl:value-of select="@辅助材料备注"/></td>
   </tr>
    </xsl:for-each>
    
    <xsl:variable name="aa" select="count(/型号/产品/*/辅助材料[position()&lt;14])"/>
    <xsl:variable name="bb" select="14-$aa"/>
    <div id="dd" >
    <xsl:value-of select="$bb+1" />
    </div>
    <xsl:text>fgff</xsl:text>
    
    <xsl:call-template name="foreach">    
      <xsl:with-param name="i">1</xsl:with-param>
      <xsl:with-param name="val">
      <html>
      <table>
      <tr>
  <td height="30" align="center">我</td>
  <td height="30" align="center">爱</td>
  <td height="30" align="center">我</td>
  <td height="30" align="center">的</td>
  <td height="30" align="center">老</td>
  <td height="30" align="center">婆</td>
  <td height="30" align="center">孙</td>
         <td height="30" align="center">天</td>
         <td height="30" align="center">博</td>
         <td height="30" align="center">同</td>
         <td height="30" align="center">志</td>
        </tr>
        </table>
        </html>
      </xsl:with-param>
      <xsl:with-param name="intend"><xsl:value-of select="$bb+1"/></xsl:with-param>
    </xsl:call-template>   
</table>
</xsl:template>

<xsl:template name="foreach">
    <xsl:param name="i">1</xsl:param>
    <xsl:param name="val"></xsl:param>
    <xsl:param name="intend">1</xsl:param>
    
    <xsl:if test="$i &lt; $intend">
    <xsl:value-of select="$val" />
    <xsl:call-template name="foreach">
    <xsl:with-param name="i"><xsl:value-of select="$i+1" /></xsl:with-param>
    <xsl:with-param name="val"><xsl:value-of select="$val" /></xsl:with-param>
    <xsl:with-param name="intend"><xsl:value-of select="$intend"/></xsl:with-param>
    </xsl:call-template>
    </xsl:if>
</xsl:template>

</xsl:stylesheet>

大家帮我看看是什么问题吧!谢谢啦!


--  作者:Qr
--  发布时间:3/20/2007 1:17:00 PM

--  
把XML贴出来才能确定原因。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.500ms