+ -
当前位置:首页 → 问答吧 → XSL将XML数据分左右两个表格显示

XSL将XML数据分左右两个表格显示

时间:2006-09-29

来源:互联网

将动态生成的XML分左右两个单元格显示
求教做法:五樓

<name>0001</name>
<name>0002</name>
....
<name>0100</name>
分兩列顯示用XSL方式實現

[[i] 本帖最后由 HITS 于 2006-10-12 08:35 编辑 [/i]]

作者: HITS   发布时间: 2006-09-29

過了一天啦,咋沒人理?

作者: HITS   发布时间: 2006-09-30

你的问题问得不清楚……人家想帮你也难哪.

作者: ※潇洒※   发布时间: 2006-10-08

一份XML數據
<name>0001</name>
<name>0002</name>
....
<name>0100</name>
分兩列顯示用XSL方式實現

作者: HITS   发布时间: 2006-10-08

呵呵.. 研究了一下,总算是实现了...

xml :
<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="style.xsl"?> <root> <name>0001</name> <name>0002</name> <name>0003</name> <name>0004</name> </root>
   提示:您可以先修改部分代码再运行

xsl:
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <title> sample xsl by xiaosa </title> </head> <body> <table border="1"> <xsl:apply-templates select="//name[position() mod 2 = 1]" /> </table> </body> </html> </xsl:template> <xsl:template match="name"> <tr> <td><xsl:value-of select="."/></td> <td><xsl:value-of select="following-sibling::name"/></td> </tr> </xsl:template></xsl:stylesheet>
   提示:您可以先修改部分代码再运行

作者: ※潇洒※   发布时间: 2006-10-11

謝謝瀟灑

作者: HITS   发布时间: 2006-10-12

呵呵, 不客气……   今天改进了一下,如果多列时遇到没数据,表格会显示不全,
  弄了好久,总算解决了……
xml:
<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="style.xsl"?> <root> <name>0001</name> <name>0002</name> <name>0003</name> <name>0004</name> <name>0005</name> <name>0006</name> <name>0007</name> </root>
   提示:您可以先修改部分代码再运行

xsl:
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:variable name="total" select="count(root/name)"/> <xsl:variable name="cols" select="3"/> <xsl:template match="/"> <html> <head> <title> sample xsl by xiaosa </title> <link href="style.css" rel="stylesheet" type="text/css"/> </head> <body> total record: <span class='b'><xsl:value-of select="$total"/></span> <table border="1"> <xsl:apply-templates select="//name[position() mod $cols = 1]" /> </table> </body> </html> </xsl:template> <xsl:template match="name"> <tr> <td><xsl:value-of select="."/></td> <td><xsl:if test="count(following-sibling::name[1])=0"><xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text></xsl:if><xsl:value-of select="following-sibling::name[1]"/></td> <td><xsl:if test="count(following-sibling::name[2])=0"><xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text></xsl:if><xsl:value-of select="following-sibling::name[2]"/></td> </tr> </xsl:template> </xsl:stylesheet>
   提示:您可以先修改部分代码再运行

作者: ※潇洒※   发布时间: 2006-10-12

学习学习!!~

作者: sHARP   发布时间: 2006-10-19

作者: straw   发布时间: 2006-10-31

看了※潇洒※ 发表于 2006-10-12 19:01  的代码后,
<xsl:variable name="cols" select="3"/>
<xsl:apply-templates select="//name[position() mod $cols = 1]" />
由于初学,这块的关联关系没有看懂,请知道的人赐教一二。

作者: vegeta610   发布时间: 2007-03-21