以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  帮忙看一下一个分页问题[求助]  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=9838)


--  作者:alextoby
--  发布时间:9/8/2004 11:21:00 AM

--  帮忙看一下一个分页问题[求助]
这是个网上找的分页例子,在没有加Restaurants(红色显示)结点时,此例子是能够实现的,加了以后就不能分页了,大家帮忙看看要怎么改。.我改了一天还是没改对

test.xml 文件

<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet href="test.xsl" type="text/xsl" ?>
<DataSet>
<Restaurants>
  <Restaurant>
  <nID>402</nID>
  <szName>春夏秋冬</szName>
  <szAddress>卢湾区复兴中路593号民防大厦3楼(瑞金路口)</szAddress>
  </Restaurant>
<Restaurant>
  <nID>403</nID>
  <szName>上海大剧院望星空宴会厅</szName>
  <szAddress>黄浦区黄陂北路190号(大剧院8楼)</szAddress>
  </Restaurant>
<Restaurant>
  <nID>404</nID>
  <szName>海上明月(China moon)</szName>
  <szAddress>静安区南京西路1168号中信泰富广场3楼</szAddress>
  </Restaurant>
<Restaurant>
  <nID>405</nID>
  <szName>一代音乐餐厅</szName>
  <szAddress>卢湾区淮海中路923号2F3F(近茂名南路)</szAddress>
  </Restaurant>
<Restaurant>
  <nID>406</nID>
  <szName>上海马克西姆西餐厅 Maxime's de Paris</szName>
  <szAddress>黄浦区黄陂北路190号B1出口</szAddress>
  </Restaurant>
<Restaurants>
</DataSet>

test.xsl文件

<?xml version="1.0" encoding="gb2312" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head>
<style>
body,BlueIdea,team,blue_ID,blue_name,blue_text,blue_time,blue_class{ font: 12px "宋体", "Arial", "Times New Roman"; }
table { font-size: 12px; border: 0px double; border-color: #99CC99 #99CC99 #CCCCCC #CCCCCC; cellpadding:3;cellspacing:3; bgcolor:#eeeeee; text-decoration: blink}
span { font-size: 12px; color: red; }
.keybutton { cursor:hand; font-size: 12px; color: #003300; background: #ffffff; border: 0px solid;}
</style>
<script>
<xsl:comment>
<![CDATA[
var OnePageNum=2;
var PageNum=1;
var XMLPageNum=1;
function pages(Num)
{
stylesheet=document.XSLDocument;
source=document.XMLDocument;
nodes=source.documentElement.childNodes;
len=nodes.length;
for(i=1;i<=(len/OnePageNum);i++);
XMLPageNum=i;
var firstNum=0;
var lastNume=0;

if (Num=="first") {PageNum=1;}
if (Num=="previous") {if (PageNum>1) PageNum -=1;}
if (Num=="next") {if (PageNum<XMLPageNum) PageNum +=1;}
if (Num=="last") {PageNum =XMLPageNum;}

sortField=document.XSLDocument.selectSingleNode("//@expr");
firstNum=OnePageNum*(PageNum-1)+1;
lastNum=OnePageNum*(PageNum-1)+OnePageNum;
text="childnumber(this)>="+firstNum+" & childnumber(this)<="+lastNum;
sortField.value=text;
Layer1.innerHTML=source.documentElement.transformNode(stylesheet);
}
]]>
</xsl:comment>
</script>
</head>

<body>
<table align="center" width="500" >
<tr>
<td>
<button id="cmdfirstPage" class="keybutton" onclick="pages('first');" >首页</button>
<button id="cmdpreviousPage" class="keybutton" onclick="pages('previous');" >上一页</button>
<button id="cmdnextPage" class="keybutton" onclick="pages('next');">下一页</button>
<button id="cmdlastPage" class="keybutton" onclick="pages('last');">尾页</button>
</td>
</tr>
</table>
<div id="Layer1" name="Layer1"> <xsl:apply-templates select="DataSet"/></div>
</body>

</html>
</xsl:template>
<xsl:template match="DataSet">
<table width="500" border="1" align="center" cellpadding="1" cellspacing="1" bordercolordark="#ffffff" bordercolorlight="#ADAAAD">
<tr bgcolor="#FFCC99" align="center">
<td>编号</td>
<td>餐厅</td>
<td>地址</td>
</tr>
<xsl:apply-templates select="Restaurant" />
</table>
</xsl:template>
<xsl:template match="Restaurant" >
<xsl:if expr="childnumber(this)&gt;=1&amp;childnumber(this)&lt;=2 ">
<tr align="center">
<xsl:apply-templates select="nID" />
<xsl:apply-templates select="szName" />
<xsl:apply-templates select="szAddress" />
</tr>
</xsl:if>
</xsl:template>
<xsl:template match="nID">
<td bgcolor="#eeeeee">
<xsl:value-of />
</td>
</xsl:template>
<xsl:template match="szName">
<td>
<xsl:value-of />
</td>
</xsl:template>
<xsl:template match="szAddress">
<td>
<xsl:value-of />
</td>
</xsl:template>
</xsl:stylesheet>


--  作者:doubleG
--  发布时间:9/8/2004 4:22:00 PM

--  
source.documentElement.childNodes;——>source.documentElement.childNodes[0].childNodes;
<xsl:apply-templates select="Restaurant"/>——><xsl:apply-templates select="Restaurants/Restaurant"/>
因为根节点下只有一个节点了,所以它的节点总个数总是1,要改掉啊。呵呵

--  作者:alextoby
--  发布时间:9/9/2004 2:22:00 PM

--  
Thank!
问题解决了,nodes=source.documentElement.childNodes; 也要改一下nodes=source.documentElement.item(0).childNodes就可以了

对了,不知道你对asp掉用web service有没有研究?


--  作者:菜籽
--  发布时间:9/9/2004 3:27:00 PM

--  
无法显示 XML 页。
使用 XSL 样式表无法查看 XML 输入。请更正错误然后单击 刷新按钮,或以后重试。


--------------------------------------------------------------------------------

结束标记 'DataSet' 与开始标记 'Restaurants' 不匹配。处理资源 'file:///E:/study/xml/MYxml/test/doubleG解决/2/xml.xml' 时出错。第 31 行,位置: 3

</DataSet>
--^

发一个好用的版本上来啊,看看啊


--  作者:alextoby
--  发布时间:9/9/2004 4:04:00 PM

--  
以下是引用菜籽在2004-9-9 15:27:18的发言:
无法显示 XML 页。
使用 XSL 样式表无法查看 XML 输入。请更正错误然后单击 刷新按钮,或以后重试。


--------------------------------------------------------------------------------

结束标记 'DataSet' 与开始标记 'Restaurants' 不匹配。处理资源 'file:///E:/study/xml/MYxml/test/doubleG解决/2/xml.xml' 时出错。第 31 行,位置: 3

</DataSet>
--^
  
发一个好用的版本上来啊,看看啊



我的xml文件有问题啊,看到没,两个红色的结点,第二个少了/,然后根据doubleG和我说的方法就可以用了啊
--  作者:alextoby
--  发布时间:9/9/2004 4:08:00 PM

--  
又有问题来了,如果直接用浏览器预览test.xml,已经可以正常分页,然后做一下修改,把test.xml的第二行<?xml-stylesheet href="test.xsl" type="text/xsl" ?>去掉后,在ASP里用transformNode方法对test.xml用test.xsl转化时就会出错,为什么?
--  作者:jeremychin
--  发布时间:10/19/2004 10:40:00 AM

--  
报错:缺少强制属性“version”。
--  作者:jeremychin
--  发布时间:10/19/2004 10:56:00 AM

--  
.net不支持http://www.w3.org/TR/WD-xsl
--  作者:mailtolily
--  发布时间:11/8/2004 4:25:00 PM

--  
我这边测试又出现问题了,问题出现在:<xsl:if expr="childnumber(this)>=1&childnumber(this)<=2 ">
提示:
A semi colon character was expected. Error processing resource 'file:///C:/Documents and Settings/lili.ARTM/Desktop/XML/分页/...

<xsl:if expr="childnumber(this)>=1&childnumber(this)<=2 ">
----------------------------------------------^
这个里面的其他错误我都按照那些建议修改好了;但是还是
提示冒号缺少了,我觉得这句话是正确的呀,没有发现什么问题呢。


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
82.031ms