从 XML 内容生成静态 HTML 站点

Posted

技术标签:

【中文标题】从 XML 内容生成静态 HTML 站点【英文标题】:Producing a static HTML site from XML content 【发布时间】:2011-02-20 11:42:11 【问题描述】:

我有一个较长的 XML 文档,我需要从中生成静态 html 页面(通过 CD 分发)。我知道(在不同程度上)javascriptphp 和 Python。我考虑过的当前选项列在这里:

我不排除 JavaScript,因此一种选择是使用 ajax 将 XML 内容动态加载到 HTML 页面中。 编辑:我会为这个选项使用 jQuery。

学习一些基本的 XSLT 并以这种方式生成符合正确规范的 HTML。

用PHP(例如)生成站点,然后生成静态站点。

编写一个脚本(例如在 Python 中)将 XML 转换为 HTML。这类似于 XSLT 选项,但无需学习 XSLT。

有用的信息:

XML 可能会在某个时候发生变化,因此我希望能够轻松地重新生成站点。

我必须制作某种菜单来在文档中跳转(所以我需要制作某种内容索引)。

我想知道是否有人有我没有想到的更好的想法。如果不是,我希望你告诉我,我的哪个选项似乎最明智。我想我知道我要做什么,但我想要第二个意见。谢谢。

【问题讨论】:

【参考方案1】:

我认为 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>  

【讨论】:

感谢 Steven(和 Lucero)。我想我会使用 XSLT,我会在完成后报告!如果一切不顺利,我保留撤回我接受的答案的权利:)【参考方案2】:

如果需要,我会使用 XSLT 选项,通过参数控制以从相同的 XML 源生成不同的页面。它确实是用于 XML 转换的工具。

【讨论】:

我不确定 XSLT 的唯一原因是因为它是一种我以前从未使用过的语言。不过我很高兴学习。 如果您以前做过一些函数式/声明式编程,我想您很快就会对 XSLT 感到宾至如归。【参考方案3】:

我会选择 PHP 选项。原因是当 XML 更改时,您的网站内容“应该”自动更改,而无需您修改 PHP 代码。

创建一个 Python 脚本来生成大量静态页面对我来说似乎是个坏主意,而且使用 javascript 你会遇到跨浏览器的问题(除非你可能正在使用框架)。

为这类任务使用服务器端语言,这就是它们的目的。

【讨论】:

问题是,它是在 CD 上分发的,所以我仍然需要重新生成静态页面。另外,如果我走 JS 路线,我将使用 jQuery。 网站是否分发购买CD?换句话说,人们会从 CD-ROM 运行这个网站吗? 在这种情况下,PHP 和服务器端语言都已淘汰。最好的方法可能是 Python 恕我直言,除非您非常了解 XSLT。 我知道你不能从 CD 运行 PHP!这就是我要从动态 PHP 站点生成静态站点的原因。【参考方案4】:

选择你最喜欢的。

如果它很简单,您可以使用(例如)php 生成页面,然后使用命令行脚本(在 python 或 php 中)为您创建缓存文件。

【讨论】:

以上是关于从 XML 内容生成静态 HTML 站点的主要内容,如果未能解决你的问题,请参考以下文章

Next.Js 使用无头 CMS 资产生成静态站点

用于静态站点的RSS

使用 Django 模板系统或静态站点生成器构建 HTML 文件?

ReactJS静态站点生成器Gatsby

站点页面静态化具体解释

基于Gatsby的React静态化实践