以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  求教,页面参数传递的问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=10562)


--  作者:Nina
--  发布时间:9/24/2004 12:09:00 PM

--  求教,页面参数传递的问题
求教,我从一个页面传出一个参数id,然后用一个ASP文件接收到了这个参数,我想问的是用这个接收到的参数怎样去判定负责输出的XSL内容?
接收参数的页面我是用ASP关联xml和xsl来生成的。xml是数据库,xsl选择输出内容。
怎么弄?请高手赐教
ASP文件
<%
Dim objXML
Dim objXSL
'实例化 XMLDOM 对象,以便载入 XML 文件。
set objXML = Server.CreateObject("Microsoft.XMLDOM")
'关掉文件异步载入模式。
objXML.async = false
a=server.mappath("\") & "\project\data\data.xml"
b=server.mappath("\") & "\project\produce\xsl\show\show.xsl"
'载入 XML 文件!
objXML.load(a)
'实例化 XMLDOM 对象,以便载入 XSL 文件。
set objXSL = Server.CreateObject("Microsoft.XMLDOM")
'关掉文件异步载入模式。
objXSL.async = false
'载入 XSL 文件!
objXSL.load(b)
'利用 XMLDOM 的 transformNode 方法,把 XSL 样式表应用到 XML 文档,然后输出到客户端。
Response.Write(objXML.transformNode(objXSL))
id = Request.Querystring("id")
‘id是另一个页面传递过来的参数
%>
XSL文件如下:
<?xml version="1.0" encoding="gb2312" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<body>
<table border="0" cellpadding="1">
<tr align="center">
<td>序号</td>
<td>产品名称</td>
<td>型号</td>
<td>等级</td>
<td>规格</td>
<td>功能</td>
<td>备注</td>
</tr>
<xsl:for-each select="root/produce1/jingzhi/chanping">
<tr align="center">
<td><xsl:value-of select="@id"/></td>
<td><xsl:value-of select="pname"/></td>
<td><xsl:value-of select="type"/></td>
<td><xsl:value-of select="class"/></td>
<td><xsl:value-of select="spec"/></td>
<td><xsl:value-of select="fuction"/></td>
<td><xsl:value-of select="memo"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
ASP得到的参数值怎么样给XSL做判断呢??

--  作者:doubleG
--  发布时间:9/24/2004 8:58:00 PM

--  
可以用javascript修改xsl中的参数,再进行transform。很多xml+xsl动态排序的例子就是这样做的,你可以到网上找一些例子。他们就是动态修改了其中要sort的内容,再进行解析。因为是修改客户端内存里的东西所以不用担心服务器端的xsl文件。
--  作者:Nina
--  发布时间:9/24/2004 10:42:00 PM

--  
能举个例子吗???
--  作者:doubleG
--  发布时间:9/25/2004 2:13:00 PM

--  
还是直接用asp吧,呵呵用xslprocessor
xmlDoc =Server.CreateObject("MSXML2.DOMDocument")
xmlDoc.async = false
xslDoc = Server.CreateObject("MSXML2.FreeThreadedDOMDocument")
xslDoc.async = false
xmlDoc.load("XML/"+fileName)
xslDoc.load("XSLT/"+xsltFile)
xslTemplate = Server.CreateObject("MSXML2.XSLTemplate")
xslTemplate.stylesheet = xslDoc
xslProc = xslTemplate.createProcessor()
xslProc.input = xmlDoc
Call xslProc.addParameter("EmpId", "1")
Call xslProc.Transform
XSL文件的开头要加上:
<xsl:stylesheet.....>
<xsl:param name="EmpId"/>
就传入了参数了 中间写的可能有点问题,写的时候如果那里不对可以查一下相关资料。

[此贴子已经被作者于2004-9-25 18:01:17编辑过]

W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms