8

rssフィードの出力をTWebBrowserコンポーネントでフォーマットされたHTMLで表示したいのですが、このフィードをhttp://code.google.com/feeds/p/v8/svnchanges/basicでTWebbrowserにロードすると、 XMLファイルとしてのコンテンツ

ここに画像の説明を入力してください

しかし、IEを使用して同じページをロードすると

ここに画像の説明を入力してください

この質問CSSとTWebbrowserdelphiで提案されているように、ロードされたIHTMLDocument2にcssを挿入しようとしましたが、それでも同じ結果が得られます。

問題は、RSSフィードをTWebbrowserにロードする方法ですが、IEのように出力をHTMLドキュメントとして表示するにはどうすればよいですか?

4

2 に答える 2

5

推測ですが、次のXSLスタイルシートを適用してみてください(http://snippets.dzone.com/posts/show/1162から取得し、以下のコメントでcherdtによって提案されたように変更されています)。

<xsl:stylesheet version="1.0"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:dc="http://purl.org/dc/elements/1.1/">
    <xsl:output method="html"/>
    <xsl:template match="/">
    <xsl:apply-templates select="/atom:feed/atom:head"/>
        <xsl:apply-templates select="/atom:feed"/>
    </xsl:template>
    <xsl:template match="atom:feed/atom:head">
        <h3><xsl:value-of select="atom:title"/></h3>
        <xsl:if test="atom:tagline"><p><xsl:value-of select="atom:tagline"/></p></xsl:if>
        <xsl:if test="atom:subtitle"><p><xsl:value-of select="atom:subtitle"/></p></xsl:if>
    </xsl:template>
    <xsl:template match="/atom:feed">
        <h3><xsl:value-of select="atom:title"/></h3>
        <xsl:if test="atom:tagline"><p><xsl:value-of select="atom:tagline"/></p></xsl:if>
        <xsl:if test="atom:subtitle"><p><xsl:value-of select="atom:subtitle"/></p></xsl:if>
        <ul>
            <xsl:apply-templates select="atom:entry"/>
        </ul>
    </xsl:template>
    <xsl:template match="atom:entry">
        <li>
            <a href="{atom:link[@rel='related']/@href}" title="{substring(atom:published, 0, 11)}"><xsl:value-of select="atom:title"/></a>
            <xsl:choose>
                <xsl:when test="atom:content != ''">
                    <p><xsl:value-of select="atom:content" disable-output-escaping="yes" /></p>
                </xsl:when>
                <xsl:otherwise>
                    <p><xsl:value-of select="atom:summary" disable-output-escaping="yes" /></p>
                </xsl:otherwise>
            </xsl:choose>
        </li>
    </xsl:template>
</xsl:stylesheet>

あなたが受け取っているフィードに。ドキュメントを変換するには、この質問で選択した回答を参照してから、結果のXMLをWebBrowserに割り当ててみてください。

WebBrowserコントロールをフィードにポイントしていると思いますが、このアプローチを使用するには、たとえばIndy(チェックアウトTIdHTTPとそのGet()メソッド)を使用してフィードをダウンロードし、変換してから、コントロールに表示する必要があります。

上記は単なる推測ですが、それは良い仮定だと思います。:)

于 2012-04-07T22:13:09.873 に答える
2

IEは、デフォルトのスタイルシートとXSL変換をRSSフィードXMLに適用しています。これは、標準などではなく、IEのものです。

表示する前にページを変更して、自分で同様のことを行う必要があります。

于 2012-04-07T21:05:26.997 に答える