从XML内容生成静态HTML网站
我有一份很长的XML文档,我需要把它变成静态的HTML页面(准备通过光盘分发)。我对JavaScript、PHP和Python都有一定了解。目前我考虑的选项有:
我不排除使用JavaScript,所以一个选择是用ajax动态加载XML内容到HTML页面中。补充:我会用jQuery来实现这个选项。
学习一些基本的XSLT,然后用这种方式生成符合规范的HTML。
用PHP(比如说)来制作网站,然后生成一个静态网站。
写一个脚本(比如用Python)把XML转换成HTML。这和XSLT的选项类似,但不需要学习XSLT。
一些有用的信息:
XML可能会在某个时候发生变化,所以我希望能够轻松地重新生成网站。
我需要制作某种菜单,以便在文档中跳转(所以我需要制作某种内容索引)。
我想知道有没有人有更好的想法是我没有想到的。如果没有的话,我希望你告诉我哪个选项看起来最合理。我觉得我知道该怎么做,但我想听听第二个意见。谢谢。
4 个回答
我建议使用PHP。原因是,当XML文件发生变化时,你的网站内容“应该”会自动更新,这样你就不需要去修改PHP代码了。
我觉得用Python脚本生成很多静态页面并不是个好主意,而且如果用JavaScript的话,你可能会遇到不同浏览器之间的兼容问题(除非你使用某个框架)。
对于这种任务,最好还是使用服务器端语言,因为它们就是为这个目的而设计的。
我会选择使用XSLT这个工具,通过参数来控制,如果需要的话,可以从同一个XML源生成不同的页面。这个工具就是专门用来处理XML转换的。
我觉得XSLT绝对是最简单、最好的方法——即使你需要学习XSLT。
XSLT编程有几种风格,但最简单的是“推式处理”,也就是你写几个模板,来描述你的XML输入是如何转换成HTML输出的。然后你再写一个根模板,它负责输出基本的HTML框架,并调用其他模板。根模板是最简单的:
<xsl:template match="/" > <!-- "/" matches the document root -->
<html> <!-- whatever is not in xsl: namespace is template output -->
<head><title>...</title></head>
<body>
<xsl:apply-templates /> <!-- this searches for and calls additional template matches -->
</body>
</html>
</xsl:template>