xslt为什么会有这两种结果

yoken 2003-11-24 02:02:06
<?xml version="1.0" encoding="GBK"?>
<table trClick="valid">
<tr>
<td width="80">a</td>
<td width="120">北京市公安局</td>
<td width="60">SG</td>
<td width="80"/>
<td width="80"/>
<td width="80"> </td>
</tr>
<tr>
<td width="80">c</td>
<td width="120">北京市公安局</td>
<td width="60">DS</td>
<td width="80"/>
<td width="80"/>
<td width="80"> </td>
</tr>
<tr>
<td width="80">b</td>
<td width="120">北京市公安局</td>
<td width="60">超级管理员</td>
<td width="80">2003-09-13</td>
<td width="80">2003-09-12</td>
<td width="80"> </td>
</tr>
</table>







<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="GBK"/>
<xsl:template match="/">
<xsl:apply-templates select="table"/>
</xsl:template>
<xsl:template match="table">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:for-each select="tr">
<xsl:sort select="td[not(@style) or @style != 'display:none'][2]" order="descending"/>
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>


用上面的xsl转换xml
为什么在xmlspy里结果是不排序,而在ie里却是排序,如何使其在ie里也不排序(因为“北京市公安局”这几个字都是相同的)
...全文
35 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssm1226 2003-11-27
  • 打赏
  • 举报
回复
根据你的"绝大部分情况下table列中值是不同的"

所以就不用考虑判断了,直接排序即可

yoken 2003-11-26
  • 打赏
  • 举报
回复
如果要通过程序来实现table列中的值不同时排序,相同时不排,太困难了
  • 打赏
  • 举报
回复
不是吧,你不想排序,何以又要加上sort??
yoken 2003-11-26
  • 打赏
  • 举报
回复
谢谢ssm1226(雨中人)
但不知道这是为什么
ssm1226 2003-11-26
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding='gb2312'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="gb2312"/>
<xsl:template match="/">
<xsl:apply-templates select="table"/>
</xsl:template>
<xsl:template match="table">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:for-each select="tr">
<xsl:sort select="td[not(@style) or @style != 'display:none'][2]" order="descending" />
<xsl:sort select="position()" data-type="number" order="ascending"/>
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
yoken 2003-11-26
  • 打赏
  • 举报
回复
如果可以通过程序判断table列中值是否相同,就不用倒再倒了,直接取消接下来的排序transform,什么都不做就行了,可是判断table列中值是否相同有点麻烦,而且太占运算时间,因为绝大部分情况下table列中值是不同的
colee 2003-11-26
  • 打赏
  • 举报
回复

默认情况下,table列中的值相同时,若是order="descending",就自动倒过来排列
能不能换用order="ascending"呢?或者通过程序实现,table列中值相同时倒过来输出;
倒再倒就得你想要的了
yoken 2003-11-25
  • 打赏
  • 举报
回复
to colee(长夜多浪漫) :
xmlspy没问题,ie居然报错 :
属性 'lang' 的值可能不是 'GBK'。

ie太搞笑了吧
colee 2003-11-25
  • 打赏
  • 举报
回复
试试:
<xsl:sort select="td[not(@style) or @style != 'display:none'][2]" order="descending" lang="GBK"/>
yoken 2003-11-24
  • 打赏
  • 举报
回复
如果用在程序里,不好判断何时去掉sort,何时不去
yoken 2003-11-24
  • 打赏
  • 举报
回复
有没有不去掉的办法,在xmlspy里没问题阿,为什么ie就不行
adjoin 2003-11-24
  • 打赏
  • 举报
回复
mark
孟子E章 2003-11-24
  • 打赏
  • 举报
回复
<xsl:sort select="td[not(@style) or @style != 'display:none'][2]" order="descending"/> 去掉即可

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧