即时将 XML 转换为 HTML,并添加 JavaScript 事件?

Posted

技术标签:

【中文标题】即时将 XML 转换为 HTML,并添加 JavaScript 事件?【英文标题】:Transforming XML to HTML on the fly, and adding JavaScript events? 【发布时间】:2013-08-07 10:10:12 【问题描述】:

我正在运行一个 Django 站点,其 XML 文本存储在 TextField 属性中。它被存储为 XML 而不是纯文本,因为它带有大量关于底层手稿的信息,例如缩写和符号。这是一个例子:

class Entry(models.Model):
  # Name and description. 
  chapter = models.ForeignKey(Chapter)
  latin_text = models.TextField()

下面是latin_text的内容示例:

<initial type="2">I</initial>n <place type="0"><span>Ricmond</span></place> 
ten<abbr type="1">et</abbr> aeccl<abbr type="0">esi</abbr>a
de Cietriz .ii. hid<abbr type="0">as</abbr>. 

我现在想开始在我的 html 页面上显示 XML 文本。

我知道我可以通过将原始 XML 放到 textarea 中来显示它:问题是我想以更漂亮的方式显示它:

样式(所有abbr 元素以斜体显示,place 元素以粗体显示) 让用户浏览缩写的 javascript 事件(当用户将鼠标悬停在 abbrplace 上时,显示弹出说明)

我不确定 XSLT 是否可以满足我的需要,或者是否可以与 HTML 一起使用。所以我的问题是:

在将 XML 添加到 Django 数据库之前,是否应该将其转换为 HTML? 或者我可以使用 XSLT 或 JavaScript 即时完成所有我需要的渲染吗?

【问题讨论】:

【参考方案1】:

我会使用 xslt 对其进行转换,然后使用 javascript 以编程方式附加事件。它是数据,事先转换它可以防止你以后以不同的方式解释它。 Html 应该只是布局并与数据分开。您可以使用 Javascript 翻译它,但这对客户端来说会很密集。 Xslt 和 css 会更干净,并且在 js 中附加事件是轻量级的。

不熟悉 Django,但不妨看看这个答案:Can I use XSLT in Django?

【讨论】:

谢谢 - 为了清楚起见,我可以在 HTML 页面中使用 XSLT 吗? (一直在谷歌搜索,但找不到这个问题的明确答案。) 澄清一点...我有一堆现有的 Django HTML 模板。我可以在其中嵌入 XML/XSLT 吗?还是我需要将它们全部重写为 XHTML? 我不熟悉 Django,但可能有很多方法可以做到。最简单的似乎是我添加到答案中的链接。【参考方案2】:

是的,XSLT 可以满足您的所有需求,并且像您一样存储 XML 的人大量使用 XSLT。这就是 XHTML 出现的原因和方式。适用于那些以 XML 格式存储数据和文本但希望将其呈现给 Web 浏览器的用户。

一旦您拥有 (X)HTML 形式,添加和使用 javascript 也没有什么不同。

【讨论】:

以上是关于即时将 XML 转换为 HTML,并添加 JavaScript 事件?的主要内容,如果未能解决你的问题,请参考以下文章

将字符串转换为即时

java将字符串转换为xml并解析节点[重复]

Java将XML类型的文本转换为JSON

如何将 Android APK 转换为 Java 和 XML 文件? [复制]

XStream将XML转换为JAVA对象快速指南

Java下利用xslt将xml文件转换为HTML文件,以下是我写的代码,求大神调通