即时将 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 事件(当用户将鼠标悬停在 abbr
或 place
上时,显示弹出说明)
我不确定 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 事件?的主要内容,如果未能解决你的问题,请参考以下文章