频道直达 - 学院 - 下载 - 交易 - 特效 - 字库 - 手册 -排名-工具- 繁體
网页教学网站开发 设为首页
加入收藏
联系我们
建站搜索: 常用广告代码   用户注册 | 用户登陆
您当前的位置:中国建站之家 -> 网站开发设计技术教程 -> HTML/CSS/DIV+CSS教程 -> 用Perl验证HTML代码

用Perl验证HTML代码

作者:未知  来源:www.jz123.cn  发布时间:2007-9-20 11:13:22  发布人:圈圈

减小字体 增大字体

在Perl中编码时,代码中的错误相当明显——解析器会将所有错误信息都显示在屏幕上,向你警告出现的问题,并让你立即采取措施进行更正。如果你在开发HTML页面,就不存在这样的早期警告系统——标记中出现的任何错误都被浏览器所忽略。更糟糕的是,一些浏览器甚至试图“自动”更正常见的标记错误,给这个过程带来许多新问题。

最简单的解决方案是在应用HTML之前对它进行检测(或“验证”)。这时就要用到一个称为HTML::Lint的有用CPAN模块。这个Perl模块建立在人们所熟知的HTML::Parser模块之上,旨在对标记进行检验,看其是否符合W3C标准,并指出可能使它“中断”或在客户浏览器中无法编译的错误。

本文探讨了HTML::Lint的一些功能,用它来检验HTML页面并显示发现的错误。首先,在Perl提示符下运行下列命令,下载并安装此模块(如果你还没有这个模块的话)。

perl> perl -MCPAN -e "install HTML::Lint"

Linting Files

安装模块后,建立并保存下面的HTML文件(保存为abc.html):

<html>

<head></head>

A is for apple, B is for baby

</body>

</html>

如你所见,此文件中有一个有意的错误——开头缺少<body>标签。这个错误在这里相当明显;但如果文件更大更复杂的话,就更难发觉缺少这样的标签。这就是为什么下一步要编写一些Perl代码,用HTML::Lint来探测这个错误。

建立并保存下列的脚本(保存为linter.pl):

#!/usr/bin/perl

# initialize linter

use HTML::Lint;

$lint = HTML::Lint->new();

# parse file

$lint->parse_file("abc.html") or die("Cannot find file!");

# check for errors

($lint->err) ? print "Your code stinks!" : print "Your code rocks!";

这个过程相当简单:这段脚本初始化一个HTML::Lint对象,然后应用对象的parse_file()方法来解析前面建立的HTML文件。检测到的错误(如果存在的话)被存储在@err数组中,并向控制台显示一个错误信息。

以下是你看到的输出结果:

shell> ./linter.plYour code stinks!

当然,如果你有大量的文件要进行验证的话,这段代码就有点不切实际。在那种情况下,你可能想在运行时向脚本提交HTML文件名及路径,而不是把它硬编码到脚本中。列表A是前面脚本的修订版,正好可完成这一工作。

列表A

#!/usr/bin/perl

# read file name from command line

if (!$ARGV[0]) { die ("ERROR: No file name provided"); }

# initialize linter

use HTML::Lint;

$lint = HTML::Lint->new();

# parse file

$lint->parse_file($ARGV[0]) or die("ERROR: Cannot find file");

# check for errors

($lint->err) ? print "Your code stinks! " : print "Your code rocks! ";

# print error count

print "Errors found: ", scalar($lint->err);

在这种情况下,脚本认为一个文件路径是它的第一个引数,并将其保存在特殊的Perl @ARGV数组中。然后,脚本寻找这个文件,将它解析,并根据发现错误与否显示一条信息。脚本的最后一行是新的:它根据HTML::Lint@err错误数组的大小,显示由解析器发现的错误数目。

下面的代码是应用过程:

shell> ./linter.pl /tmp/abc.html

Your code stinks!

Errors found: 1

Handling errors

现在我们清楚了HTML::Lint如何在代码中发现错误,但还有一个问题——显示代码中出现的错误是好的,但对于诊断问题并没有多大帮助。你真正希望得到的是详细的错误信息,它说明错误的本质以及错误发生的行号。

幸运的是,HTML::Lint将这一信息存储在@err数组中,提取并显示它也很容易。下一个样本(列表B)以上一个样本为基础,显示了更为详尽的信息。

列表B

#!/usr/bin/perl

# read file name from command line

if (!$ARGV[0]) { die ("ERROR: No file name provided"); }

# initialize linter

use HTML::Lint;

$lint = HTML::Lint->new();

# parse file

$lint->parse_file($ARGV[0]) or die("ERROR: Cannot find file");

# check for errors

($lint->err) ? print "Your code stinks! " : print "Your code rocks! ";

# print detailed error list

foreach $e ($lint->err) {

?print $e->where(), ": ", $e->errtext() , " ";

}

在这种情况下,@err数组由一个foreach()循环处理。每个单独的错误对象被提取出来,其位置和详细的错误信息用对象的where()errtext()方法显示出来。

这里是一个可能的例子:

shell> ./linter.pl /tmp/abc.html

Your code stinks!

(4:1): </body> with no opening <body>

当然,你可以对上面的脚本进行修改,以便一次验证几个文件,将错误记录到一个日志文件中,而不用显示出来;或者过滤除最重要错误以外的所有错误。请访问HTML::Lint网页了解更多实例与其他技巧。编程快乐!


将本文收藏到QQ书签与更多好友分享
[打 印]
[] [返回上一页] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
精彩推荐
热门文章
· 注册码大全二
· 注册码大全四
· 注册码大全一
· 要10G免费网络硬盘的请进..
· 通过google 赶快来赚美金..
· 注册码大全十
· 头像-qq头像(qq新头像)4..
· 让你轻松架设FTP服务器1..
· 注册码大全三
· 梦幻背景图片7
· 卡通动物图片6
· 网页制作素材-按钮素材2..
· 让你轻松架设FTP服务器5..
· 风景图片8
· 注册码大全九
· 让你轻松架设FTP服务器2..
关注此文读者还看过
· SQL Server数据库安全规..
· ADSL用户如何防止路由器..
· 在ASP中用EasyMailObjec..
· ASP开发中存储过程应用全..
· Fireworks卡通头像:搞怪..
· 百度指Google兵败图书搜..
· GOOGLE新广告:自助分析..
· 巧用CSS制作文字变图象特..
· 快速掌握 SQL Server 的..
· 检测是否还有黑客代码的..
· 如何把ASP编写成DLL
· 学用Flash做人工降雨
· Connection对象的应用
· 全面剖析VB.NET(6)
· Flash MX 编程深层次应用..
· 网站如何获得成功?确定..
相关文章
· 利用Perl的哈希建立键-值数..
· 用perl访问mysql数据库之一..
· 用perl访问mysql数据库之二..
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 人才招聘
网站合作、内容监督、商务咨询:QQ: 9576619
Copyright ? 2005--2008 中国建站之家版权所有
粤ICP备05092265号