2016-09-21 127 views
0

我在各地都看到過這個問題的變種,但沒有一個提供的解決方案似乎有效。這意味着我的代碼/設置中可能還有其他問題,我看不到。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://stackoverflow.com/a/1976417/14357)並告訴我它是否適用。 – spender

+0

不幸的是,這並沒有改變任何東西。我改變了C#方法的這一行:'string xmlPrefix =「<?xml version = \」1.0 \「encoding = \」utf-8 \「?><?xml-stylesheet type = \」application/xml \「href = \」/ XSLT/Index.xslt \「?>」;' – Wompguinea

+0

Firefox或Chrome的開發人員控制檯是否未指出有關失敗的錯誤消息?我在你的文章中看到了兩個奇怪的問題,'xsl:output method ='xhtml''在XSLT 1.0中不存在,所以我會期待一個與此相關的錯誤,並建議使用'method =「xml」'如果你想生成XHTML或'method =「html」'如果你想生成HTML(4或5,這似乎更適合這些天)。 –

回答

0

我認爲這個問題可能是

type="text/xml" 

即工作可靠是

type="text/xsl" 
+0

嘿,謝謝你的回答,但我必須錯過別的東西,因爲不幸的是,這並沒有改變任何東西。 – Wompguinea

+0

你是從文件加載:URI還是http:URI?可能存在跨站點腳本規則。此外,HTTP響應中的媒體類型可能是相關的(通常,IE在其他瀏覽器使用HTTP媒體類型的URI中使用文件擴展名)。我希望在開發者控制檯失敗時看到一些東西。 –

相關問題