文/ XML:从数据调用XSLT文件(Call XSLT file from data:text/x

2019-10-28 14:05发布

有一个愉快的一天每个人都

我试图从我使用的数据渲染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或新选项卡选项)。

任何帮助请,谢谢。

Answer 1:

由于这是客户端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转换。



文章来源: Call XSLT file from data:text/xml