Я видел вариации этого вопроса повсюду, но ни одно из предоставленных решений, похоже, не работает. Это означает, что в моем коде/настройке, вероятно, есть еще одна проблема, которую я не вижу.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, доступным в dev-tools (но ни один из 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, что кажется более уместным в наши дни). –