+ -
当前位置:首页 → 问答吧 → 【已解决】请教url访问xml文件传递参数载入xsl

【已解决】请教url访问xml文件传递参数载入xsl

时间:2005-09-12

来源:互联网

为了提高效率,准备把所有xml整合成一个xml文件

想实现的就是,访问url的参数传递到xml后,通过判断参数选择载入的xsl模版

比如 http://www.xxx.com/default?about 类似,隐藏原始文件后缀更好
载入default.xml+about.xsl

天马上要亮了,吐血中。。。。咳。咳。

[ 本帖由 一叶千鸟 最后编辑于 2005-9-12 17:40 ]

作者: 一叶千鸟   发布时间: 2005-09-12

呵..在xml里写脚本?用ASP吧?
隐藏后缀..

建个default文件夹..default.xml改成default.asp
就可以这样传了.

呵..我也不知道我说的是什么了...

作者: 小男   发布时间: 2005-09-12

晕,我还真只听过把xsl改后缀当asp运行,第一次听说把xml。。。。。。。。

显然这不是我的本意,xml改后缀能否正常运行,严重怀疑

作者: 一叶千鸟   发布时间: 2005-09-12

呵呵。。你试试吧。。。

作者: 小男   发布时间: 2005-09-12

这不是跟
<script src=a.asp></script>一个道理呢?

作者: 小男   发布时间: 2005-09-12

算了,不要偏题,我也不会去试,没有意义

我要的还是数据,结构分离,xml内插脚本,不伦不类

作者: 一叶千鸟   发布时间: 2005-09-12

写个分发的asp文件.获取参数.然后再转向!

作者: JSTOP   发布时间: 2005-09-12

有了,做服务器端处理

QUOTE:
<%
'Load the XML
set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = false
xml.load(Server.MapPath("default.xml"))
'Load the XSL
set xsl = Server.CreateObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load(Server.MapPath("default.xsl"))
Response.Write(xml.transformNode(xsl))
%>

获取访问参数,替换下边xsl.load(Server.MapPath("default.xsl")) 中的default,还可以直接生成html在客户端显示,保护源码。

以上思路够清晰吧,那位兄台帮我写下,嘿嘿

[ 本帖由 一叶千鸟 最后编辑于 2005-9-12 15:30 ]

作者: 一叶千鸟   发布时间: 2005-09-12

呵...保护XML|XSL源码?
.
我的意思就是用ASP...

有什么不伦不类的呢..?

作者: 小男   发布时间: 2005-09-12

改成ASP是不行的.那样的话.XSL执行不通过的!

作者: JSTOP   发布时间: 2005-09-12

呵呵.我在IIS下把XML和XSL相应都改成ASP都运行通过...

作者: 小男   发布时间: 2005-09-12

不错,我忘记改个东西了.
看来可以尝试一下!

不过8楼的方法是比较正规的!

作者: JSTOP   发布时间: 2005-09-12

两位大概理解错了, 以上程序单独放在一个asp文件中执行,就可以在服务端把default.xml和default.xsl解析成htm,直接在这个asp里写程序,不关任何xml和xsl的事。

关键是参数的传递咋整,default.xml是全站的数据,xsl就分开,我是这个意思。

asp俺就不行了,我就知道这个asp解析xml的代码,应该完全可以保护xml和xsl的。

作者: 一叶千鸟   发布时间: 2005-09-12

意思是
XML文件和XSL文件内容完全不变. 只是后缀名变成了.asp
这样的话你就可以取参数了.

你在8楼的方法我也做过. 以前我做的JS+xml+XSL树就是用你8楼的方法做的.
如果为了保护源码还是用8楼的方法吧

作者: JSTOP   发布时间: 2005-09-12

哦...原来如此...
改个简单的..
<% 'Load the XML set xml = Server.CreateObject("Microsoft.XMLDOM") xml.async = false xml.load(Server.MapPath(Request("url"))) 'Load the XSL set xsl = Server.CreateObject("Microsoft.XMLDOM") xsl.async = false xsl.load(Server.MapPath("default.xsl")) Response.Write(xml.transformNode(xsl)) %>
   提示:您可以先修改部分代码再运行

访问时.defult.asp?url=default.xml
就行了..呵..把路径打上去...就行了.

作者: 小男   发布时间: 2005-09-12

不是改后缀名的问题,不需要改动

只是增加一段服务器端处理程序,达到两个目地:

1,获取url参数,分别载入xsl
2,服务器端解析成html

比如我们客户端访问就是如此:
http://www.xxx.com/default.asp?a 载入a.xsl
http://www.xxx.com/default.asp?b 载入b.xsl

作者: 一叶千鸟   发布时间: 2005-09-12

啊。。。。。。。。。。小男兄啊,搞反了,是替换xsl,不是xml

你这样一整,XML不就暴露了么,请看我16楼说明

最好是把default.asp也隐藏了,达到如此效果:
http://www.xxx.com/?a
http://www.xxx.com/?b

作者: 一叶千鸟   发布时间: 2005-09-12

呵...鸟哥...不好意思...如果这样的话..文件多了不搞死你去...

这样...要不就写到ASP程序里...判断querystring...
有多要页要写多少个CASE..
还有一种,页面多的请就是把XML和XSL存入数据库...用ID来区别..

你是要改模版???

不是改数据??

晕..有点看8懂啦....呵..

作者: 小男   发布时间: 2005-09-12

取参数.
假设URL为http://www.xxx.com?default&about
我的测试URL为 http://localhost/XXX/index.asp?default&about
<%@ Language="VBS" %>
<%
        Dim sParams
        Dim ary,i
        sParams=Request.serverVariables("QUERY_STRING")
        if sParams<>"" then   '参数不为空时操作
        if inStr(sParams,"&") then
                ary=split(sParams,"&")
                for i=0 to ubound(ary)
                        Response.Write(ary(i) & "<br>")'这里将循环输出default 和 about
                next
        else
                Response.Write(sParams)'假如只有一个参数那就直接输出
        end if       
        end if
%>
以上代码只做输出, 值都取到了,你可以根据实际情况更改!

作者: JSTOP   发布时间: 2005-09-12


<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <% Dim xml,xsl xml="default.xml" xsl="default.xsl" Select Case Request.QueryString Case "a" xml="a.xml" xsl="a.xsl" Case "b" xml="b.xml" xsl="b.xsl" Case Else Response.write "Error" Response.end End Select set xml = Server.CreateObject("Microsoft.XMLDOM") xml.async = false xml.load(Server.MapPath(xml)) set xsl = Server.CreateObject("Microsoft.XMLDOM") xsl.async = false xsl.load(Server.MapPath(xsl)) Response.Write(xml.transformNode(xsl)) %>
   提示:您可以先修改部分代码再运行

作者: 小男   发布时间: 2005-09-12

恩那,等我回去翻翻书,嘿嘿

狠感谢两位:P

[ 本帖由 一叶千鸟 最后编辑于 2005-9-12 17:19 ]

作者: 一叶千鸟   发布时间: 2005-09-12

总结一下

JSTOP的程序不错,但源码还是要从参数获取上泄露,是很不错的获取url参数的例子
小男的程序变量定义重复了,程序是有问题,稍微改一下就可以,我把xml固定以后就满足本人的需求了,很不错的例子

作者: 一叶千鸟   发布时间: 2005-09-13