atom创建文件
这里使用的Atom是一种XML语言,它使Web发布者能够将其网站的内容联合提供给各种消费者。 使用Atom,发布者可以创建标准格式的Web feed 。 该提要使用户能够使用称为提要阅读器的软件来阅读网站的内容。 它还使其他Web开发人员能够在其自己的网站上发布提要的内容。
原子绝不是当今使用的唯一联合标准。 RSS是另一种标准化格式(也使用XML),并且早于Atom。 实际上,创建Atom是为了响应RSS中的某些限制。
因此,与RSS相比,Atom规范具有许多优势。 Atom提供了一种定义所提供数据格式(例如HTML,XHTML等)的方法,而RSS则没有。 与RSS不同,Atom通过xml:lang attribute
支持国际化。 Atom还接受更多最新的(和标准化的)日期格式,这依赖于RSS(RFC)3339,而不是RSS的RFC 822。
PHP代表PHP:超文本处理器 。 它可能是英语中唯一的首字母缩写词,但在扩展时仍包含原始首字母缩写词。 这里的历史意义是PHP最初代表Personal Home Page 。
PHP是一种脚本语言,可生成动态的服务器端内容。 它与HTML协调工作,并且PHP代码经常嵌入在标准HTML网页中以促进动态内容。
PHP还可以与数据库管理系统MySQL完美配合。 在Web开发的多年中,这两种技术共同发展,并在无数场合下并肩工作。 几乎可以肯定,这是由于一个不可否认的总体原理:它们都是自由的。
为了回答本节顶部的问题,PHP使开发人员可以灵活地以易于阅读和易于开发的方式生成动态内容。 动态内容是从MySQL数据库检索的。 输出页面( feed )是使用PHP编码的,以便呈现符合Atom规范的XML输出。
请注意,本文中的解释是假定您熟悉MySQL和PHP的基础而编写的。 如果不是这样,请参见本文“ 相关主题”部分中的入门教程链接。
老板在你办公室。 他真的很喜欢公司网站(fishinhole)的运作方式。 该网站目前向热心的运动渔民销售各种类型的渔具并向其出售。 该网站还提供了一个钓鱼报告论坛,其中有热情的运动渔民分享他们的鱼类故事。
您的老板坐在办公室的椅子上(无人问津),并且抱怨该网站的曝光率不够。 他想使用网页的捕鱼报告部分来吸引(双关语意) 更热心的运动渔民到该网站。 他告诉您,他希望您将网站的该部分设为“一站式商店”,以获取全球范围内的运动钓鱼报告。 这对于fishinhole的持续成功至关重要(或者他说)。 您的老板喝着咖啡,微笑着走出办公室,无话可说。
您靠在椅子上,开始思考:什么能使钓鱼报告论坛更广泛地曝光? 片刻之后,您想到了:联合! 您不仅可以在fishinhole上向用户和购物者简单地提供报告部分,还可以联合论坛,以便人们可以与提要阅读器一起阅读钓鱼报告的摘要。 其他Web开发人员也可能在他们自己的网页中包含联合供稿。 无论哪种情况,人们都可以单击感兴趣的报告标题,然后将其链接回fishinhole,在这里您可以使他们接触到大量的渔具直销活动。 好主意。
在您的老板走进您的办公室很久之前,钓鱼报告论坛的数据库已经设计好了。 回想一下网页的钓鱼报告部分已经存在。 它根本还没有被联合起来。
那么,您需要对数据库进行哪些更改以联合其内容? 没有! 这是有关联合组织的伟大事情之一。 在大多数情况下,您可以在不更改基础架构或数据模型的情况下联合文章。 这是因为在大多数情况下,您将联合文章,并且文章几乎总是具有Atom规范所需的信息。
清单1显示了fishinhole的“捕鱼报告”部分当前使用的数据库模型。 它还包含一些INSERT
以便您拥有测试数据。
INSERT
的REPORTS
表结构 CREATE TABLE IF NOT EXISTS `reports` (`ID` bigint(20) NOT NULL auto_increment,`AUTHOR` varchar(32) NOT NULL,`TITLE` varchar(64) NOT NULL,`SUBTITLE` varchar(128) NOT NULL,`CONTENT` varchar(2000) NOT NULL,`POSTED` datetime NOT NULL,PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;INSERT INTO `reports` (`id`, `author`, `title`, `subtitle`, `content`, `posted`) VALUES
(1, 'BigRed', 'Spanish Bite Looking Good!', 'Near the Cape!',
'Trolled for 3 hours and limited out on Spanish Macks! Watch out for the shallows
near green can #4.', '2009-05-03 04:54:33'),
(2, 'JonBoy', 'Big Rock Report', 'Spring has sprung',
'Caught several blackfins and mahi just outside of the Big Rock on Saturday.
We were using flourescent squid teasers with ballyhoo for hookups.
One Mahi weighed over 50#!', '2009-05-03 04:56:06'),
(3, 'Erasmus', 'Drum in the backwaters', 'The bite was hot!',
'Loaded up against the marsh grass, boys. Go get em. I was using gulp
with 1/4 ounce jigheads.', '2009-05-03 04:57:19'),
(4, 'ReelHooked', 'Speckled Trout In Old River', 'Limited out by noon',
'They were schooling heavy in Old River. They would eat anything we would
throw at them. Most were undersized, but we managed to keep some
and had our fill by midday.', '2009-05-03 04:59:00');
如果要实际测试本文介绍的代码,则可以通过创建一个名为fishinhole的MySQL数据库并在该数据库中执行清单1中的代码来进行测试。
第一列( ID
)是表的主键。 请注意,它使用auto_increment
规范,以便每次将新行插入到表中时, ID
列都会填充前一行ID
列的增量。 这类似于Oracle表中的序列。
AUTHOR
列仅指定发布钓鱼报告的人员的用户名。 这是用户的屏幕名称,而不是用户的真实名字和姓氏(除非用户的真实姓名实际上是屏幕名称)。
TITLE
列只是文章的标题。 同样, SUBTITLE
是文章的字幕,并在Atom提要中用于文章摘要。
“ CONTENT
列是实际的捕鱼报告本身。 由于此处生成的Atom提要仅包含整个文章的提要(因此鼓励用户单击链接并访问网站),因此内容本身不会显示在Atom提要中。
最后, POSTED
列是DATETIME
列,用于存储文章在网站上的发布日期。
为简单起见,我只提供了几篇文章(4)。 在现实世界中,将有成千上万来自不同作者的文章。
现在您已经有了数据库设计,是时候编写PHP页面代码了,以便它生成Atom提要。 本文将向您介绍创建简单的Atom提要的基础知识,您可以使用PHP对其进行测试。
请注意,如果要测试代码,则需要访问PHP处理器。 大多数托管解决方案都提供这种访问。 您可能还可以在本地访问一个。 请咨询必要的系统管理员或技术支持人员,以了解如何在Web环境中执行PHP文档。
创建一个名为syndication.php的新PHP文件。 那是您放置代码的地方。
如前所述,PHP和MySQL具有很好的协同工作历史。 有些人甚至可能说他们已婚。 但是这种判断不在本文的范围之内。
清单2提供了一个基本代码段,使您能够访问使用清单1中的代码创建的MySQL数据库。
$link = mysql_connect('localhost', 'admin', 'password')or die('Could not connect: ' . mysql_error());mysql_select_db('fishinhole') or die('Could not select database');$query = 'SELECT id,title,subtitle,author,posted FROM reports order by posted desc limit 25';
;
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
该代码实际上涵盖了相当多的内容,因此,逐步进行编码很重要。
首先是mysql_connect()
函数。 您需要根据自己环境的规格更改参数。 第一个参数是数据库主机。 在某些情况下,它将类似于清单2 (即localhost
)。 在其他情况下,它将是远程主机(例如,IP地址10.92.2.1)。 假设您进行了域名系统(DNS)转换,它也可能是实际的主机名(例如host)。
第二个参数是将访问数据库的MySQL用户的名称。 如图所示,只有在您自己的MySQL环境中这是一个有效帐户时,您才可以使用admin
。 请参阅MySQL文档,以了解如何为MySQL数据库创建帐户。 请记住,此处使用的帐户必须具有对REPORTS
数据库的读取权限。
第三个参数是用户的密码。 这需要与第二个参数中标识的用于用户的密码匹配。
包含or die
子句是为了在发生故障时为开发人员提供诊断信息。 如果无法建立与数据库管理系统的连接,则在执行PHP脚本时,您会收到一条消息,指示连接失败以及失败的原因。
接下来是mysql_select_db()
函数。 在这里,您可以实际选择计划使用的数据库。 您自己的MySQL副本可以(并且可能确实)包含许多数据库,因此指定要使用的数据库很重要。
回想一下,如果您想测试本文提供的代码的功能,我建议您创建一个名为fishinhole的MySQL数据库。 mysql_select_db()
行指定您将使用该数据库。
接下来是实际查询。 在这种情况下,您只需在字符串中定义查询即可。 在这里,您可以从REPORTS
表中获取ID
, TITLE
, SUBTITLE
, AUTHOR
和POSTED
列。 order by posted desc
子句强制查询按POSTED
列中的日期(该文章在网站上发布的日期)以降序返回行。 因此,您首先检索最近的文章。 这是Feed的标准做法。
最后的limit 25
子句很重要。 您可以在此处指定此Feed最多返回25篇文章。 回想一下我之前提到的这样的论坛可以包含数千篇文章。 在提要中返回数千篇文章根本不现实。 所使用的带宽非常大,大多数消费者最终都需要等待一段时间。
该查询是一个字符串。 它被分配给一个直观地名为$query
的变量。
在mysql_query()
函数中,您实际上执行了上一行中定义的查询。 该查询的结果存储在$result
变量中。 再次, or die
子句用于诊断目的。
现在您已经从数据库中获取了数据,是时候开始以符合Atom规范的格式显示数据了。 由于Atom是一种XML语言,因此PHP文件的输出采用XML格式,而不是HTML格式。 如果您打算使用Web浏览器来显示输出,请记住,根据您的浏览器和版本,输出将有所不同。 要查看XML输出,通常最好在浏览器中右键单击输出,然后选择View Source 。 然后,您将看到原始XML输出。
在显示有关每篇文章的信息之前,务必将Atom提要的序言包括在内。 这部分将输出标识为Atom提要,并提供有关提要的相关信息,如清单3所示。
<feed xml:lang="en-US" xmlns=""> <title>Fishing Reports</title> <subtitle>The latest reports from fishinhole</subtitle><link href=".php" rel="self"/> <updated><?php echo date3339(); ?></updated><author> <name>NameOfYourBoss</name><email>nameofyourboss@fishinhole</email></author><id>tag:fishinhole,2008:.php</id>
您可能会立即注意到清单3中的代码看起来并不像PHP。 那是因为大多数不是。 它是标准化的输出,几乎不需要动态内容。
<feed>
元素将此XML文档标识为Atom提要。 提供用于定义元素的名称空间作为<feed>
元素的属性。 您还可以使用前面提到的xml:lang
属性来指定这是一个用英语编写的文档。
<title>
元素指定整个提要的标题。 同样, <subtitle>
元素为整个提要指定一个字幕。
<link>
元素指定此syndication.php文档的URL。 该示例中的地址在本文所述的虚拟世界中有效,但在现实生活中却并非如此。 实际上,您可以包括一个产生此提要输出的链接。
<updated>
元素产生一个时间戳(符合RFC 3339标准),该时间戳告诉使用者此提要的上次更新时间。 在这种情况下,由于提要将始终是最新的,因为它会从数据库中检索最新数据,因此您将使用当前时间戳。 您可能会注意到,此元素中有一些PHP代码段。 这是一个定制PHP函数,它以RFC 3339格式生成时间戳。
<author>
元素定义整个提要的作者。 您将使用老板的名字作为作者,因为这是他的主意。
最后, <id>
元素以国际化资源标识符(IRI)格式唯一标识提要。
清单4是产生Atom提要中每个条目的主循环。 生产饲料的绝大多数工作都在这里完成。
<?php$i = 0;while($row = mysql_fetch_array($result)){if ($i > 0) {echo "</entry>";}$articleDate = $row['posted'];$articleDateRfc3339 = date3339(strtotime($articleDate));echo "<entry>";echo "<title>";echo $row['title'];echo "</title>";echo "<link type='text/html' href='.php?id=".$row['id']."'/>";echo "<id>";echo "tag:fishinhole,2008:.php?id=".$row['id'];echo "</id>";echo "<updated>";echo $articleDateRfc3339;echo "</updated>";echo "<author>";echo "<name>";echo $row['author'];echo "</name>";echo "</author>"; echo "<summary>";echo $row['subtitle'];echo "</summary>";$i++;}
?>
清单4再一次涵盖了相当多的领域。 首先,是while
循环。 基本上,这段代码用英语说:“只要表中的行尚未包含在输出中,就继续。” 每次迭代中的当前行存储在一个直观地称为$row
PHP变量中。
然后检查计数器( $i
)。 如果计数器大于0,则意味着这至少是第二次迭代。 在这种情况下,必须关闭上一个迭代的<entry>
元素。
接下来的两行(从POSTED
列中)检索文章日期,并使用上述功能将其转换为RFC 3339格式。
接下来,启动<entry>
元素。 接下来是<title>
元素,该元素从当前行的TITLE
列填充。
<link>
元素与众不同之处在于它不包含任何子文本。 而是将实际链接引用为属性。 这是Atom标准的一部分。 该链接只是将用户指向用户可以阅读整篇文章的URL。 回想一下,此提要仅向用户提供一个提要。
<id>
元素类似于先前描述的元素。 它以IRI格式唯一标识此元素。 而且,和以前一样,它是从相关的URL构建的。
<updated>
元素包含POSTED
列中的DATETIME
值(采用RFC 3339格式)。 回想一下,该文档的$articleDateRfc3339
变量是在此迭代的早期填充的。
接下来是<author>
元素。 该元素与其他元素不同(但像前言中的<author>
元素一样)具有子元素。 在本文中,仅使用了其中一个子级:作者的姓名。 作者的姓名从当前行的AUTHOR
列填充。
<summary>
元素包含从当前行的SUBTITLE
列中收集的信息。
最后,循环计数器( $i
)递增,循环继续进行。
简而言之,这就是与从REPORTS
表中生成Atom文档相关的全部代码。 如您所见,它并不像乍看起来那样复杂。
另外,请记住,此处未涵盖Atom规范中的许多元素。 您可以按照我在本节代码中描述的相同模式,轻松地添加它们。 有关更多信息,请参阅参考资料 。
现在来了有趣的部分:测试!
无需重新输入(或复制并粘贴)上面代码清单中看到的所有内容,您只需使用“ 下载”部分中包含PHP文件即可。 将该文件复制到本地目录,并进行我先前描述的必要的数据库更改(用户名,密码和主机)。 然后将其复制到可以访问数据库PHP文件结构中。
将PHP文件放置在正确的位置后,启动浏览器并按以下方式访问文件:http:// 您的主机 / 上下文 /syndication.php。
与任何自定义解决方案一样,您需要更改斜体值以匹配您的特定环境。
如我之前所述,您的结果将取决于您使用的浏览器和版本。 一些更现代的浏览器会检测到这是Atom提要,并相应显示结果。 其他人则以原始XML格式显示它。 由于该文档不是标准HTML文档,因此其他文档可能什么也不做。
如果浏览器未显示原始XML,则只需在文档上单击鼠标右键并选择View Source即可 。 完成之后,您应该会看到类似于清单5的内容 。
<?xml version='1.0' encoding='iso-8859-1' ?>
<feed xml:lang="en-US" xmlns=""><title>Fishing Reports</title><subtitle>The latest reports from fishinhole</subtitle><link href="" rel="self"/><updated>2009-05-03T16:19:54-05:00</updated><author><name>NameOfYourBoss</name><email>nameofyourboss@fishinhole</email></author><id>tag:fishinhole,2008:;/id><entry><title>Speckled Trout In Old River</title><link type='text/html' href='.php?id=4'/><id>tag:fishinhole,2008:.php?id=4</id><updated>2009-05-03T04:59:00-05:00</updated><author><name>ReelHooked</name></author><summary>Limited out by noon</summary></entry>
...
</feed>
另一种测试方法是验证Feed是否有效。 您可以使用在网络空间中找到的许多Atom提要验证器之一来做到这一点。 一个很好用的是。 该网站以Atom,RSS和Keyhole标记语言(KML)格式验证提要。
由于您实施并部署了Atom提要,因此来自世界各地的成千上万的新的热心运动渔民现在可以在您的网站上获得钓鱼报告。 您会从嵌入Atom提要的运动钓鱼网站上获得数百个传入链接。 一些热心的运动渔民甚至每天都在使用饲料阅读器来查看报告。
查看最新的路况报告后,老板会跳回办公室。 他对额外的访问感到高兴,并报告唯一身份访问者增加了10%。 他给你竖起大拇指,他的咖啡,然后走开。
Atom规范是整合Web内容的理想方法。 将PHP与MySQL结合使用,您可以轻松地生成符合Atom标准的Web提要,并且该提要始终是最新的,因为它直接从数据库中读取数据。 然后,提要阅读器可以读取提要,也可以将其嵌入其他网站中。 最终结果是使您的Web内容得到更广泛的曝光,这意味着更多的访问者,最有可能增加您的收益。
翻译自: .html
atom创建文件
本文发布于:2024-02-01 04:17:43,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170673226733797.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |