一个有关xsl的显示问题,请指教

joards 2002-01-21 03:07:21
xml代码
<joke>
<item>
<hehe>1</hehe>
<hehe>2</hehe>
</item>
<item>
<hehe>1</hehe>
<hehe>2</hehe>
<hehe>3</hehe>
</item>
<item>
……
</item>
……
</joke>

xsl显示要求
希望可以显示出一个表格,每一行是对应一个<item>。每一行有五列,每一列对应一个<hehe>,没有<hehe>内容的,该格显示空白。已知每个<item>所含的<hehe> 不等,怎么写xsl??急切的等候赐教!!!
...全文
64 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2002-01-22
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<table border="1">
<xsl:for-each select="joke/item">
<xsl:eval no-entities="true">test(this)</xsl:eval>
<xsl:apply-templates select="."/>
</xsl:for-each>
</table>
</xsl:template>
<xsl:template match="joke/item">
<tr>
<xsl:for-each select="hehe">
<xsl:apply-templates select="."/>
</xsl:for-each>
<xsl:eval no-entities="true"><![CDATA[hehe()]]></xsl:eval>
</tr>
</xsl:template>
<xsl:template match="hehe">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template>
<xsl:script language="javascript">
<![CDATA[
var iis
function test(nod)
{
iis = nod.childNodes.length
}

function hehe()
{
var str=""
for ( var i=0;i<5 - iis;i++){
str += "<td> </td>"
}
return str
}
]]>
</xsl:script>
</xsl:stylesheet>
孟子E章 2002-01-22
  • 打赏
  • 举报
回复
名称空间多也没有问题的,只要按照规则做是没问题的。
xsl支持javascript,vbscript等
xsl:variable是xmlns:xsl="http://www.w3.org/1999/XSL/Transform"里的,不是xmlns:xsl="http://www.w3.org/TR/WD-xsl"里的,版本不同!
joards 2002-01-22
  • 打赏
  • 举报
回复
net_lover(孟子E章),又有新问题了。用了你的命名空间以后,我用 xsl:variable(名称空间是 http://www.w3.org/1999/XSL/Transform)就不行了,分我也给你老了,拜托一并帮忙解决问题好了。谢谢,谢谢,谢谢…………………………
另,名称空间使用起来,好象禁忌颇多,有没有经验之谈。望指点,或是告知何处有资料
joards 2002-01-22
  • 打赏
  • 举报
回复
net_lover(孟子E章),多问一点,你是用xml和什么搭配开发的。是开发什么方面的东西。
joards 2002-01-22
  • 打赏
  • 举报
回复
oliff(比埃尔霍夫) ,我是问 ,要用我设定的表格数,不是由最多的<hehe>来决定。
net_lover(孟子E章),不借助javascript,没有办法吗,就靠xsl本身,不行吗??

oliff 2002-01-21
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="joke">
<table border="1">
<xsl:apply-templates />
</table>
</xsl:template>
<xsl:template match="item">
<tr>
<xsl:apply-templates />
</tr>
</xsl:template>
<xsl:template match="hehe">
<td>
<xsl:apply-templates />
</td>
</xsl:template>
</xsl:stylesheet>
table的列数会由item中最多的hehe个数决定。
joards 2002-01-21
  • 打赏
  • 举报
回复
实际,就是问有没有办法,设定一个循环的次数,而不是用for-each 的select(结点),由结点数来决定循环的次数。

8,906

社区成员

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

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