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,还有很多需要去了解。