|
ems.xslt(我们将要创建的 XSLT 样式表文件的名称)。现在,在 Page_Load 事件处理函数中,我们需要 在某个 XmlDocument 实例中获取远程 RSS 聚合文件,然后将该 XML Web 控件的 Document 属性赋给该 XmlDocument 实例。
在 Page_Load 事件处理函数中,与我们要实现的任务有密切关系的代码是最后三行代码。这三行代码创建一个新的 XmlDocument 对象, 加载远程 RSS 摘要内容,然后将这个 XmlDocument 对象赋给 XML Web 控件的 Document 属性。访问远程 XML 数据并 将它们显示在 ASP.NET 页面中就是这么简单,难道给你留下的印象不深吗?
剩下我们要做的一件事就是创建 XSLT 样式表,NewsItems.aspx。下面是样式表的第一版的草稿:
<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" omit-xml-declaration="yes" />
<xsl:template match="/rss/channel"> <b><xsl:value-of select="title" disable-output-escaping="yes" /></b> <xsl:for-each select="item"> <li> <a> <xsl:attribute name="href"> DisplayItem.aspx?ID=<xsl:number value="position()" /> </xsl:attribute> <xsl:attribute name="target">rbottom</xsl:attribute> <xsl:value-of select="title" disable-output-escaping="yes" /> </a> (<xsl:value-of select="pubDate" />) </li> </xsl:for-each> </xsl:template> </xsl:stylesheet>
这个XSLT样式表只有一个模版,用于匹配“/rss/channel”XPath表达式。这个模版先是以粗体显示<title>元素的内容。然后,循环获取每一个<item>元素,对于每一个元素,显示一个到 DisplayItem.aspx 页面的超链接,在查询字符串中传递<item>元素的位置属性。要留意超链接的 target 属性设置为 rbottom,右下部框架的名称。最后,显示每一个新闻项的标题和<pubDate>元素。
该 XSLT 样式表中有两个项目,并不是每个人都熟悉。首先是 <xsl:value-of> 元素中的 disable-output-escaping="yes" 属性。从本质上讲,这个属性的设置通知 XSLT 引擎不要转义那些非法的 XML 字符,比如:&, < , >, " 和 ’’。为了理解这个设置的意义,就要知道,如果不设置该属性(也就是设置为默认值"no"),那么如果标题包含一个转义的&字符&,那么输出的 html 文件中也会有一个&,而不单单是一个字符&。如果你再仔细想一想,你会发现这种情况会导致很多问题。例如,假设一个聚合文件的标题是“Matt’’s <i>Cool</i> Blog”,如果输出转义没有被禁止,那么输出就会保留 “Matt’’s <i>Cool</i> Blog”,在 Web 页面就会显示为 "Matt’’s <i>Cool</i> Blog"。当用 d上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >> |
|
|
|
|
|
|
|