XSL显示的问题。是否可以进行页面传值呢?请赐教!

_-_-_-_- 2005-05-08 08:42:59
正在做一个asp.net和XMl结合的文章系统。初学。。别笑。。
我想显示我一个xml文件里所有元素为<title>的内容。
我想现实的就是一个文章列表那样啦。。
看到的是文章的标题。。点激就进入哪个文章的正文内容。。

因为我是用xml做数据库。。。
我显示文章列表的时候是想通过XSL来做的。。。
那个XSL文件应该怎样写??

我的xml文件为:
<?xml version="1.0" encoding="gb2312"?>
<data>
<type lei="C#">
<topic id="1">
<title>Sql Server中的日期与时间函数</title>
<author>wo</author>
<content>qwertyui撒大按时大苏打实打实打算</content>
<time>
</time>
<count>
</count>
</topic>
<topic id="2">
<title>123456</title>
<author>wo</author>
<content>q3434343wertyui</content>
<time>
</time>
<count>
</count>
</topic>
<topic id="3">
<title>123vbbbbbbbbbb</title>
<author>wo</author>
<content>qwertyunnnnnnmmmmmmi</content>
<time>
</time>
<count>
</count>
</topic>
</type>
<type lei="c3">
<topic id="4">
<title>12后果发挥广泛3</title>
<author>wo</author>
<content>qwertyui</content>
<time>
</time>
<count>
</count>
</topic>
<topic id="5">
<title>1234规范化规范化规范化感56</title>
<author>wo</author>
<content>q3434343wertyui</content>
<time>
</time>
<count>
</count>
</topic>
<topic id="6">
<title>123vb规范化规范化飞过海法bbbbbbbbb</title>
<author>wo</author>
<content>qwertyunnnnnnmmmmmmi</content>
<time>
</time>
<count>
</count>
</topic>
</type>
</data>

我是想用Querystring来传值的。。。例如那个<type lei="C#">之下<topic id="1">这个元素的<title> 我想要的连接地址是 show.aspx?lei=C#&id=1 (应该没有写错吧?可以这样写的吧?)
我想显示全部的文章标题。。。应该怎样做呢??
想了很久都没有思路。列标题出来应该没有问题了。。但是连接那里怎么办?
请赐教。。
...全文
160 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
速马 2005-05-10
  • 打赏
  • 举报
回复
xslt.Transform( myxml, null, ms );
->>
xslt.Transform( myxml, null, Response.OutputStream);

不过你这样就是在服务端转换了,这样用XML的意义何在
不过倒是可以解决你的问题了嗯
_-_-_-_- 2005-05-10
  • 打赏
  • 举报
回复
XmlNodeList first=root.SelectNodes("descendant::type[@lei]/topic/title");
foreach(XmlNode node in first)
{
XmlNode up=node.ParentNode;
XmlNode upag=up.ParentNode;
string str1=node.InnerText;
string str2=up.InnerText;
string str3=upag.InnerText;
outxml(str1,str2,str3);
}



private void outxml(string str1,string str2,string str3)
{
XmlDocument myxml=new XmlDocument();
myxml.LoadXml("<data><lei>"+str3+"</lei><topic>"+str2+"</topic><title>"+str1+"</title></data>");
XslTransform xslt = new XslTransform();
xslt.Load( Server.MapPath( "admin_alltopic.xsl" ));
MemoryStream ms = new MemoryStream();
xslt.Transform( myxml, null, ms );
ms.Seek( 0, SeekOrigin.Begin );
StreamReader sr = new StreamReader( ms );
Response.Write( sr.ReadToEnd() );
}



我想到的是这样的。。。但是错误了~~~55555555555
_-_-_-_- 2005-05-10
  • 打赏
  • 举报
回复
to : Sunmast


<type lei="C#">
<topic id="1">
<title>Sql Server中的日期与时间函数</title>
<author>wo</author>
<content>qwertyui撒大按时大苏打实打实打算</content>
<time>
</time>
<count>
</count>
</topic>
<topic id="2">
<title>123456</title>
<author>wo</author>
<content>q3434343wertyui</content>
<time>
</time>
<count>
</count>
</topic>
<topic id="3">
<title>123vbbbbbbbbbb</title>
<author>wo</author>
<content>qwertyunnnnnnmmmmmmi</content>
<time>
</time>
<count>
</count>
</topic>
</type>


怎样获得 id的值??
lei的值呢??
_-_-_-_- 2005-05-10
  • 打赏
  • 举报
回复
唉。。。
我自己都无语了。。。

没法。。用dataset来做算了
kaixin110 2005-05-09
  • 打赏
  • 举报
回复
我也正在做一个和你一样的新闻系统
我是把标题存如数据库,然后用数据绑定控件显示标题,然后
转到相关连接
交个朋友
我的QQ:33482898
msn:kaixin110@msn.com
_-_-_-_- 2005-05-09
  • 打赏
  • 举报
回复
我现在自己有个思路的。。
不知道行不行。。。。。
今晚完成了就把代码贴出来。。
呵呵
_-_-_-_- 2005-05-09
  • 打赏
  • 举报
回复

先谢了
速马 2005-05-09
  • 打赏
  • 举报
回复
嗯,配置方法:
IIS -> 你的网站,右键 -> 属性 -> 主目录 -> 配置
看看应用程序扩展里头的那些,你就知道怎么改变XSL文件的处理方法了
_-_-_-_- 2005-05-09
  • 打赏
  • 举报
回复
先谢谢大家

你们也太强大了。。一时给出这么高难度的办法。。
现在开始研究一下先。。。
今晚9点出结果。。。
我自己实在做不出来的话。。。
那我认了。。老老实实用DATASET之类的来做。。
今晚9点再来。。

to: Sunmast(速马, C++/CLI)
让XSL文件交给ASP或者ASP.NET引擎处理
然后就可以在XSL内嵌入ASP或者ASP.NET的代码了

真高难度。。我服了。。我更加没有思路。。呵呵
速马 2005-05-09
  • 打赏
  • 举报
回复
possible_Y好像有点误解嗯
此param非彼param
速马 2005-05-09
  • 打赏
  • 举报
回复
你可以配置IIS,让XSL文件交给ASP或者ASP.NET引擎处理
然后就可以在XSL内嵌入ASP或者ASP.NET的代码了

我说不推荐用XSL做WEB,是因为我曾做过这样的试验:http://www.news.uestc.edu.cn/
远比HTML麻烦
再说设计XML的初衷,不是用来代替HTML,也不是用来做数据库,我认为它的价值在于数据交换,配置文件之类,XML描述数据的能力比较强,嗯
_-_-_-_- 2005-05-09
  • 打赏
  • 举报
回复
呵呵~~~
我就是不想用DATASET之类的东西才想到用这个的啦。。。
我做的完全是DOM的操作。。。
大家交流一下啦,,,
我QQ 121787333

晚上一般都在线的。。
_-_-_-_- 2005-05-08
  • 打赏
  • 举报
回复
先谢谢你~~
先看明白你的代码先。。。
一会再问。。
possible_Y 2005-05-08
  • 打赏
  • 举报
回复
在xsl文件里使用param:

<xsl:param name="lei" />
<xsl:param name="id" />
......

<xsl:for-each select="/data/type/topic[@id = $id]">
....
</xsl:for-each>


在asp.net里使用XsltArgumentList和XslTransform,其具体用法去查MSDN:

XsltArgumentList arg = new XsltArgumentList();
arg.AddParam("lei","",Request.Querystring["lei"]);
arg.AddParam("id","",Request.Querystring["id"]););

XslTransform xslt = new XslTransform();
xslt.Load(Server.MapPath(xslFilePath));
StringWriter sw = new StringWriter();
xslt.Transform(xmldoc,arg,sw); // xmldoc为XPathDocument对象
Response.BufferOutput = true;
Response.Write(sw.ToString());
_-_-_-_- 2005-05-08
  • 打赏
  • 举报
回复
TO : Sunmast(速马, C++/CLI)
使用script应该怎样做呢??

你在csdn上的地位。。你说的每句话都很有影响的哦。。。
你那句话让我很是郁闷~~
_-_-_-_- 2005-05-08
  • 打赏
  • 举报
回复
但是老大啊。。
我做这个已经差不多完成。。就差这个显示部分。。
我可以骑虎难下啊。。。
速马 2005-05-08
  • 打赏
  • 举报
回复
xsl里头没法得到页面的参数值,除非使用script(这个和xsl就无关了)

强烈不推荐用xml + xsl做web
_-_-_-_- 2005-05-08
  • 打赏
  • 举报
回复
呵呵~~
谢谢你。。。
教程我也看了不少了。。。但是对于连接这里还是没有想明白。。。主要是XPath和XSL。。真有点麻烦
hackate 2005-05-08
  • 打赏
  • 举报
回复
你可以在添加文章的时候往里的XML添加进相应的ID。然后数据库保存相应的XML地址。

比如你添加了一个ID是6,地址是6.xml

那么你可以通过连接。因为连接你可以用.aspx?id=6

那么在.aspx里面就可以用这个ID来取出你数据库保存的对应XML地址啊。

然后XSL的话呢,我也很少做XML,不是很了解,但是很多教程。

http://www.ibook8.com/Sorting/Catalog30/Sorting_Indate_Desc_1.html

这里找个E书去看看

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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