0

RSSフィードのスタイルを設定していますが、次の部分に問題があります。

<description>
<![CDATA[
<img src="http://l.yimg.com/a/i/us/we/52/34.gif"/><br /> <b>Current Conditions:</b><br /> Fair, 73 F<BR /> <BR /><b>Forecast:</b><BR /> Sat - Clear. High: 78 Low: 62<br /> Sun - Mostly Sunny. High: 80 Low: 66<br /> <br /> <a href="http://us.rd.yahoo.com/dailynews/rss/weather/Dubai__AE/*http://weather.yahoo.com/forecast/AEXX0004_f.html">Full Forecast at Yahoo! Weather</a><BR/><BR/> (provided by <a href="http://www.weather.com" >The Weather Channel</a>)<br/>
]]>
</description>

ここで私の試みを見ることができます

これが私のXSLTです。

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
  <head>
    <title></title>
  </head>
  <body>
    <table cellpadding="2" cellspacing="0" border="0" width="75%">
        <xsl:for-each select="rss/channel/item">

              <tr style="color:#0080FF;">
                <td style="text-align:left;font-weight:bold;">
                  <xsl:value-of select ="title"></xsl:value-of>
                </td>
                </tr>


                <tr style="color:#0080FF;">
                <td style="text-align:left;font-weight:bold;">
                  <xsl:value-of select ="location"></xsl:value-of>
                  <xsl:value-of select="pubDate"/>
                </td>
              </tr>


              <tr>
                <td colspan="2" style="text-align:left;padding-top:10px;">
                  <xsl:value-of select="description"/>
                </td>
              </tr>

          <tr>
            <td colspan="2" style="height:20px;">
              <hr></hr>
            </td>
          </tr>
        </xsl:for-each>
    </table>
  </body>
</html>
 </xsl:template>
</xsl:stylesheet>

説明タグから情報を取得しようとしているので、タイトルや発行日と同じようにスタイルを設定できます。これが私がスタイリングしようとしている完全なXMLRSSフィードです。誰かがCDATAタグが物事を台無しにしている理由を理解するのを手伝ってもらえますか?

4

1 に答える 1

3

使用しないようにしてください<xsl:for-each>。と に頼ると、コードがより明確に整理され<xsl:template>ます<xsl:apply-templates>

また、CSS クラスを使用して、出力 HTML からインライン スタイルを削除してみてください。

<xsl:output>従来の HTML (XHTML ではない) を出力する場合は、doctypeを使用して XSLT プロセッサにそのように伝え、出力も行います。

出力の問題は、 を使用することで解決されdisable-output-escaping="yes"ます。すべての XSL プロセッサがその属性をサポートしているわけではないことに注意してください。出力エスケープを無効にする機能は、XSLT 仕様に従ってオプションです。

<xsl:stylesheet 
  version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
  <xsl:output method="html" indent="yes" 
     doctype-system='http://www.w3.org/TR/html4/strict.dtd'
     doctype-public='-//W3C//DTD HTML 4.01//EN' 
  />

  <xsl:template match="/rss">
    <html>
      <head>
        <title></title>
      </head>
      <body>
        <xsl:apply-templates select="channel" />
      </body>
    </html>
  </xsl:template>

  <xsl:template match="channel">
    <table cellpadding="2" cellspacing="0" border="0" width="75%">
      <xsl:apply-templates select="item" />
    </table>
  </xsl:template>

  <xsl:template match="item">
    <!-- ... -->
    <tr>
      <td colspan="2" style="text-align:left;padding-top:10px;">
        <xsl:value-of select="description" disable-output-escaping="yes" />
      </td>
    </tr>
    <!-- ... -->
  </xsl:template>
</xsl:stylesheet>
于 2013-02-16T16:17:36.740 に答える