html tidy的一次运用

1、html转换成Xhtml,首先,我们为什么要转换呢?相信都知道,html语法不严格,语义集不能扩充等弊病。xhtml就解决这个问题。我们写html可以很随便,但是浏览器也能够识别。但是对于需要其他作用的我们,这样的格式肯定不行。比如建立DOM树,杂乱的html怎么可以呢。这时候我们需要进行处理。这也是我们这一次讨论的主题。

还有很多xhtml与html以及xml 的一些区别和联系。网上很多,也有很多书在讲解这个xml。都可以看看。


2、简单的一个tidy.exe

具体的可以参见:http://www.w3cn.org/resource/down/2004/48.html

我下载了一个tidy.exe。只有这么一个文件,其他什么都没有,然后,双击是没有用的,必须在cmd下面运行。然后我建了一个index.html,

<html>
<title>..
<body>
I like you!
</html>
可以看出,我所写的这个html是相当的不规范的。

输入转换命令:tidy -asxhtml index.html -big5 index.html 

结果如下:

可以看出来,完全转换成了标准的格式xhtml,而且xhtml是xml文件,它的头是以<?xml version="1.0",encoding="big5"?>

有这样的工具,还是真的不错。


3、程序测试

首先需要下载一些文件

下载地址:http://download.csdn.net/detail/silyt/300640

有一些文件

然后,在vs2010,我开始编写程序运行,这是一个test。在tidy.h有这个例子,被标注了但是。我添加了加入库文件,还有在项目里面加上一些库文件等等。

代码如下:

#include "include/tidy.h"  
#include "include/buffio.h"
#include <stdio.h>
#include <errno.h>

#pragma   comment(lib, "tidy.lib ")

int main(int argc, char **argv )
{
	const char* input = "<title>Foo</title><p>Foo!";
	TidyBuffer output = {0};
	TidyBuffer errbuf = {0};
	int rc = -1;
	Bool ok;

	TidyDoc tdoc = tidyCreate();                     // Initialize "document"
	printf( "Tidying:\t%s\n", input );

	ok = tidyOptSetBool( tdoc, TidyXhtmlOut, yes );  // Convert to XHTML
	if ( ok )
		rc = tidySetErrorBuffer( tdoc, &errbuf );      // Capture diagnostics
	if ( rc >= 0 )
		rc = tidyParseString( tdoc, input );           // Parse the input
	if ( rc >= 0 )
		rc = tidyCleanAndRepair( tdoc );               // Tidy it up!
	if ( rc >= 0 )
		rc = tidyRunDiagnostics( tdoc );               // Kvetch
	if ( rc > 1 )                                    // If error, force output.
		rc = ( tidyOptSetBool(tdoc, TidyForceOutput, yes) ? rc : -1 );
	if ( rc >= 0 )
		rc = tidySaveBuffer( tdoc, &output );          // Pretty Print

	if ( rc >= 0 )
	{
		if ( rc > 0 )
			printf( "\nDiagnostics:\n\n%s", errbuf.bp );
		printf( "\nAnd here is the result:\n\n%s", output.bp );
	}
	else
		printf( "A severe error (%d) occurred.\n", rc );

	tidyBufFree( &output );
	tidyBufFree( &errbuf );
	tidyRelease( tdoc );
	return rc;
}
运行成功。

结果如下:

转换之后的文件明显少了一点,就是头文件,不像第二项里面开始是以xml声明开始的。这个函数还是有问题,那么我们可以自己加上这个头。比如上面的头文件。


4、总结

html转化成xhtml,还有很多需要去了解。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值