正在删除
来自rss feed的标记
我正在使用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>
可有人请帮我这。如果您需要更多信息,请告诉我。
谢谢。
请您详细说明一下。
你叫什么? “<br> tags
” 实际上是毫无意义的<br>
串(在XSLT方面意义)。将它们从描述中移除的唯一方法是使用字符串操作。如果您正在使用XSLT 1.0,然后调用递归命名模板移除该字符串的所有出现 - 比如:
<xsl:template name="remove">
<xsl:param name="text"/>
<xsl:param name="searchString"/>
<xsl:choose>
<xsl:when test="contains($text,$searchString)">
<xsl:value-of select="substring-before($text,$searchString)"/>
<xsl:call-template name="remove">
<xsl:with-param name="text" select="substring-after($text,$searchString)"/>
<xsl:with-param name="searchString" select="$searchString"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
我使用了你提供给我的模板并将其称为模板(更新了我的问题)。但我看不出有什么改变。我做错了什么。我对XSLT的经验非常少。请指导我,如果我做错了什么。 – user346514 2014-12-03 02:54:17
您的更新XSTL是不完整的,所以我不能告诉 - 但有一点突出:而不是'
谢谢。我会试试这个,让你知道。 – user346514 2014-12-03 12:07:47
“*但RSS源在描述节点元素的文本内容。 –
2014-12-01 18:52:12
标记*。”不,这不是“T。转义标签不是标签,并且它们不能通过XSLT指令进行匹配或选择。您必须使用**字符串函数**来处理
谢谢迈克尔。我不认为我理解得当。你能否详细说明一下。 – user346514 2014-12-02 16:11:57
请在回答问题后不要删除您的问题:没有它,答案就没有意义。另见:http://*.com/help/someone-answers – 2014-12-03 16:46:33