我在各地都看到過這個問題的變種,但沒有一個提供的解決方案似乎有效。這意味着我的代碼/設置中可能還有其他問題,我看不到。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)
我敢肯定我錯過了一件簡單的事情,現在該怎麼辦?
這看起來像一個傻瓜,雖然我不能肯定的形式。你可以檢查[此解決方案](http://stackoverflow.com/a/1976417/14357)並告訴我它是否適用。 – spender
不幸的是,這並沒有改變任何東西。我改變了C#方法的這一行:'string xmlPrefix =「<?xml version = \」1.0 \「encoding = \」utf-8 \「?><?xml-stylesheet type = \」application/xml \「href = \」/ XSLT/Index.xslt \「?>」;' – Wompguinea
Firefox或Chrome的開發人員控制檯是否未指出有關失敗的錯誤消息?我在你的文章中看到了兩個奇怪的問題,'xsl:output method ='xhtml''在XSLT 1.0中不存在,所以我會期待一個與此相關的錯誤,並建議使用'method =「xml」'如果你想生成XHTML或'method =「html」'如果你想生成HTML(4或5,這似乎更適合這些天)。 –