有一个愉快的一天每个人都
我试图从我使用的数据渲染XML调用XSLT文件:文本/ XML,从静止获得。 最基本的企图就是利用这行代码:
window.open( 'data:text/xml,' + encodeURIComponent( responseData ) );
我的另一个尝试是在模式iframe中打开它(与角料)的设置与XML数据的SRC,这两个测试打开XML的URL,但与此错误:
错误加载样式表:未知错误(805303f4)
我已经在Firefox和Chrome测试,而Chrome是在控制台中的错误细节更加清晰:
不安全试图从 框架 加载URL 路径- xsl.xsl 与URL 数据:文本/ XML,... 域,协议和端口必须匹配。
我试图使用绝对路径样式表,包括相同的协议,域等,但错误仍存在(无论是在iframe或新选项卡选项)。
任何帮助请,谢谢。
由于这是客户端JavaScript的Web浏览器,如Firefox或Chrome里面我会建议使用XSLTProcessor
执行XSLT转换,您可以使用XSLT样式表拉XMLHttpRequest
,解析您的responseData
使用DOMParser
,然后你可以使用XSLTProcessor
的转型。
我不认为你会得到执行中引用的XSLT的浏览器data
URL,除非XSLT嵌入自己的数据:
var encodedXslt = 'data:application/xml,' + encodeURIComponent(document.getElementById('xslt').textContent); var xmlCode = document.getElementById('xml').textContent; var pi = '<?xml-stylesheet type="text/xsl" href="' + encodedXslt + '"?>'; var encodedXml = 'data:application/xml,' + encodeURIComponent(pi + xmlCode); window.frames.xmlDisplay.location.href = encodedXml;
<script id="xslt" type="application/xml+xslt"> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" indent="yes"/> <xsl:template match="list"> <ul> <xsl:apply-templates/> </ul> </xsl:template> <xsl:template match="item"> <li> <xsl:apply-templates/> </li> </xsl:template> </xsl:stylesheet> </script> <script id="xml" type="application/xml"> <list> <item>foo</item> <item>bar</item> </list> </script> <iframe name="xmlDisplay" width="100%" height="300"></iframe>
然而,似乎只有Mozilla的燕子是尝试并应用XSLT,铬继续抱怨不安全的尝试。 所以我觉得这是更好,更容易移植到执行,你必须输入一个JavaScript字符串与XSLTProcessor中任何XSLT转换。