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 nullresultDocument.

我想知道这是否是正确的方法?有谁知道为什么这不起作用?我知道在 Django 端有不同的方法可以解决这个问题,但我宁愿保留格式化客户端。

如有任何帮助,我们将不胜感激!

{{ log }} 插入 escaped html,而不是原始的。所以 $('#logbuffer').innerHTML returns

&lt;?xml ... ?&gt;
&lt;?xml-stylesheet type=&quot;text/xsl&quot; ... ?&gt;
and so on...

您必须将 log 变量标记为安全:

{{ log|safe }}