用XSL把XML的数据转换成完美的多列表格形式

2005/8/2 8:43:12


阅读全文(10376) | 回复(4) | 编辑 | 精华

摘要:本文通过实际的例子来说明如何在XSL中实现对XML数据转换成完美的多列表格。 在利用XSL对XML进行转换时,有时候需要把XML转换成多列的Table元素,这个问题经常会困扰许多人,如果不生成Table的话,只需要对循环中的节点进行位置取模后判断,然后用<br/>换行即可。但有时候为了用户需要和界面的美观,需要生成多行多列的Table,常用的方法是采用following-sibling进行判断,比如下面的代码: mailto: 转换结果如下图所示: 500)this.width=500'> 但是,从上面的结果图可以看出,如果数据记录不是表格列数的整数倍的时候,最后一行的最后几列不会生成出来,即在HTML里缺少<td></td>标记。 要解决上面的不足,我们必须先计算要转换的记录的总数,然后计算出相差的记录数,再进行补齐。下面就对这一过程的解释。 在进行这个功能之前,首先了解一个如何在XSL中实现类似for(i=0;i<n;i++)的循环,下面就是实现这一个功能的例子: , 理解了上面的原理之后,下面就是我们最后的代码,程序已经做了注释: mailto: mailto: 共有条数据。 &nbsp; 由于http://www.w3.org/1999/XSL/Transform名称控件只有IE5.5+才支持,为了使我们的代码具有通用性,我们在服务器端进行转换,首先建立GoodLoop.aspx如下: GoodLoop 本文中所使用的XML数据样式为:GoodLoop.xml http://xml.sz.luohuedu.net 【孟宪会之精彩世界】 http://lucky.myrice.com/ 【孟宪会之精彩世界】 ............................... 转换结果如下: 500)this.width=500'> 出自: 【孟宪会之精彩世界】

Qr

Posted by Qr on 2005/8/2 8:43:12

回复:TO guan1200

2005/11/14 12:44:07


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

是这样的,按一般的用法,如果记录数不是列数的倍数的话,容易出现表格缺失。以上方法可以解决此问题,其实你的方法原理上也基本相同。

Qr

Posted by Qr on 2005/11/14 12:44:07

回复:用XSL把XML的数据转换成完美的多列表格形式

2005/10/30 10:33:26

忘了递归了 <xsl:template name="a"> <xsl:param name="number"/> <xsl:if test="items/item[position() > number *4 and position <last()]> <xsl:for-each select="items/item[position() > number *4 and position <last()]"> ----  处理  ----- </xsl:for-each> <xsl:call-template name="a"> <xsl:with-param name="number" select="$number + 1/> </xsl:call-template> </xsl:if> </xsl:template>

guan1200

Posted by guan1200 on 2005/10/30 10:33:26

回复:用XSL把XML的数据转换成完美的多列表格形式

2005/10/29 11:58:57

你好,我觉的您的处理太复杂了. 可以这样啊! <xsl:template name="a"> <xsl:param name="number"/> <xsl:if test="items/item[position() > number *4 and position <last()]> <xsl:for-each select="items/item[position() > number *4 and position <last()]"> ----  处理  ----- </xsl:for-each> </xsl:if> </xsl:template>  

guan1200

Posted by guan1200 on 2005/10/29 11:58:57

如果XML的数据不整齐怎么办

2005/9/13 21:38:57

您好!我看了您的文章,虽然不太懂,但还是觉得挺有意思。 我是学语言学的,最近导师要求把我标注的语料都转存为XML格式后放到ACCESS 数据库里便于查询。我一点都不会,快急死了。而且我的语料处理出来应该是树形的,也就是说有的行中内容多一些,有的少一些。用您的方法能处理吗?请指教。 我标注的文档格式基本是这样的:*****************rst  <header>    <relations>      <rel name="???" type="rst" />      <rel name="circumstance" type="rst" />       ……      <rel name="contrast" type="multinuc" />    </relations>  </header>  <body>    <segment id="1"><duan ID=0>人民网 >> 经济 >> 经济观察  2003年09月04日09:41</duan></segment>    <segment id="13"><duan ID=1>深圳商报:内需是中国经济高增长主要"依靠"</duan></segment>    <segment id="14" parent="29" relname="circumstance"><duan ID=2>  8月5日,国务院总理温家宝在会见美国花旗集团董事长鲁宾、候任首席执行官普林斯时,向世人作出庄严承诺——保持人民币汇率基本稳定,不仅有利于中国经济和金融持续稳定发展,而且有利于周边国家和地区的经济和金融稳定发展,从根本上说,也有利于世界经济和金融的稳定发展。</duan></segment>    <segment id="15" parent="2" relname="elaboration"><duan ID=3>  “中国通过低估人民币、刺激出口,带动经济增长。”</segment>    <segment id="2" parent="19" relname="span">这是国际社会一些人要求人民币升值的主要理由。</segment>    <segment id="4" parent="25" relname="concession">理论上讲,汇率贬值或本币低估,会刺激出口、抑制进口。</segment>    <segment id="5" parent="25" relname="span">但是在现实中,影响进出口的因素不仅仅限于汇率。</duan></segment>    <segment id="6" parent="23" relname="span"><duan ID=4>  请看事实:</segment>    <segment id="18" parent="22" relname="conjunction">1994年以来,人民币对主要贸易伙伴国的平均汇率升值较大,但同期我国外贸出口却保持较快增长;</segment>    <segment id="16" parent="22" relname="conjunction">2000年,我国出口增长28%,当时人民币有效汇率跟随美元几乎是最坚挺的;</segment>    <segment id="17" parent="22" relname="conjunction">去年以来人民币随美元下跌,对其他货币的平均汇率走低,但我国进口增速不断加快,今年上半年进口增速比出口增速高出10.5个百分点。</segment>    <segment id="7" parent="26" relname="span">这些充分说明,现阶段影响我国外贸进出口的主要因素是国内外需求和加入世贸组织等因素,而不是汇率。</duan></segment>    <segment id="3" parent="28" relname="span"><duan ID=5>  生产日趋国际化是去年我国对美国贸易顺差427亿美元的重要原因。</segment>    <segment id="9" parent="3" relname="interpretation">中国经济积极参与国际分工,同时越来越多的跨国公司以中国为基地不断开拓国际市场——这种生产国际化导致中国内地对美国的贸易顺差越大,对日本、韩国、台湾及东盟的逆差就越大,对美国的贸易顺差只是韩国、日本等国家和香港、台湾等地区对美国贸易顺差的转移。</duan></segment>    <segment id="8" parent="30" relname="span"><duan ID=6>  中国经济近年来高速增长主要靠的是内需这个引擎。</segment>    <segment id="11" parent="24" relname="conjunction">“九五”期间,出口和贸易顺差较大波动,但中国经济仍然持续快速增长;</segment>    <segment id="12" parent="24" relname="conjunction">今年上半年,我国外贸顺差同比下降66.5%,而经济增长仍高达8.2%。</duan></segment>    <segment id="10"><duan ID=7>来源:《深圳商报》  (责任编辑:李欣玉)</duan></segment><group id="19" type="span" parent="21" relname="antithesis" /><group id="21" type="span" parent="20" relname="span" /><group id="22" type="multinuc" parent="6" relname="elaboration" /><group id="23" type="span" parent="7" relname="justify" /><group id="24" type="multinuc" parent="8" relname="evidence" /><group id="25" type="span" parent="21" relname="span" /><group id="26" type="span" parent="27" relname="joint" /><group id="27" type="multinuc" parent="5" relname="justify" /><group id="28" type="span" parent="27" relname="joint" /><group id="20" type="span" parent="29" relname="contrast" /><group id="29" type="multinuc" /><group id="30" type="span" parent="29" relname="contrast" />  </body></rst>*********************现在我还不知道该怎样把这种文件都转成XML格式,我不会写程序,EXCEL还是会用一点,ACCESS也才开始自己看书。 请多多指教! 谢谢了!

zhongmuyan(游客)

Posted by zhongmuyan(游客) on 2005/9/13 21:38:57

» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.063 second(s), page refreshed 144761039 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号