我正在使用rss feed獲取新聞項目,然後使用XSLT將它們顯示給用戶。但rss feed在描述節點中有<br>
標籤。我想刪除它們,以便正確包裝文本。從RSS提要正在刪除<br>來自rss feed的標記
XML:
<item>
<title>This is sample text</title>
<link>http://service.meltwaternews.com/mnews/redirect.html?docId=3724026852&userId=327550&cId=88306&agentId=5799665&type=1&s=83181&
url=http%3A%2F%2Fwww.law360.com%2Farticles%2F596778</link>
<description>M&A MVP: <b>Wachtell</b>'s Andy Brownstein -- Thanks to his work over the past<br> year
guiding numerous multibillion-dollar deals that spanned a number<br>...<br></description>
<pubDate>Thu, 20 Nov 2014 18:20:42 GMT</pubDate>
<source url="http://www.law360.com/">Law360</source>
</item>
<item>
<title>BGC Partners Extends Tender Offer To Acquire GFI Group</title>
<link>http://service.meltwaternews.com/mnews/redirect.html?docId=3723113040&
userId=327550&cId=88306&agentId=5799665&type=1&s=54&
url=http%3A%2F%2Fwww.prnewswire.com%2Fnews-releases%2Fbgc-partners-extends-tender-offer-to-acquire-gfi-group-283330231.html</link>
<description>...for the tender offer is Cantor Fitzgerald
& Co. and its legal advisor<br> is <b>Wachtell</b>, <b>Lipton</b>, Rosen & Katz. About BGC Partners, Inc. BGC Partners<br>...<br></description>
<pubDate>Thu, 20 Nov 2014 13:56:48 GMT</pubDate>
<source url="http://www.prnewswire.com/">PR Newswire</source>
</item>
XSLT:
<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:msdndomain="http://msdn.microsoft.com/aboutmsdn/rss/domains"
version="1.0" >
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match='node()|@*'>
<xsl:copy>
<xsl:apply-templates select='node()|@*'/>
</xsl:copy>
</xsl:template>
<xsl:template match='br[preceding-sibling::node()[1]
[not(self::text() and normalize-space(.) = "")][self::br]]'/>
<xsl:param name="maxitems">30</xsl:param>
<xsl:param name="showtitle">False</xsl:param>
<xsl:param name="totalitems"><xsl:value-of select="count(/rss/channel/item)"/></xsl:param>
<xsl:param name = "Postback.CNUSERPAGE" >0</xsl:param>
<xsl:param name = "ITEMSPERPAGE" >5</xsl:param>
<xsl:template match='/rss'>
<xsl:if test="count(channel/item) > number($ITEMSPERPAGE)">
<xsl:text disable-output-escaping="yes"><SCRIPT>
function getNewPagingUrl(parameter, pageNum) { var parms = document.URL.split(/[&?]/); if (parms.length < 2) { return document.URL + "?" + parameter + "=" + pageNum; } else { var finalParms = new Array();var fnd = false; for (var i=0; i<parms.length;i++) { if (parms[i].search(parameter+"=") != -1) { fnd=true;finalParms[i] = parameter + "=" + pageNum; } else { finalParms[i] = parms[i]; } } if(!fnd){finalParms[parms.length]=parameter + "=" + pageNum;}
var finalUrl = ""; for (var i=0; i<finalParms.length;i++) { if (i==0) finalUrl += finalParms[i]; else if (i==1) finalUrl += "?" + finalParms[i]; else finalUrl += "&" + finalParms[i]; } return finalUrl; } }
</SCRIPT>
</xsl:text>
<xsl:text disable-output-escaping="yes"><TABLE width="100%" ><TR><TD align="right"></xsl:text>
<xsl:variable name="ttlPages">
<xsl:choose>
<xsl:when test="count(channel/item) > $maxitems">
<xsl:value-of select="$maxitems"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="count(channel/item)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:call-template name="paging">
<xsl:with-param name="repeat" select="floor($ttlPages div number($ITEMSPERPAGE))"/>
<xsl:with-param name="totalPages" select="floor($ttlPages div number($ITEMSPERPAGE))"/>
</xsl:call-template>
<xsl:text disable-output-escaping="yes"></TABLE></xsl:text>
</xsl:if>
<div id='block' style="padding:5px;">
<xsl:if test="$showtitle='True'">
<div style="font-size:100%;">
<xsl:value-of select='channel/title'/>
</div>
<hr style="height:1px;color:black;" />
</xsl:if>
<xsl:apply-templates select='channel/item[position()<=$maxitems]'/>
</div>
</xsl:template>
<xsl:template match='item'>
<xsl:if test="floor((position()-1) div number($ITEMSPERPAGE)) = number($Postback.CNUSERPAGE)" >
<div style="font-weight:bold;font-size:8pt;">
<a style="font-size: 8pt" href='{link} ' target="_blank">
<xsl:value-of select='title'/>
</a>
</div>
<xsl:value-of select='description' disable-output-escaping='yes' />
<i><xsl:value-of select='dc:creator' /> <xsl:value-of select='pubDate' /></i>
<br/>
<br/>
</xsl:if>
</xsl:template>
<xsl:template name="paging">
<xsl:param name="totalPages">0</xsl:param>
<xsl:param name="repeat">0</xsl:param>
<xsl:if test="number($repeat) >= 1">
<xsl:if test="($totalPages - $repeat) = number($Postback.CNUSERPAGE)">
<xsl:value-of select="($totalPages - $repeat)+1"/>
</xsl:if>
<xsl:if test="($totalPages - $repeat) != number($Postback.CNUSERPAGE)">
<a>
<xsl:attribute name="href">
<xsl:text disable-output-escaping="yes">javascript:</xsl:text>
<postback>
<column name="CNUSERPAGE">
<xsl:value-of select="($totalPages - $repeat)"/>
</column>
</postback>
</xsl:attribute>
<xsl:value-of select="($totalPages - $repeat) + 1"/>
</a>
</xsl:if>
<xsl:if test="number($repeat) > 1">
<xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>
</xsl:if>
<xsl:call-template name="paging">
<xsl:with-param name="repeat" select="$repeat - 1"/>
<xsl:with-param name="totalPages" select="$totalPages"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
可有人請幫我這。如果您需要更多信息,請告訴我。
謝謝。
「*但RSS源在描述節點元素的文本內容。 –
2014-12-01 18:52:12
標記*。」不,這不是「T。轉義標籤不是標籤,並且它們不能通過XSLT指令進行匹配或選擇。您必須使用**字符串函數**來處理
謝謝邁克爾。我不認爲我理解得當。你能否詳細說明一下。 – user346514 2014-12-02 16:11:57
請在回答問題後不要刪除您的問題:沒有它,答案就沒有意義。另見:http://stackoverflow.com/help/someone-answers – 2014-12-03 16:46:33