2016-09-21 1 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, доступным в dev-tools (но ни один из html, просто неистребимый XML)

Я уверен, что мне не хватает чего-то простого, что мне теперь делать?

+1

Это выглядит как простофиля, хотя я не могу быть уверен. Вы можете проверить [это решение] (http://stackoverflow.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, что кажется более уместным в наши дни). –

ответ

0

Я думаю, что проблема, вероятно,

type="text/xml" 

Форма, которая работает надежно является

type="text/xsl" 
+0

Эй, спасибо за ответ, но я должен упустить что-то еще, потому что, к сожалению, это ничего не изменило. – Wompguinea

+0

Вы загружаете из файла: URI или http: URI? Там могут быть правила межсайтового скриптинга. Кроме того, тип мультимедиа в ответе HTTP может быть релевантным (в классическом случае IE использует расширение файла в URI, где другие браузеры используют тип медиафайлов HTTP). Я бы ожидал увидеть что-то в консоли разработчика, когда он терпит неудачу. –

Смежные вопросы