用 HTML Tidy 将 HTML 转换成 XML
来源:互联网 发布:凯里欧文生涯数据 编辑:程序博客网 时间:2024/06/05 04:38
HTML.4.01 的版本之一,已经符合 XML 的语法。词汇表没有变化(XHTML 使用的也是您所熟悉的标记,如
清单 2. index.xml (节选)
清单 3. index-transform.xml (节选)
清单 4. cleanup.xsl
<p>、
<b>
、和 <a>
),但是语法却是 XML 的,因此可以很好地融入 XML 的处理流程之中。HTML 和 XHTML 之间的主要区别在于:
- XML 元素必须有开始和结束标记,而 HTML 对于很多元素都不要求有结束标记,如
当
<p>
是空元素的时候就不要求使用结束标记。 - 空元素遵循 XML 的规范。比如说,换行符写为
<br />
,而不是<br>
。 - 属性值一定要用引号引起来(比如说,要写成
<a href="http://www.marchal.com">
,而不能写成<a href=http://www.marchal.com>
)。
清单 2 是 HTML Tidy 对清单 1 所示的输入数据处理得到的文件。从中您可以看到,这是一个合法的 XML 文档,而且,为了生成它所做的工作是很少的。
清单 2. index.xml (节选)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="generator" content="HTML Tidy for Mac OS X (vers 1st June 2003), see www.w3.org" /><title>Journey to Windsor</title></head><body><table><tr><td width="15"></td><td><font size="3" face="Helvetica">Journey to Windsor<br />Benoît Marchal<br />July 2003<br /><br /><a href="mailto:bmarchal@pineapplesoft.com">bmarchal@pineapplesoft.com</a></font></td></tr></table><center><table border="3"><tr><td><a href="pages/dscn0824.html"><img src="thumbnails/dscn0824.jpg" border="0" alt="dscn0824" /></a><br /><font size="3" face="Helvetica">dscn0824.jpg<br />A bright, red mailbox inside the castle. It seems oddly familiar inan historic setting.<br />Windsor Castle<br />© 2003, Benoît Marchal</font></td></tr></table></center></body></html>
要是您觉得 XHTML 的词汇看起来不舒服,那该怎么办呢?请您接着往下读。
回页首
更进一步处理
XHTML 文档是有效的 XML 文档,因此您可以将它们加入到 XML 的处理流程中。更确切地说,您可以用常规的 XML 工具(如 XSL、解析器,等等)再对这些文件进行处理。
事实上我并不是非常喜欢这个例子中用到的 XHTML 词汇表。因为 XHTML 是用于发布的词汇表,因此结构性很差,我希望通过清单 3 中所示的那种 XML 词汇表来维护我的照片库(这个词汇表最早是在我的技巧文章Divide and conquer large XML documents中介绍的)。为了阐明 XML 处理过程,我编写了一个简单的 XSL 样式表(见 清单 4),它可以从 XHTML 文档中获取标题、文件名、日期以及描述信息。这个样式表生成了一个更加结构化的文档,使得我们处理起来更加方便。
清单 3. index-transform.xml (节选)
<?xml version="1.0" encoding="MacRoman"?><gl:gallery xmlns:gl="http://ananas.org/2003/tips/gallery"><gl:title>Journey to Windsor</gl:title><gl:photo><gl:title>Windsor Castle</gl:title><gl:date>July 2003</gl:date><gl:image>dscn0824.jpg</gl:image><gl:description>A bright, red mailbox inside the castle. It seems oddly familiar in an historic setting.</gl:description></gl:photo></gl:gallery>
清单 4. cleanup.xsl
<?xml version="1.0"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:gl="http://ananas.org/2003/tips/gallery" xmlns:html="http://www.w3.org/1999/xhtml" exclude-result-prefixes="html"><xsl:output method="xml" indent="yes" encoding="MacRoman"/><xsl:template match="html:html"> <xsl:variable name="date" select="html:body/html:table/html:tr/html:td[2] /html:font/html:br[3] /preceding-sibling::text()[1]"/> <gl:gallery> <gl:title> <xsl:value-of select="html:head/html:title"/> </gl:title> <xsl:for-each select="html:body/html:center/html:table /html:tr/html:td"> <xsl:variable name="title" select="html:font/html:br[3] /preceding-sibling::text()[1]"/> <xsl:variable name="image" select="html:font/html:br[1] /preceding-sibling::text()[1]"/> <xsl:variable name="description" select="html:font/html:br[2] /preceding-sibling::text()[1]"/> <gl:photo> <gl:title><xsl:value-of select="normalize-space($title)"/></gl:title> <gl:date><xsl:value-of select="normalize-space($date)"/></gl:date> <gl:image><xsl:value-of select="normalize-space($image)"/></gl:image> <gl:description><xsl:value-of select="normalize-space($description)"/></gl:description> </gl:photo> </xsl:for-each> </gl:gallery></xsl:template></xsl:stylesheet>
回页首
结束语
HTML Tidy 属于那种很灵巧的小工具,每一个网管的工具箱里都应该有一个。因为它可以输出 XHTML,因此对于那些使用 XML/XSL 的网管是格外有用的。至于其他的词汇表,则只是另一种样式表而已。
参考资料
- 您可以参阅本文在 developerWorks 全球站点上的 英文原文.
- 下载本文的 源代码,其中包括作者提供的照片库。
- 从 SourceForge 下载 HTML Tidy。它可以在 Windows、Linux、MacOS 以及其他一些平台上运行。同一个网站上还有它的图形化界面以及开发库,这有助于您将其嵌入处理流程中。您还可以下载到 Java 语言版的JTidy。
- 请访问 Dave Raggett's Web site,这里是 HTML Tidy 最初的家,上面有大量的信息。
- 请阅读 Benoit Marchal 的 利用 XML 进行 Web 发布的基础知识 (developerWorks,2003 年 7 月),文中循序渐进地讲述了用 XML 和 XSL 进行 Web 发布的方法。
- 本文作者在 对大型 XML 文档分而治之一文介绍了如何用样式表发布在线图库(developerWorks,2003 年 6 月)
- W3C 的 HTML 主页上有关于 XHTML 的更多信息。
- 有关 XHTML 更深入的探讨,请阅读 Nicolas Chase 撰写的文章 Web 的未来:XHTML 2.0( developerWorks,2002 年 9 月)。
- 请到 developerWorks XML 专区上查找更多的 XML 资料。要获得到目前为止的所有的 XML 技巧文章,请访问技巧专栏总结。
- IBM 的 DB2 数据库不仅支持关系数据库存储,也提供与 XML 有关的工具,比如可作为 XML 与关系系统之间桥梁的 DB2 XML Extender。要学习有关 DB2 的更多知识,请访问 DB2 开发者园地。
- 请了解如何成为一名 IBM 认证的 XML 及相关技术的开发人员。
- 用 HTML Tidy 将 HTML 转换成 XML
- 技巧: 用 HTML Tidy 将 HTML 转换成 XML
- 用 HTML Tidy 将 HTML 转换成 XML
- 技巧: 用 HTML Tidy 将 HTML 转换成 XML
- 用HTML Tidy将HTML转换为XML
- 将HTML转换成XML
- (转)将HTML转换为XHTML的开源工具HTML Tidy
- 将HTML转换为XHTML的开源工具HTML Tidy(支持gb2312)
- 将 HTML 文件转换成 XML
- xslt将xml转换成html
- 将XML转换成HTML格式
- 将 HTML 文件转换成 XML
- 将 HTML 文件转换成 XML
- 在服务器端将XML转换成HTML
- html tidy (html 格式化)
- 用java、msxml将xml转换成html
- 关于利用xstl将xml转换成xml或html
- xslt将word转换成html,xslt将xml转换成html
- 纠结的工程组
- 硬件“行话”
- c语言求时间差
- 你很棒的---自我管理方法,一生受用!!!
- 【转载】C++文件操作详解(ifstream、ofstream、fstream)
- 用 HTML Tidy 将 HTML 转换成 XML
- POJ 3349 Snowflake Snow Snowflakes
- zoj 1854 Election
- 一个页面重构工程师眼中的“用户体验” 【用户体验】
- void *指针
- cf#106(a)(mle)(在组合树节点中定义数组,内存超)
- c++ 类的大小(sizeof)
- VirtualBox增大硬盘容量(guest为Linux)
- Mysql存储过程游标加循环