XSLT适用于IE浏览器,但其他地方不适用

问题描述:

我在各地都看到过这个问题的变种,但没有一个提供的解决方案似乎有效。这意味着我的代码/设置中可能还有其他问题,我看不到。XSLT适用于IE浏览器,但其他地方不适用

我试图为一个亲戚做一个网站,而且我遇到了XSLT样式表的麻烦。它似乎没有在Chrome或Firefox中做任何事情,但它在IE10中工作得很好。这是什么,但不是我所追求的。

该网站设置在IIS 10中,我可以使用本地URL浏览到它。

XML是从存储过程中建,称为C#:

private void buildXML() 
    { 
     con = new SqlConnection("server=DESKTOP-[SERVERNAME]; database= local; persist security info=True; Integrated Security=SSPI;"); 
     cmd = new SqlCommand("dbo.setIndexXMLData", con); 
     cmd.CommandType = CommandType.StoredProcedure; 
     con.Open(); 
     string xmlPrefix = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><?xml-stylesheet type=\"text/xml\" href=\"/XSLT/Index.xslt\"?>"; 
     xRead = cmd.ExecuteXmlReader(); 
     xRead.Read(); 
     xmlPrefix += Environment.NewLine + xRead.ReadOuterXml(); 
     pXml.LoadXml(xmlPrefix); 
     Response.Write(pXml.OuterXml); 


     // Define the contents of the XML control 
     xDoc.DocumentContent = xmlPrefix; 
     // Specify the XSL file to be used for transformation. 
     xDoc.TransformSource = Server.MapPath("/XSLT/Index.xslt"); 

    } 

生成此XML:

<?xml version="1.0" encoding="utf-8" ?> 
<?xml-stylesheet type="text/xml" href="/XSLT/Index.xslt"?> 
<Site> 
    <MENU> 
    <SiteMenu Title="[sitename]" Linkpath="/default.aspx" displayOrder="0" /> 
    <SiteMenu Title="Infomation" Linkpath="/information.aspx" displayOrder="1" /> 
    <SiteMenu Title="News" Linkpath="/news.aspx" displayOrder="2" /> 
    <SiteMenu Title="Menu" Linkpath="/menu.aspx" displayOrder="3" /> 
    <SiteMenu Title="Gallery" Linkpath="/gallery.aspx" displayOrder="4" /> 
    <SiteMenu Title="Contact" Linkpath="/contact.aspx" displayOrder="5" /> 
    <SiteMenu Title="Catering" Linkpath="/catering.aspx" displayOrder="6" /> 
    </MENU> 
    <SLIDES> 
    <SlideShow imgPath="/20160806_182949.jpg" displayOrder="1" /> 
    <SlideShow imgPath="/20160901_193700.jpg" displayOrder="2" /> 
    <SlideShow imgPath="/14202562_319650221718312_9092982335636542049_n.jpg" displayOrder="3" /> 
    <SlideShow imgPath="/14237745_319766348373366_7639011255502415884_n.jpg" displayOrder="4" /> 
    </SLIDES> 
</Site> 

它应该与此XSLT转化,但它似乎没有到负荷:

<?xml version='1.0'?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"> 
    <xsl:output method='xhtml' indent='yes' doctype-public='"-//W3C//DTD XHTML Basic 1.1//EN"' doctype-system='"http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"'/> 
    <xsl:template match="/"> 

    <html xmlns="http://www.w3.org/1999/xhtml"> 
     <head runat="server"> 
     <title>WEBSITE NAME</title> 
     <link rel="stylesheet" runat="server" href="Assets/styles.css" /> 
     <script src="/Assets/jquery-3.1.0.min.js"></script> 
     <script type="text/javascript" src="/Assets/scripts.js"></script> 
     <link rel="icon" href="favicon.ico" type="image/x-icon"/> 
     <link href="https://fonts.googleapis.com/css?family=Lora:700" rel="stylesheet"/> 
     </head> 
     <body> 
[VARIOUS DIVS AND FOR-EACH LOOPS FOR MAKING A COUPLE OF MENUS] 
     </body> 
    </html> 

这一切都导致页面加载在Internet Explorer只是花花公子(但是,有单独的CSS问题,我真的不关心),但在Firefox和Chrome浏览器中,我留下了一个空白的白页,开发工具中提供了XML(但没有任何html,只是没有样式的XML)

我敢肯定我错过了一件简单的事情,现在该怎么办?

+1

这看起来像一个傻瓜,虽然我不能肯定的形式。你可以检查[此解决方案](http://*.com/a/1976417/14357)并告诉我它是否适用。 – spender

+0

不幸的是,这并没有改变任何东西。我改变了C#方法的这一行:'string xmlPrefix =“”;' – Wompguinea

+0

Firefox或Chrome的开发人员控制台是否未指出有关失败的错误消息?我在你的文章中看到了两个奇怪的问题,'xsl:output method ='xhtml''在XSLT 1.0中不存在,所以我会期待一个与此相关的错误,并建议使用'method =“xml”'如果你想生成XHTML或'method =“html”'如果你想生成HTML(4或5,这似乎更适合这些天)。 –

我认为这个问题可能是

type="text/xml" 

即工作可靠是

type="text/xsl" 
+0

嘿,谢谢你的回答,但我必须错过别的东西,因为不幸的是,这并没有改变任何东西。 – Wompguinea

+0

你是从文件加载:URI还是http:URI?可能存在跨站点脚本规则。此外,HTTP响应中的媒体类型可能是相关的(通常,IE在其他浏览器使用HTTP媒体类型的URI中使用文件扩展名)。我希望在开发者控制台失败时看到一些东西。 –