Имея некоторые проблемы с подбором моего листа XSL при создании RSS-канала на моем сайте.Не удается получить доступ к XSLT-файлу
Я делаю это через код, расположенный в VB, но когда генерируется RSS, все это проходит через одну строку.
Что я делаю неправильно?
Public Sub RssFeed(ByVal cxt As HttpContext)
Dim outString As String = ""
cxt.Response.Clear()
cxt.Response.ContentType = "application/rss+xml"
cxt.Response.ContentEncoding = System.Text.Encoding.UTF8
Using xw As New XmlTextWriter(cxt.Response.OutputStream, Text.Encoding.UTF8)
xw.WriteStartDocument()
'processing instruction to style the rss
Dim PIText As String = "type=""text/xsl"" href=""Styles/rss.xsl"""
xw.WriteProcessingInstruction("xml-stylesheet", PIText)
xw.WriteStartElement("rss")
xw.WriteAttributeString("version", "2.0")
xw.WriteAttributeString("xmlns", "atom", Nothing, "http://www.w3.org/2005/Atom")
'channel contains all the RSS feed details
xw.WriteStartElement("channel")
xw.WriteStartElement("atom:link")
xw.WriteAttributeString("stuff")
xw.WriteEndElement()
xw.WriteElementString("title")
xw.WriteElementString("link")
xw.WriteElementString("description")
xw.WriteElementString("language", "en-gb")
xw.WriteStartElement("category")
xw.WriteAttributeString("domain")
xw.WriteString("Event Log")
xw.WriteEndElement()
'db connection stuff
EDIT 2
При осмотре элемента с помощью Chrome на вкладке сети, тип «текст/обычный» - так что это не признавая файлера как RSS/XML.
Я обновил код выше, чтобы содержать строку cxt.Response.ClearHeaders()
, но это не изменило, как браузер интерпретирует файл.
EDIT 2
В соответствии с поручением здесь упрощенный XSLT-лист, я использую.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
<xsl:output method="html" />
<xsl:variable name="title" select="/rss/channel/title"/>
<xsl:template match="/">
<html>
<head>
<link rel="stylesheet" href="/rss.css" type="text/css"/>
</head>
<xsl:apply-templates select="rss/channel"/>
</html>
</xsl:template>
<xsl:template match="channel">
<body>
<h2>heading</h2>
<h6>small heading</h6>
<table border ="1">
<tr>
<td bgcolor="#7DCC3D">Title</td>
<td bgcolor="#333366">Link</td>
<td bgcolor="#7DCC3D">Description</td>
<td bgcolor="#333366">Published</td>
</tr>
<xsl:for-each select="rss/channel/item">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="link"/></td>
<td><xsl:value-of select="description"/></td>
<td><xsl:value-of select="pubDate"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</xsl:template>
</xsl:stylesheet>
Можете ли вы уточнить, в чем проблема? Не применяется ли таблица стилей? Можете ли вы показать нам код стилей? Можете ли вы показать нам источник RSS, который генерирует ваш код? –
Извинения - там есть лист, я могу получить к нему доступ через браузер, таблица стилей не применяется. Очень простой XSLT, чтобы увидеть, могу ли я заставить его работать, есть ли настройка, которую мне может понадобиться изменить в IIS, чтобы получить ее, чтобы она понимала XSLT? – SelrekJohn
Если вы отправляете XML с инструкцией по обработке «xml-stylesheet» в браузер, то именно браузер использует клиентскую часть XSLT, это не IIS. Я бы начал проверять консоль ошибок вашего браузера, показывает ли она какие-либо сообщения об ошибках или предупреждения. Если у вас есть общедоступный URL-адрес, мы можем проверить, что вы также можете его опубликовать. –