时间:2021-05-02
使用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)
%>
本文源自:翔宇亭——IT乐园(http://www.biye5u.com),转载请保留此信息!声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在做网站时,由于不同的浏览器对代码的支持程度是不一样的,因此在编写一些程序时,需要判断当前浏览器的类型,针对不同的浏览器类型执行不同的代码。本文介绍了使用Jav
我们在使用DIV+CSS制作网站时,经常要进行浏览器的测试,这主要是因为用户使用的浏览器是不同的,不同的浏览器对CSS的支持也是不同的,造成用户在使用浏览器浏览
我们知道select标签在各个浏览器中的属性和各浏览器的支持各有些不同,从而造成select选择框在各浏览器的显示有不同,下面我们通过对主要外形CSS属性的支持
漏洞说明:Z-Blog是一款基于Asp平台的Blog博客(网志)程序,支持Wap,支持Firefox,Oprea等浏览器,在国内使用非常广泛,官方主页在http
ASP即ActiveServerPage的缩写。它是一种包含了使用VBScript或Jscript脚本程序代码的网页。当浏览器浏览ASP网页时,Web服务器