动态地将XML转换为HTML,并添加JavaScript事件?

时间:2013-08-07 10:10:13

标签: javascript html xml html5 xslt

我正在运行一个存储在TextField属性中的XML文本的Django站点。它存储为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来显示原始XML:问题是我希望以更漂亮的方式显示它,并使用:

  • 样式(斜体中的所有abbr元素,粗体中的place元素)
  • 允许用户浏览缩写的JavaScript事件(当用户将鼠标悬停在abbrplace上时,会显示弹出式解释)

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

  • 在将XML添加到Django数据库之前,我应该将XML转换为HTML吗?
  • 或者我可以使用XSLT或JavaScript动态完成所需的渲染吗?

2 个答案:

答案 0 :(得分:0)

是的,XSLT会做你想做的一切,并且像你一样存储XML的人会大量使用它。这就是为什么以及如何成为XHTML的原因。对于那些以XML格式存储数据和文本但希望将其呈现给Web浏览器的人。

一旦你有了(X)HTML表单,添加和使用javascript就没有什么不同了。

答案 1 :(得分:0)

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

不熟悉Django,但也许可以查看这个答案:Can I use XSLT in Django?