通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>编程开发>>XML专区>>正文 新版上线![旧版]
注:打开慢时请稍等

将html源代码规范化,转换成XSL代码的asp工具

http://www.iyit.net  日期:2006-5-24 11:40:55  来源:整理转载   点击:
参加讨论】将下面的四个文件存在同一级目录下,再在同目录下建立一个文件txt.txt。当要
处理html代码时,先将源代码拷入txt.txt,再进入index_transform.asp,
即可看到处理完的代码。

写这个东西的本意是因为:经常要对美工用切图软件生成的网页文件转换成xsl,
很头疼要花大量的时间去改写不规范的html代码。
这个东西对全文所有的html代码进行改动:
1.把所有标记都变成小写;
2.把标签的属性值都加上双引号;
3.把单端标签<hr>、<img……>、<input……>等,改成<hr/>……;
4.把单独属性selected变成:selected="selected";

功能不完善之处:对html代码中,属性值内包含空格的情况不能正常处理;
对<script>、<style>标签里的不能正常处理。
因为是以空格为标志将标签里的各个属性值split成的数组,所以对属性值中
包含空格的还没做进一步处理。

OK,耽误大家时间了,看看这个东西能派上用场吗?
圣诞快乐~! :)

==================================================
==================================================
'文件1:transform.asp◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
<%
'*****************************************
'Author:小乙
'时间:2000.12.20
'功能:初步完成对要被转换成XSL文件的:普通html代码语法规范化的功能
'运行环境:可运行asp的机子。在同级目录下把要处理的html代码copy到
'txt.txt文件里。
'***************************************
'================================================================================================
''''''''''''''''''''''''''''''''【对全文所有html源代码进行语法规范化】''''''''''''''''''''''''''''
'在这个函数里,调用了另外一个主要函数alone_tag,来处理从中摘出来的单个标签。
Function transform(txt)
dim alltmp '定义此字符串变量,随着被处理的大字符串减少而减短——只保留未处理的字符串部分。
alltmp=txt
alltmp=replace(alltmp," "," ") 'nbsp_tmp是替换掉文本中的字符实体&#nbsp;
'□■■■■■——进入全文的处理htm源代码的大处理循环——■■■■■□
do while trim(alltmp)<>""
'msgbox alltmp
index=0
index=InStr(1,alltmp,"<",1)

'根据index的值,判断"<"前面是否有文本?有:加到txt1;无:进行标签处理(index=1)——即进入标签处理分支
if index=1 then
index_right=InStr(1,alltmp,">",1)
tag=left(alltmp,index_right) '取出alltmp临时串中">"前面的字符串
'对到这里的标签,判断如果标签不是后端标签,就调用处理标签大函数alone_tag
if mid(tag,2,1)<>"/" then
tag1=alone_tag(tag)
'tag1=tag+",,,,,|"
txt1=txt1+tag1
del_tag=len(tag)
else '否则对其它标签,就转为小写后,简单的加在txt1后面
txt1=txt1+LCase(tag)
del_tag=len(tag)
end if
else
if index>1 then
str_tmp=left(alltmp,index-1)
txt1=txt1+str_tmp 'index<>1,说明前面有文本。
del_tag=len(left(alltmp,index-1)) '把"<"前面的属于文本的添加到新txt1大字符串中去。
end if
if index=0 then '当再也找不到<时(到了末尾),把剩下的字符串全部加到txt1里,结束循环。
txt1=txt1+alltmp
del_tag=len(alltmp)
end if
end if

'把处理完的部分从原字符串中减掉
'response.write "alltmp="+alltmp

alltmp=right(alltmp,len(alltmp)-del_tag) '(如果标签长大于等于2个字符)这里有问题!12.14,下次再作!!

loop
''□■■■■■——离开全文的处理htm源代码的大处理循环——■■■■■□

'transform=txt1
txt1=replace(txt1," ="""" "," ") '【这句是对付=""漏网之鱼 2000.12.15
txt1=replace(txt1," >",">") '【这句是对付 > 2000.12.19
txt1=replace(txt1,"<tbody>","") '【这句是对付<tbody> 2000.12.19
transform=replace(txt1,"</tbody>","") '【这句是对付</tbody> 2000.12.19

End Function
''''''''''''''''''''''''''''''''【对全文所有html源代码进行语法规范化,结束】''''''''''''''''''''''''
%>

==================================================
==================================================
'文件2:index_transform.asp◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
<%@ Language="VBScript" %>
<!-- #include file="transform.asp" -->
<!-- #include file="alone_tag.asp" -->
<%

'-------------------------------------本部分得到全文源代码,开始------------------------------------
dim txt '源文件中的文本
dim txt1 '经过html语法规范化后的文件字符串。
dim tmpreadline '=thisfile.readline
txt="":txt1="":tmpReadAll=""
'取得源文件名称,及所在路径-------------
sourcefile="txt.txt"
sourcefile=Request.form("txtname")

'--------------------------新增部分,获得上传文本文件的内容------------2000.12.15
'txt=request.form("filecontent")
'if len(txt)<>"" then
'response.write "---------------"
'end if
'response.end
'--------------------------新增部分结束------------2000.12.15

'-----------------------------------------------------【正式开始操作文件】----------------------
whichfile=server.mappath("txt.txt")
'whichfile=server.mappath(sourcefile)
Set fs = CreateObject("Scripting.FileSystemObject")
Set thisfile = fs.OpenTextFile(whichfile, 1, False)
counter=0

tmpReadAll=thisfile.readall 'ReadAll是读取全部文件内容。
txt=tmpReadAll
txt1=transform(cstr(tmpReadAll))
txt=server.htmlencode(txt)+" 【文件内容到此结束】"

'''''''''''''''''''''''''''''''''''''''''''''''''''''''

'如果要看打印出来长字符串的效果,请取消上面这行注释。
'-------------------------------------本部分得到全文源代码,结束------------------------------------
%>

<%''''''''''''''''''''''''''''''【这里正式html页面开始】'''''''''''''''''''''''''''''''''''''''''%>

<html>
<head>
<title>倒数第二版</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#BFA49a">
<form method="post" action="index_transform.asp" name="form1">
<table border="1" cellspacing="0" cellpadding="5" align="center" bgcolor="#99CCCC" bordercolor="#330066">
<tr>
<td>
<input type="text" name="txtname" value="txt.txt">

<input type="file" name="filecontent">

<input type="submit" name="Submit" value="提交">
<a href="#pagedown">到下面</a>
</td>
</tr>
</table>
</form> <br>
<!-------------------页面表单2开始(form2)--------------------->
<form method="post" action="trans2.asp" name="form2" enctype="multipart/form-data">
<table width="753" border="1" cellspacing="0" cellpadding="5" align="center" bgcolor="#99CCCC" bordercolor="#330066">
<tr bgcolor="#98AFE7" bordercolor="#FFCC99">
<td bordercolor="#FFFFFF">原文:</td>
<td bordercolor="#FFFFFF">处理后:</td>
</tr>
<tr>
<td>
<textarea name="txt" cols="50" rows="25" onFocus="this.select()" onclick="this.focus()">
<%=txt%>
</textarea>
</td>
<td>
<%''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''%>
<textarea name="txt" cols="50" rows="25" onFocus="this.select()" onclick="this.focus()">
<%=txt1%>
</textarea>
</td>
</tr>
</table>
<div id="Layer1" style="position:absolute; width:68px; height:35px; z-index:1; left: 349px; top: 411px; background-color: #E7E7E9; layer-background-color: #E7E7E9; border: 1px none #000000">
<div align="center">
<input type="submit" name="Submit2" value="提交">
<INPUT TYPE=button NAME="view" VALUE="看源码" OnClick='window.location="view-source:" +window.location.href'>
</div>
</div>
</form>

<p> </p>

<br><a name="pagedown">
<hr size="1" align="center" width="90%" color="#88ff99">
<!-------以下是处理完的源代码----------->

<%=txt1%>

<!-------处理完的源代码到此为止------->
</body>
</html>

<%'释放资源
Erase strtag1
Erase strtag2
Erase strtag3

thisfile.Close
set thisfile=nothing
set fs=nothing
%>
==================================================
==================================================
'文件3:alone_tag.asp◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
<!-- #include file="func_flag.asp" -->

<%
'tag="<hr bgcolor=""#ccFFFF"" size=4568481,dfafd selected>"

'----------------------------进入这里时应该已经得到一个完整的标签--------------------------------
'--------在此建立了一个大函数用来处理一个完整的标签里的属性值。一直到页面尾部为止。
function alone_tag(tag)
dim tag1 '定义处理完以后的标签,并在本函数末尾,将此值返还给alone_tag。
tag=LCase(tag) '将标签命名为tag,并且为了美观,把所有字符串都改写成小写形式

'---------到此先准备好标签的自身,以备后面拼回标签的时候使用(减一是因为后面拼属性时把空格加上了)
dim tmpattri '此变量是临时字符串,包含一个标签中的所有属性值,利用它来求“属性数组:attribute”
index=InStr(1,tag," ",1)
tmpattri=right(tag,len(tag)-index) '除去左侧标签
if len(tmpattri)>1 then
tmpattri=trim(left(tmpattri,len(tmpattri)-1)) '除去右侧">",并去除两端空格(如果标签长大于等于2个字符)
end if

tmpattri=replace(tmpattri,chr(13)," ") '对源码中,一个标签不在一行里的情况,尚等待另行考虑处理。
tmpattri=replace(tmpattri,chr(10)," ")
tmpattri=replace(tmpattri,chr(10)&chr(13)," ")
tmpattri=replace(tmpattri," "," ") '【这两句是对付当属性串里有多个空格的时候,
tmpattri=replace(tmpattri," "," ") '【替换成一个空格,不过只能处理不超过16个空格的情况。
tmpattri=replace(tmpattri," "," ")
tmpattri=replace(tmpattri," "," ")
tmpattri=replace(tmpattri," "," ")
tmpattri=replace(tmpattri," "," ")
tmpattri=replace(tmpattri," "," ")
attribute=Split(tmpattri, " ", -1, 1) '新定义一个数组,是专为装载属性值而设的。Dim attribute
'msgbox "这里得到准备拆分属性数组的长字符串: "+tmpattri

'--------------------到这里已经得到一个关于属性值的数组:attribute-------------------------------

'--------『这个循环是处理上面处理完毕的属性值字符数组(attribute)的』-------------------
'flag=0:说明单个属性有等于号,且有双引号——语法正常,后面对此标志忽略。 (例:width="325")
'flag=1:说明单个属性有等于号,且没有双引号——需要处理,对语法规范化 (例:width=325)
'flag=2:说明单个属性没有等于号(例:selected)
'flag=3:说明是单端标签,(例:<hr width="80%" size="1">)此语句在前面设标志,并进行处理
For count=0 to UBound(attribute, 1) '一个元素的属性不多.
If InStr(1,attribute(count),"=",1)=0 Then
flag=2 '单个属性串中没找到等于号。(例:selected)
Else
IF InStr(1,attribute(count),"""",1)=0 Then
flag=1 '单个属性串中没找到等于号。(例:width=325)
Else
flag=0 '单个属性串找到了等于号。(例:width="325")
IF InStr(1,attribute(count),"""",1)>0 Then
'attribute(count)=attribute(count)+attribute(count+1)
'attribute(count+1)="" '这两句是说,把下一个属性串的赋给它,把下一个属性串置为零。
flag=4 '单个属性串找到了等于号,并且包含分号。(例:content="text/html; charset=gb2312")
End IF
End If
End If

'------------------对属性数组,根据上面打的不同标志来调用不同函数进行处理--------------
Select case flag
case 0 attribute(count)=attribute(count)
case 1 attribute(count)=func_flag1(attribute(count)) '调用函数func_flag1处理。(例:width=325)
case 2 attribute(count)=func_flag2(attribute(count)) '调用函数func_flag2处理。(例:selected)
case 3 attribute(count)=func_flag3(attribute(count)) '调用函数func_flag3处理单端标签(例:<img…)
case 4 attribute(count)=(attribute(count)) '另行处理属性串之间包含分号、空格的情况
End Select
Next

count=0
for count=0 to UBound(attribute, 1)
attribute_tmp=attribute_tmp+" "+attribute(count) '属性值之间要有空格
next
'----------到这里已经把各个符合属性值规范的属性拼成一个串attribute_tmp,下面进行拼标签------
index=InStr(1,tag," ",1)
if InStr(1,tag," ",1)=0 and len(tag)<>"" then '当空格没找到(意味着是空属性值标签),且没有到末尾时。
tag1=Replace(tag,">"," >") '在此类标签(例<hr>)后尾加上一个空格
else
tag_self=left(tag,index-1)
'拼标签与属性串。
tag1=tag_self+attribute_tmp+">"
end if
'msgbox "tag_self"+tag_self
'msgbox "(要输出的标签串)tag1ssssssssssss:"+tag1

'-----------------到这里已经得到一个属性值规范的标签,但要开始对单端标签进行处理------------
'----替换单端标签--------
'count=0
for count=0 to UBound(strtag3,1)
if InStr(1,tag1,strtag3(count),1)<>0 then '这里利用到前面已切分好的属性标签
tag1=func_flag3(tag1) '对付单端标签——flag=3(例:<img…)
end if
next
'-----------------到这里已经得到一个完全语法规范化的标签。单端标签处理完毕------------
alone_tag=tag1
end function

'<SCRIPT LANGUAGE="javaScript">
'<!--
'tag='<%=alone_tag(tag)% >'
'alert (tag)
'//-->
'</SCRIPT>

%>

==================================================
==================================================
'文件4:func_flag.asp◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
<%
strtag_source1="<html ,<body ,<table ,<td ,<tr ,<option ,<font ,<div ,<span ,<h1 ,<h2 ,<form "
strtag1 = Split(strtag_source1, ",", -1, 1)

strattri_source2="selected,checked,norwap,readonly,noshade" '单独属性
strtag2 = Split(strattri_source2, ",", -1, 1)

strtag_source3="<input ,<img ,<hr ,<br ,<meta" '单端标签
strtag3 = Split(strtag_source3, ",", -1, 1)

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'-------------------以下是处理flag值的多个函数---------【保留】----开始
function func_flag1(tmp)'处理单个属性:(例:width=325)
index=InStr(1,tmp,"=",1)
z1=left(tmp,index)
z2=""""
z3=mid(tmp,index+1,len(tmp)-len(z1))
func_flag1=z1+z2+z3+z2
end function

function func_flag2(tmp)'(例:selected)
func_flag2=tmp+"="+""""+tmp+""""
end function

function func_flag3(tmp)'处理单端标签(例:<img…)
func_flag3=replace(cstr(tmp),">","/>")
end function
'-------------------以上是处理flag值的多个函数---------【保留】----结束
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
%>


编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:仅用xsl和asp实现分页功能
下一篇:使用XML和SQL Server 2000管理存储过程调用
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
perl调试工具 ASP、CGI、ISAPI、ODBC之间的差别 PerlScript编写ASP
perl 调试工具 ptkdb 简单介绍 构造未来Web页面的工具语言-- XML 让Asp与XML交互
XML在ASP中的一些运用 Using SOAP from inside ASP,maybe he 利用ASP生成XML文档
将SAX加入我们的ASP应用中 利用ASP + XML 架设在线考试系统 仅用xsl和asp实现分页功能
XML加ASP实现网页“本地化” 用ASP、VB和XML建立互联网应用程序 用ASP+XML打造留言本
XMLHTTP+Javascript+Asp写得聊天室,无 使用XML+VBS技术在ASP中实现报表的打印 ASP+和JSP之间的抉择
ASP PHP JSP 大比拼 asp,php 和 jsp 比较 之我见 动态网页制作技术JSP与ASP的比较(1)
动态网页制作技术JSP与ASP的比较(2) 安装Servlet和JSP开发工具 在DELPHI7中不使用任何第三方控件,实现
最新更新 热点排行 推荐新闻
WML Script标准函数库
WML Script脚本程序设计(二)
WML Script脚本程序设计(一)
WML Script语法基础
WML编程
CGI测试
CGI教程-ErrorDocument 指令
CGI教程-解码数据发送给CGI脚本
跟我学Perl
Perl教学 Perl5的包和模块
Perl教学 Perl的面向对象编程
Perl教学 Perl5中的引用(指针)
Perl教学 格式化输出
Perl教学 关联数组(哈希表)
Perl教学 子程序
WML Script脚本程序设计(二)
WML Script标准函数库
WML Script脚本程序设计(一)
WML Script语法基础
WML编程
优秀公益广告作品欣赏(8)
java数据类型转换
Windows XP专业版IIS连接数的更改
新开放QQ免费挂级网站
优秀公益广告作品欣赏(7)
免费在QQ上看在线电影电视听音乐
QQ珊瑚虫外挂4.0版本发布!
WEB服务器配置全攻略(三)
免费把QQ炫铃设为本机QQ的系统提示音
Office2007简体中文版浮出水面 美图抢
微软将在华推分期付款,充值卡PC 可低价
 AMD处理器AM2测试 风扇竟运行7分钟
exeplorer.exe错误的问题的总结、解决
ASP.NET 2.0 中的异步页功能应用
硬盘坏道修复及数据恢复宝典
免费登录搜索引擎入口大全
搜索引擎注册九大秘法
小心摄像头成为黑客偷窥你的眼睛
内存混插常见问题和解决方法
Office2007简体中文版浮出水面 美图抢
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights © 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息