您现在的位置: 军旅同心-旅游自驾-军旅文学 >> 读书赏析 >> 学习园地 >> 电脑网络 >> 技术文章 >> 正文
将html源代码规范化,转换成XSL代码的asp工具
作者:采集员 文章来源:来源于网络 点击数: 更新时间:2005-9-10 13:28:37
0000">
    <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>&nbsp;</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值的多个函数---------【保留】----结束
'''''''''''''''''''''''''''''''''''''''''''''
%>

上一页  [1] [2] 


更多
免责声明:作品版权归所属媒体与作者所有!!本站刊载此文不代表同意其说法或描述,仅为提供更多信息。如果您认为我们侵犯了您的版权,请告知!本站立即删除。有异议请联系我们。
文章录入:烟灰缸    责任编辑:烟灰缸 
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 网站地图 | 版权申明 | 网站公告 | 管理登录 |