XSLT в XHTML для C # .NET SyndicationFeed - PullRequest
       15

XSLT в XHTML для C # .NET SyndicationFeed

1 голос
/ 02 августа 2011

Я использую класс .NET SyndicationFeed для создания RSS-канала для потребления, но мне нужно связать таблицу стилей XSLT с результирующим XML для стилизации результатов для веб-браузеров. Я не смог найти простой способ сделать это.

Мой лучший выбор - вставить тег <?xml-stylesheet ... ?> в полученный XML самостоятельно после генерации канала или есть более элегантное решение?

Заранее спасибо, я очень ценю помощь. Я не смог найти или найти лучшее решение, кроме как непосредственно изменить получающийся XML самостоятельно.

1 Ответ

1 голос
/ 02 августа 2011

Ну, я не вижу проблем с записью инструкции обработки xml-stylesheet в тот же XmlWriter, для которого вы пишете SyndicationFeed, например пример кода

    SyndicationFeed feed = new SyndicationFeed("Test Feed", "This is a test feed", new Uri("http://http://example.com/testfeed"), "TestFeedID", DateTime.Now);
    SyndicationItem item = new SyndicationItem("Test Item", "This is the content for Test Item", new Uri("http://example.com/ItemOne"), "TestItemID", DateTime.Now);

    List<SyndicationItem> items = new List<SyndicationItem>();
    items.Add(item);
    feed.Items = items;

    using (XmlWriter xw = XmlWriter.Create(Console.Out, new XmlWriterSettings() { Indent = true }))
    {
        xw.WriteStartDocument();
        xw.WriteProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"sheet.xsl\"");
        Atom10FeedFormatter atomFormatter = new Atom10FeedFormatter(feed);
        atomFormatter.WriteTo(xw);
        xw.Close();
    }

пишет

<?xml-stylesheet type="text/xsl" href="sheet.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="text">Test Feed</title>
  <subtitle type="text">This is a test feed</subtitle>
  <id>TestFeedID</id>
  <updated>2011-08-02T13:19:12+02:00</updated>
  <link rel="alternate" href="http://http//example.com/testfeed" />
  <entry>
    <id>TestItemID</id>
    <title type="text">Test Item</title>
    <updated>2011-08-02T13:19:12+02:00</updated>
    <link rel="alternate" href="http://example.com/ItemOne" />
    <content type="text">This is the content for Test Item</content>
  </entry>
</feed>

в консоль и таким же образом, как вы можете писать в любое место назначения, в которое может писать XmlWriter.

...