如何用xsl显示如下的xml文件

tlovexyj 2001-12-13 03:02:19
<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/xsl" href="1.xsl"?>
<dbxml>
<fields>
<field>院系编号</field>
<field>院系名称</field>
<field>院系简称</field>
<field>院系简介</field>
<field>毕业英语过级标准</field>
</fields>

<datas>
<院系编号>000</院系编号><院系名称>素质课部</院系名称><院系简称>素质课部</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>001</院系编号><院系名称>理论课部</院系名称><院系简称>理论课部</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>002</院系编号><院系名称>公共外语</院系名称><院系简称>公共外语</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>003</院系编号><院系名称>公共体育</院系名称><院系简称>公共体育</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>101</院系编号><院系名称>政法学院</院系名称><院系简称>政法学院</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>102</院系编号><院系名称>经济学院</院系名称><院系简称>经济学院</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>103</院系编号><院系名称>社会学院</院系名称><院系简称>社会学院</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>104</院系编号><院系名称>教育科学学院</院系名称><院系简称>教育科学学院</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>105</院系编号><院系名称>文学院</院系名称><院系简称>文学院</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>106</院系编号><院系名称>外语学院</院系名称><院系简称>外语学院</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>108</院系编号><院系名称>历史文化学院</院系名称><院系简称>历史文化学院</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>201</院系编号><院系名称>信息技术系</院系名称><院系简称>信息技术系</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>202</院系编号><院系名称>数学系</院系名称><院系简称>数学系</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>203</院系编号><院系名称>物理系</院系名称><院系简称>物理系</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>204</院系编号><院系名称>化学系</院系名称><院系简称>化学系</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>205</院系编号><院系名称>生命科学系</院系名称><院系简称>生命科学系</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>206</院系编号><院系名称>旅游系</院系名称><院系简称>旅游系</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>207</院系编号><院系名称>计算机科学系</院系名称><院系简称>计算机科学系</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>208</院系编号><院系名称>信息管理系</院系名称><院系简称>信息管理系</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>209</院系编号><院系名称>管理学院</院系名称><院系简称>管理学院</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>301</院系编号><院系名称>体育系</院系名称><院系简称>体育系</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>302</院系编号><院系名称>音乐系</院系名称><院系简称>音乐系</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
<院系编号>303</院系编号><院系名称>美术系</院系名称><院系简称>美术系</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
</datas>
</dbxml>
...全文
184 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
tlovexyj 2001-12-14
  • 打赏
  • 举报
回复
大虾~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
help~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tlovexyj 2001-12-14
  • 打赏
  • 举报
回复
当然,这段xml本来就是我生成的,我可以改成你上面所说的格式。
可以赐教然后如何显示吗?用xslt... 3x very much~
tlovexyj 2001-12-14
  • 打赏
  • 举报
回复
无为真乃世外高人也!
受教!
散分
gust99 2001-12-14
  • 打赏
  • 举报
回复
受教了!
karma 2001-12-14
  • 打赏
  • 举报
回复
in the old XSL, the best I could do is like this:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html><body>
<table border="1" cellspacing="0" cellpadding="0">
<xsl:apply-templates select="dbxml/fields" />
<xsl:apply-templates select="dbxml/datas" />
</table>
</body></html>
</xsl:template>

<xsl:template match="fields">
<thead>
<xsl:for-each select="field">
<th><xsl:value-of select="." /></th>
</xsl:for-each>
</thead>
</xsl:template>

<xsl:template match="datas">

<xsl:for-each select="data">
<tr>
<xsl:for-each select="*">
<td><xsl:value-of select="." /> </td>
</xsl:for-each>
</tr>
</xsl:for-each>

</xsl:template>
</xsl:stylesheet>
karma 2001-12-14
  • 打赏
  • 举报
回复
in the XSLT, you can do

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html><body>
<table border="1" cellspacing="0" cellpadding="0">
<xsl:apply-templates select="dbxml/fields" />
<xsl:apply-templates select="dbxml/datas" />
</table>
</body></html>
</xsl:template>

<xsl:template match="fields">
<thead>
<xsl:for-each select="field">
<th><xsl:value-of select="." /></th>
</xsl:for-each>
</thead>
</xsl:template>

<xsl:template match="datas">
<xsl:for-each select="data">
<xsl:variable name="cur" select="*" />
<tr>
<xsl:for-each select="/dbxml/fields/field">
<td><xsl:value-of select="$cur[name()=current()]" /> </td>
</xsl:for-each>
</tr>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
tlovexyj 2001-12-14
  • 打赏
  • 举报
回复
up~

无为大侠救命
karma 2001-12-13
  • 打赏
  • 举报
回复
I can do it in XSLT but I do not know how to do it in the old XSL. Your problem is that your data is not very well organized, you should do

<datas>
<data>
<院系编号>000</院系编号><院系名称>素质课部</院系名称><院系简称>素质课部</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
</data>
<data>
<院系编号>001</院系编号><院系名称>理论课部</院系名称><院系简称>理论课部</院系简称><院系简介></院系简介><毕业英语过级标准>4</毕业英语过级标准>
</data>
....
</datas>
tlovexyj 2001-12-13
  • 打赏
  • 举报
回复
谢谢;)这下子行了。万分感谢!!!!!
可是刚才我说的是,在这里:
<xsl:template match="datas">
<xsl:for-each select="院系编号">
<tr>
<td><xsl:value-of select="." /></td>
<td><xsl:value-of select="../院系名称[index() $eq$ context()!index()]" /></td>
<td><xsl:value-of select="../院系简称[index() $eq$ context()!index()]" /></td>
<td><xsl:value-of select="../院系简介[index() $eq$ context()!index()]" /> </td>
<td><xsl:value-of select="../毕业英语过级标准[index() $eq$ context()!index()]" /></td>
</tr>
</xsl:for-each>
这里一句<xsl:value-of select="../院系简称[index() $eq$ context()!index()]" />
---------------------------------^^^^^^^^
可否不把下面内容的字段规定死,而是用例如<xsl:value-of select="index(n)" ...
其中字段的具体内容会根据fields中的不同而不同,直接从fields中顺序取。

谢谢大虾赐教
karma 2001-12-13
  • 打赏
  • 举报
回复
"http://www.w3.org/TR/WD-xsl" solution:

1.xsl:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html><body>
<table border="1" cellspacing="0" cellpadding="0">
<xsl:apply-templates select="dbxml/fields" />
<xsl:apply-templates select="dbxml/datas" />
</table>
</body></html>
</xsl:template>

<xsl:template match="fields">
<thead>
<xsl:for-each select="field">
<th><xsl:value-of select="." /></th>
</xsl:for-each>
</thead>
</xsl:template>

<xsl:template match="datas">
<xsl:for-each select="院系编号">
<tr>
<td><xsl:value-of select="." /></td>
<td><xsl:value-of select="../院系名称[index() $eq$ context()!index()]" /></td>
<td><xsl:value-of select="../院系简称[index() $eq$ context()!index()]" /></td>
<td><xsl:value-of select="../院系简介[index() $eq$ context()!index()]" /> </td>
<td><xsl:value-of select="../毕业英语过级标准[index() $eq$ context()!index()]" /></td>
</tr>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
tlovexyj 2001-12-13
  • 打赏
  • 举报
回复
哦,对了,请教一下。
有什么好的工具可以自动根据需要生成xsl吗?
tlovexyj 2001-12-13
  • 打赏
  • 举报
回复
我使用的是 win2000a+sp2 ie5.5+sp2
它什么也显示不出来,有什么要注意的吗?
诚心求教!!!!!

还有一个就是,我想根据fields中读出所有的字段,然后再在下面分别<xsl:value-of select "...">也就是说此xsl可以读任何类似此格式的xml文件。
再谢!!!!!
karma 2001-12-13
  • 打赏
  • 举报
回复
if you are using XSLT, try

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html><body>
<table border="1" cellspacing="0" cellpadding="0">
<xsl:apply-templates select="dbxml/fields" />
<xsl:apply-templates select="dbxml/datas" />
</table>
</body></html>
</xsl:template>

<xsl:template match="fields">
<thead>
<xsl:for-each select="field">
<th><xsl:value-of select="." /></th>
</xsl:for-each>
</thead>
</xsl:template>

<xsl:template match="datas">
<xsl:for-each select="院系编号">
<xsl:variable name="pos" select="position()" />
<tr>
<td><xsl:value-of select="." /></td>
<td><xsl:value-of select="../院系名称[$pos]" /></td>
<td><xsl:value-of select="../院系简称[$pos]" /></td>
<td><xsl:value-of select="../院系简介[$pos]" /> </td>
<td><xsl:value-of select="../毕业英语过级标准[$pos]" /></td>
</tr>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
tlovexyj 2001-12-13
  • 打赏
  • 举报
回复
3x first,
simple tabel, like this:

院系编号 院系名称 院系简称 院系简介 毕业英语过级标准
000 素质课部 素质课部 4
...
......
karma 2001-12-13
  • 打赏
  • 举报
回复
what kind of output do you want?

8,909

社区成员

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

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