让你的ASP程序支持不一样的浏览器
发布时间:2023-04-30 13:23:06 所属栏目:Asp教程 来源:
导读:使用XML存储的数据给我们带来了极大的方便,而且,XML是跟平台无关的。利用XSLT可以将XML转换成任意格式的文档,比如HTML。另外还可以使用这种方法来实现跨平台浏览器(IE,火狐,WAP浏览器等)的支持。比如用如下ASP
使用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="'<tr>'"/> <xsl:variable name="strTrRight" select="'</tr>'"/> <!-- 计算总记录数 --> <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() < $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() >$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"> </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) %> (编辑:聊城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐