首页
关于我们
服务项目
作品展示
服务支持
联系我们
友情链接
网站地图
 您当前位置:网络学院 -> 编程开发系-> 编程开发-> Asp教程
使ASP程序跨浏览器
作者:admin 来源:网络
日期: 2007-2-27
站内搜索
文章页数:[1] 

使用XML存储的数据给我们带来了极大的方便,而且,XML是跟平台无关的。利用XSLT可以将XML转换成任意格式的文档,比如HTML。另外还可以使用这种方法来实现跨平台浏览器(IE,火狐,WAP浏览器等)的支持。比如用如下ASP代码获取客户端浏览器类型:

<%

Dim objBrowsCap

Set objBrowsCap = Server.CreateObject("MSWC.BrowserType")

%>

浏览器(Browser):<%=objBrowsCap.browser%>

浏览器版本(Version):<%=objBrowsCap.version%>

然后通过判断浏览器的类型来使用不同的XSLT对你的XML数据进行转换。

下面是转换XML的方法:

<%

function Transform(xmlPath,xsltPath) Dim result, xsltDocument,xmlDocument Set xmlDocument=CreateObject("MSXML2.DOMDocument") xmlDocument.load(Server.MapPath(xmlPath)) Set xsltDocument = CreateObject("MSXML2.DOMDocument") xsltDocument.load(Server.MapPath(xsltPath)) result = xmlDocument.transformNode(xsltDocument) Set objXMLDOM = Nothing Set objXMLDOM_XSLT = Nothing Transform=result end function

%>

参数xmlPath指定将被转换的XML的文件名。

参数xsltPath指定xls的文件名。

下面是将XML转换成HTML的一个实例:

1、 XML存储的数据文件(table.xml):

<?xml version="1.0" encoding="utf-8" ?>

<Items>

<Item>

<Url>http://blog.163.com/lxd_201/</Url>

<Title>☆聊ゾ聊☆</Title>

</Item>

<Item>

<Url>http://blog.163.com/lxd_201/</Url>

<Title>☆聊ゾ聊☆</Title>

</Item>

<Item>

<Url>http://blog.163.com/lxd_201/</Url>

<Title>☆聊ゾ聊☆</Title>

</Item>

<Item>

<Url>http://blog.163.com/lxd_201/</Url>

<Title>☆聊ゾ聊☆</Title>

</Item>

<Item>

<Url>http://blog.163.com/lxd_201/</Url>

<Title>☆聊ゾ聊☆</Title>

</Item>

<Item>

<Url>http://blog.163.com/lxd_201/</Url>

<Title>☆聊ゾ聊☆</Title>

</Item>

<Item>

<Url>http://blog.163.com/lxd_201/</Url>

<Title>☆聊ゾ聊☆</Title>

</Item>

<Item>

<Url>http://blog.163.com/lxd_201/</Url>

<Title>☆聊ゾ聊☆</Title>

</Item>

<Item>

<Url>http://blog.163.com/lxd_201/</Url>

<Title>☆聊ゾ聊☆</Title>

</Item>

<Item>

<Url>http://blog.163.com/lxd_201/</Url>

<Title>☆聊ゾ聊☆</Title>

</Item>

</Items>

2、 XSLT文件(table.xsl):

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

xmlns:copyRight="http://xml.sz.luohuedu.net/">

<xsl:template match="/">

<!-- 定义常量 -->

<xsl:variable name="strTrLeft" select="'&lt;tr&gt;'"/>

<xsl:variable name="strTrRight" select="'&lt;/tr&gt;'"/>

<!-- 计算总记录数 -->

<xsl:variable name="nTotal" select="count(/Items/Item)"/>

<!-- 定义列数 -->

<xsl:variable name="nCols" select="4"/>

<!-- 当最后一行输出的单元格小于实际的列数的时候,用空内容补齐所缺的单元格。计算需要的补齐的列数 -->

<xsl:variable name="nLefted" select="$nCols - ($nTotal mod $nCols)"/>

<!-- 计算不需要补齐的行数 -->

<xsl:variable name="nNotProcessedRow" select="$nTotal - ($nTotal mod $nCols)"/>

<table bgcolor="snow" border="1" cellpadding="5" cellspacing="2" borderColor="blue"

style="font-size:9pt">

<!-- 对于不需要补齐的行数,直接输出 -->

<xsl:for-each select="/Items/Item[position() &lt; $nNotProcessedRow +1]">

<xsl:if test="position() mod $nCols = 1">

<xsl:value-of select="$strTrLeft" disable-output-escaping="yes"/>

</xsl:if>

<td>

<a target="_blank">

<xsl:attribute name="href">

<xsl:if test="contains(Url,'@')">mailto:</xsl:if>

<xsl:value-of select="Url"/>

</xsl:attribute>

<xsl:value-of select="Title"/>

</a>

</td>

<xsl:if test="position() mod $nCols = 0">

<xsl:value-of select="$strTrRight" disable-output-escaping="yes"/>

</xsl:if>

</xsl:for-each>

<!-- 转换除去不需要补齐的记录的剩余记录 -->

<xsl:if test="$nLefted != 0 and $nLefted != $nCols">

<xsl:value-of select="$strTrLeft" disable-output-escaping="yes"/>

<xsl:for-each select="/Items/Item[position() &gt;$nNotProcessedRow]">

<td>

<a target="_blank">

<xsl:attribute name="href">

<xsl:if test="contains(Url,'@')">mailto:</xsl:if>

<xsl:value-of select="Url"/>

</xsl:attribute>

<xsl:value-of select="Title"/>

</a>

</td>

</xsl:for-each>

<!--

如果nLefted不等于0和列数,则需要进行补齐,这里进行递归调用,需要传递的参数有两个:

nLefted:要补齐的列数;

nCols:表格的列数。

-->

<xsl:call-template name="MyFun">

<xsl:with-param name="nLefted" select="$nLefted"/>

<xsl:with-param name="nCols" select="$nCols"/>

</xsl:call-template>

<xsl:value-of select="$strTrRight" disable-output-escaping="yes"/>

</xsl:if>

</table>

<p>

<xsl:value-of select="$nTotal"/>

</p>

</xsl:template>

<xsl:template name="MyFun">

<xsl:param name="nLefted"/>

<xsl:param name="nCols"/>

<xsl:if test=" $nLefted != 0 and $nLefted != $nCols">

<td>

<xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>

</td>

<xsl:call-template name="MyFun">

<xsl:with-param name="nLefted" select="$nLefted - 1"/>

<xsl:with-param name="nCols" select="$nCols"/>

</xsl:call-template>

</xsl:if>

</xsl:template>

</xsl:stylesheet>

3、 ASP代码(index.asp):

<%

function Transform(xmlPath,xsltPath)

Dim result, xsltDocument,xmlDocument

Set xmlDocument=CreateObject("MSXML2.DOMDocument")

xmlDocument.load(Server.MapPath(xmlPath))

Set xsltDocument = CreateObject("MSXML2.DOMDocument")

xsltDocument.load(Server.MapPath(xsltPath))

result = xmlDocument.transformNode(xsltDocument)

Set objXMLDOM = Nothing

Set objXMLDOM_XSLT = Nothing

Transform=result

end function

%>

<%

htmlResult=Transform("table.xml","table.xsl")

response.Write(htmlResult)

%>

文章页数:[1] 
放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·ASP生成静态Html文件技术杂谈
·ASP中实现小偷程序的原理和简单示例
·ASP六大对象介绍
·ASP开发中存储过程应用全接触
·如何把ASP编写成DLL
·用ASP+CSS实现随机背景
·看人家用使用InstallShield制作ASP安装程序
·ASP正则表达式详解
·使用ADO.net将数据导出到Excel并提供下载
·解析ASP的Application和Session对象
最新文章
·在ASP中轻松实现记录集分页显示
·在ASP中访问和更新Cookies集合
·ASP.NET中实现Flash与.NET的紧密集成
·解析ASP的Application和Session对象
·[asp]让你知道codepage的重要,关于多语言编码
·ASP中实现小偷程序的原理和简单示例
·ASP程序中使用断开的数据记录集
·利用ASP发送和接收XML数据的处理方法
·ASP开发中存储过程应用全接触
·如何让你的ASP运行于非Windows平台
相关主题
  • asp中获取汉字拼音的第一个字母
  • asp实现语音上传
  • 版权申明:除部分特别声明不要转载,或者授权本站独家播发的文章外,大家可以自由转载本站的原创文章,但原作者和来自本站的链接必须保留(非本站原创的,按照原来自一节,自行链接)。文章版权归本站和作者共有。
    转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去本站水印。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论  打印  刷新  推荐给朋友  返回顶部  关闭

    网上大名: