【发布时间】:2011-05-16 06:23:31
【问题描述】:
我有一些像这样的简单 XML:
<Tag>
<Keyphrases>
<Keyphrase Phrase = "This is phrase one"/>
<Keyphrase Phrase = "This is phrase two"/>
<Keyphrase Phrase = "This is phrase three"/>
</Keyphrases>
</Tag>
我有一个 XSLT,其中包含:
[...]
<table id="realtimetable">
<xsl:apply-templates select="Tag/Keyphrases"/>
</table>
[...]
<!-- Build KeyPhrase Rows -->
<xsl:template match="Tag/Keyphrases">
<xsl:for-each select="Keyphrase">
<tr><td>
<xsl:value-of select="@Phrase" />
</td></tr>
</xsl:for-each>
</xsl:template>
但现在我希望即时更新该表的内容。我知道我可以使用 XMLHttpRequest() 来获取新数据。
但是,我不知道这些更新使用什么格式或如何将新数据插入到表中。
我可以提供 XML 的更新。但是我可以重新使用现有的 XSLT 模板来解析它并重新填充显示的表格吗?这看起来优雅而整洁,但有可能吗?如果可以,我该怎么做?
如果这不可能,我想我可以编写 Javascript 来解析 XML 并自己更新表格。这听起来像很多繁重的工作:-(
所以我也在考虑以 JSON 格式响应 XMLHTTPRequest。我认为处理 JSON 可能比解析 XML 更容易。
但是我的 JSON 文档应该是什么样子?如何编写 JavaScript 来处理 JSON 并重新填充表格?
假设我有来自 XMLHttpRequest() 的干净(错误检查)响应,我该怎么办?
function ProcessUpdate()
{
}
我宁愿避免在这个项目中使用任何库,例如 jQuery。
更新:
感谢您的所有回复。一些cmets和澄清:
-
此时避免使用 jQuery 等的原因是...... a) 这个项目已经有很多其他依赖项,我正试图限制老鼠巢的增长。 b) 我倾向于用自下而上的方法更有效地学习新东西。当我了解了较低级别的原子操作后,使用高级库为我完成繁重的工作会感觉更自在。
-
有问题的表非常小而且简单。因此,我倾向于在每次更新时从头开始重新创建整个表。确实没有必要处理选择性更新的复杂性。
-
Dimitre:您的 XSL 看起来很吸引人,我一定会花一些时间来消化它。但是,我(根本)不明白的是如何调用此更新。即如何从 JavaScript 触发这种重新转换?
【问题讨论】:
-
为什么你更喜欢自己写东西而不是使用 jQuery?你有什么反对意见 - 依赖关系、规模、缺乏熟悉度等?
-
我不明白这个链条。假设一个原始 XML 文档。这将使用您的 XSLT 样式表进行转换,从而生成一个 XHTML 表。现在,新请求的 XML 文档会包含以前和更新的数据还是仅包含更新的数据?
-
好问题,+1。有关完整且自然的 XSLT 解决方案,请参阅我的答案。 :)
标签: javascript xml json xslt xmlhttprequest