XML 在 DIV 中呈现
XML Rendering in DIV
在崩溃统计网站上工作时,我遇到了以下情况。
我安装了一个 Django 运行 作为我们的崩溃统计网站,它提供动态网页,我需要它来显示(以及其他信息)我们应用程序用户上传的崩溃日志之一。这些日志在XML中,大致构成如下:
<?xml ... ?>
<?xml-stylesheet type="text/xsl" ... ?>
...
<RunTimeLog>
<xsl:stylesheet id="stylesheet" version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="xsl:stylesheet"/>
<xsl:template match="/RunTimeLog">
<html>
<head>
<style type="text/css">
... some styling code ...
</style>
<script language="javascript">
... some dynamics code ...
</script>
</head>
<body>
... some HTML, XSL and JS for the page layout ...
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<LogHeader>
...
</LogHeader>
<LogEvents>
...
</LogEvents>
</RunTimeLog>
现在,如您所见,这包括在一个文件中呈现日志文件所需的一切(因为我们希望日志易于分发和阅读)。这段代码很有魅力,当在浏览器中打开 XML 时,会出现一个格式正确的日志。现在我尝试使用以下 Django 模板在不同的页面中呈现它:
<html>
<head>
... import JQuery and other awesome stuff ...
</head>
<body>
<div id="log">
</div>
<div id="logbuffer">
{{ log }} <!-- Django inserts the raw XML in here... -->
</div>
<script>
xsltProcessor = new XSLTProcessor();
resultDocument = xsltProcessor.transformToFragment($('#logbuffer').innerHTML, document);
$('log').append(resultDocument);
</script>
</body>
</html>
现在,这不起作用...日志缓冲区 div 确实按预期显示原始 XML,但格式化不起作用,脚本中的第二行 returns null 到 resultDocument.
我想知道这是否是正确的方法?有谁知道为什么这不起作用?我知道在 Django 端有不同的方法可以解决这个问题,但我宁愿保留格式化客户端。
如有任何帮助,我们将不胜感激!
{{ log }}
插入 escaped html,而不是原始的。所以 $('#logbuffer').innerHTML
returns
<?xml ... ?>
<?xml-stylesheet type="text/xsl" ... ?>
and so on...
您必须将 log
变量标记为安全:
{{ log|safe }}
在崩溃统计网站上工作时,我遇到了以下情况。
我安装了一个 Django 运行 作为我们的崩溃统计网站,它提供动态网页,我需要它来显示(以及其他信息)我们应用程序用户上传的崩溃日志之一。这些日志在XML中,大致构成如下:
<?xml ... ?>
<?xml-stylesheet type="text/xsl" ... ?>
...
<RunTimeLog>
<xsl:stylesheet id="stylesheet" version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="xsl:stylesheet"/>
<xsl:template match="/RunTimeLog">
<html>
<head>
<style type="text/css">
... some styling code ...
</style>
<script language="javascript">
... some dynamics code ...
</script>
</head>
<body>
... some HTML, XSL and JS for the page layout ...
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<LogHeader>
...
</LogHeader>
<LogEvents>
...
</LogEvents>
</RunTimeLog>
现在,如您所见,这包括在一个文件中呈现日志文件所需的一切(因为我们希望日志易于分发和阅读)。这段代码很有魅力,当在浏览器中打开 XML 时,会出现一个格式正确的日志。现在我尝试使用以下 Django 模板在不同的页面中呈现它:
<html>
<head>
... import JQuery and other awesome stuff ...
</head>
<body>
<div id="log">
</div>
<div id="logbuffer">
{{ log }} <!-- Django inserts the raw XML in here... -->
</div>
<script>
xsltProcessor = new XSLTProcessor();
resultDocument = xsltProcessor.transformToFragment($('#logbuffer').innerHTML, document);
$('log').append(resultDocument);
</script>
</body>
</html>
现在,这不起作用...日志缓冲区 div 确实按预期显示原始 XML,但格式化不起作用,脚本中的第二行 returns null 到 resultDocument.
我想知道这是否是正确的方法?有谁知道为什么这不起作用?我知道在 Django 端有不同的方法可以解决这个问题,但我宁愿保留格式化客户端。
如有任何帮助,我们将不胜感激!
{{ log }}
插入 escaped html,而不是原始的。所以 $('#logbuffer').innerHTML
returns
<?xml ... ?>
<?xml-stylesheet type="text/xsl" ... ?>
and so on...
您必须将 log
变量标记为安全:
{{ log|safe }}