复制地址和好友共享资源目录描述语言(Resource Directory Description Language,RDDL)允许文档作者提供关于 XHTML 文档中所用资源的更多信息。使用 PEAR 提供的 java.com/html/xml'>XML_RDDL 包中的 API 解析这些 RDDL 描述符,提取可用于 PHP 应用程序的资源信息。
织梦好,好织梦
织梦好,好织梦织梦内容管理系统
如果曾经使用过 java.com/html/xml'>XML,应该知道名称空间 通过与特定 URI 关联来限定 java.com/html/xml'>XML 元素名称,从而避免同名元素冲突。但通常仅仅一个 URI 还不够,实际上我们需要一种办法使用多种资源来描述名称空间,包括 DTD、java.com/html/xml'>XML 模式、XSL 样式表和软件文档。
内容来自dedecms
于是资源目录描述语言 RDDL 登台亮相了。正如这种语言的官方网站所说,RDDL “提供了关于一些目标的信息包……目标是 java.com/html/xml'>XML 名称空间”(请参阅 )。RDDL 允许文档作者为用户提供关于特定资源的更多信息。帮助 PHP 开发人员利用这些信息的是 java.com/html/xml'>XML_RDDL,PHP Extension and Application Repository (PEAR) 提供的一个包。java.com/html/xml'>XML_RDDL 包提供了从 RDDL 文件中提取各种资源信息并在 PHP 应用程序中使用的 API。从而为 PHP/RDDL 应用程序提供了一种健壮、简单易用的构件。 本文来自织梦
copyright dedecms
copyright dedecmsjava.com/html/xml'>XML_RDDL 包由 Stephan Schmidt 维护,采用 PHP 许可证在 PHP 社区发布。最简单的安装办法是用自动化的 PEAR 安装程序,应该包含在默认的 PHP 安装包中。安装只需在 shell 提示符下输入下列命令:
本文来自织梦
shell> pear install java.com/html/xml'>XML_RDDLdedecms.comPEAR 安装程序连接到 PEAR 包服务器并下载程序包,然后安装到系统的适当位置。本技巧使用的是 java.com/html/xml'>XML_RDDL V 0.9。 织梦好,好织梦
如果手工安装,可以访问主页并下源代码压缩包,然后手工解压到指定位置。需要注意的是手工安装必须对 PEAR 程序包的组织结构有所了解。 本文来自织梦
java.com/html/xml'>XML_RDDL 还需要另一个 PEAR 包,即 java.com/html/xml'>XML_Parser 包。可以按照上述方法使用 PEAR 自动安装程序安装它,也可在本文 部分找到包的链接。
copyright dedecms
copyright dedecms
本文来自织梦
首先必须对 RDDL 有所了解。 中的例子说明了 RDDL 的用法: copyright dedecms
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:rddl="http://www.rddl.org/" xml:lang="en"> <head> <title>An Example RDDL Document</title> </head> <body> <h2>An Example RDDL Document</h2> <p>Here are some resources:</p> <ul> <li> <rddl:resource xlink:type="simple" xlink:href="http://app.example.domain/example.xsd" xlink:role="http://www.w3.org/2000/10/java.com/html/xml'>XMLSchema" xlink:title="Example java.com/html/xml'>XML Schema" xlink:arcrole="http://www.rddl.org/purposes#schema-validation"> <a href="http://app.example.domain/example.xslt">An Example java.com/html/xml'>XML Schema</a> </rddl:resource> </li> <li> <rddl:resource id="dtd" xlink:type="simple" xlink:href="http://app.example.domain/example.dtd" xlink:role="http://www.isi.edu/in-notes/iana/assignments/media-types/ application/xml-dtd" xlink:title="Example DTD" xlink:arcrole="http://www.rddl.org/purposes#validation"> <a href="http://app.example.domain/example.dtd">An Example DTD</a> </rddl:resource> </li> <li> <rddl:resource xlink:type="simple" xlink:href="http://app.example.domain/api.html" xlink:role="http://www.w3.org/1999/xhtml" xlink:title="Example API Reference" xlink:arcrole="http://www.rddl.org/purposes#reference"> <a href="http://app.example.domain/api.html">An Example API Reference</a> </rddl:resource> </li> <li> <rddl:resource xlink:type="simple" xlink:href="http://app.example.com/video.mpg" xlink:role="http://www.isi.edu/in-notes/iana/assignments/media-types/video/mpeg" xlink:title="Explanatory Video" xlink:arcrole="http://www.rddl.org/purposes#software-package"> <a href="http://app.example.com/video.mpg">Explanatory Video</a> </rddl:resource> </li> <li> <rddl:resource xlink:type="simple" xlink:href="http://app.example.com/video2.mpg" xlink:role="http://www.isi.edu/in-notes/iana/assignments/media-types/video/mpeg" xlink:title="Explanatory Video 2" xlink:arcrole="http://www.rddl.org/purposes#software-package"> <a href="http://app.example.com/video2.mpg">Explanatory Video</a> </rddl:resource> </li> </ul> </body> </html> 织梦内容管理系统
如 所示,RDDL 文档就是一般的 XHTML 文档,只不过增加了
<resource>元素,用于描述文档中引用的资源。这个<resource>元素用 XLink 修饰,包括描述资源标题、目标、角色和用途的属性。上述文档列出了多种资源:包括 DTD、java.com/html/xml'>XML Schema、XHTML 文档,还有两个 MPEG 媒体文件。copyright dedecms
<resource> 的属性中,
title和href很简单,分别提供了字符串描述和链接目标的 URL。<resource>元素的role和arcrole属性稍微复杂一点。role属性描述了资源的性质,必须是指向资源名称空间或者引用资源 MIME 类型的 URI, 列出了常见的性质。arcrole属性指定了资源的用途,参见 。内容来自dedecms上述内容对于 RDDL 1.0 来说是对的。但是 2004 年 1 月发布了 RDDL 规范的更新草案 RDDL 2.0,取消了
<resource>元素及其属性。该规范建议使用新属性nature和purpose将 RDDL 信息内嵌在标准 XHTML<a>元素中,这两个属性相当于原来<resource>元素中role和arcrole属性。但是,java.com/html/xml'>XML_RDDL 包不支持 RDDL 2.0,因此本文中的例子仅适用于 RDDL 1.0。 织梦好,好织梦
dedecms.com
织梦好,好织梦得到包含 RDDL 资源定义的 XHTML 文档之后,使用 java.com/html/xml'>XML_RDDL 访问其中的各类信息很简单。 示范了使用 PHP 从 XHTML 文档中检索全部 RDDL 资源的过程:
dedecms.com
<?php // include class file include 'java.com/html/xml'>XML/RDDL.php'; // create RDDL parser // parse RDDL file $rddl = new java.com/html/xml'>XML_RDDL(); $rddl->parseRDDL('example.html'); // print array of resources print_r($rddl->getAllResources()); ?> 织梦内容管理系统
使用 PHP java.com/html/xml'>XML_RDDL 包读取 所示的 XHTML 文档并检索所有的资源。首先读入 java.com/html/xml'>XML_RDDL 类文件,初始化 java.com/html/xml'>XML_RDDL 类的一个实例。然后用该类的
parseRDDL()方法解析源文件(可以是本地文件或者远程 URL)。文档解析之后,getAllResources()方法用关联数组返回文档中所有的<resource>元素列表。本文来自织梦显示了 输出结果的片断:
dedecms.com
Array ( [0] => Array ( [lang] => en [type] => simple [href] => http://app.example.domain/example.xsd [role] => http://www.w3.org/2000/10/java.com/html/xml'>XMLSchema [title] => Example java.com/html/xml'>XML Schema [arcrole] => http://www.rddl.org/purposes#schema-validation ) [1] => Array ( [lang] => en [type] => simple [id] => dtd [href] => http://app.example.domain/example.dtd [role] => http://www.isi.edu/in-notes/iana/assignments/media-types/ application/xml-dtd [title] => Example DTD [arcrole] => http://www.rddl.org/purposes#validation ) ... ) dedecms.com
利用 PHP
foreach()循环很容易改变数组的格式,以用 HTML 显示出来。 示范了这个过程,结果如 所示。织梦内容管理系统
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title></title> <style type="text/css"> table { width:100%; border-collapse:collapse; } td { border: solid 1px black; padding: 5px; } </style> </head> <body> <h2>Resources</h2> <?php // include class file include 'java.com/html/xml'>XML/RDDL.php'; // create RDDL parser // parse RDDL file $rddl = new java.com/html/xml'>XML_RDDL(); $rddl->parseRDDL('example.html'); // get all resources as array // format as table $resources = $rddl->getAllResources(); if (is_array($resources) && count($resources) > 0) { ?> <table> <tr> <td>Resource</td> <td>Description</td> <td>Purpose</td> <td>Role</td> </tr> <?php foreach ($resources as $r) { $purpose = explode('#', $r['arcrole']); ?> <tr> <td><a href="<?php echo $r['href']; ?>"><?php echo $r['href']; ?></a></td> <td><?php echo $r['title']; ?></td> <td><?php echo $purpose[1]; ?></td> <td><a href="<?php echo $r['role']; ?>"><?php echo $r['role']; ?></a></td> </tr> <?php } ?> </table> <?php } ?> </body> </html> 内容来自dedecms
![]()
![]()
织梦内容管理系统
内容来自dedecms
上面所用的
getAllResources()方法返回源文件中所有的资源。但通常要求更复杂一点:比如返回用于validation的所有资源或者具有特定性质的资源。java.com/html/xml'>XML_RDDL 包也为这些需要提供了相应的方法。 显示了其中的一部分:织梦好,好织梦
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:rddl="http://www.rddl.org/" xml:lang="en"> <head> <title>An Example RDDL Document</title> </head> <body> <pre> <?php // include class file include 'java.com/html/xml'>XML/RDDL.php'; // create RDDL parser // parse RDDL file $rddl = new java.com/html/xml'>XML_RDDL(); $rddl->parseRDDL('example.html'); // get resources by nature // get all DTDs echo "Resources by nature:\n"; foreach ($rddl->getResourcesByNature('http://www.isi.edu/in-notes/iana/assignments/ media-types/application/xml-dtd') as $r) { echo $r['href'] . " \n"; } echo "\n"; // get resources by purpose // get all software packages echo "Resources by purpose:\n"; foreach ($rddl->getResourcesByPurpose('http://www.rddl.org/ purposes#software-package') as $r) { echo $r['href'] . " \n"; } echo "\n"; // get a specific resource using its id $dtd = $rddl->getResourceById('dtd'); if (is_array($dtd)) { echo "Resource with id 'dtd':\n"; echo $dtd['href']; } ?> </pre> </body> </html>织梦内容管理系统
织梦内容管理系统
示范了三个重要的方法:
getResourcesByNature()根据某种特性 URI 返回全部具有该特性的资源;getResourcesByPurpose()返回适合特定用途的所有资源;getResourceById()根据 ID 返回和该标识符匹配的资源。这些方法适合检索符合特定条件的资源。织梦好,好织梦
显示了 的输出结果: 织梦内容管理系统
![]()
上述例子表明,java.com/html/xml'>XML_RDDL 包提供一个非常有用的 PHP 工具,可以快速访问 XHTML+RDDL 文档中关于资源的特定信息片断。下一次遇到这样的文档时不妨试一试,看看效果如何! dedecms.com
织梦内容管理系统
学习
- 您可以参阅本文在 develperWorks 全球网站上的 。
- :详细介绍了资源目录描述语言。
- 和 :进一步了解资源目录描述语言,阅读包含各种资源目录的 java.com/html/xml'>XML Namespace 目标。
- :查看更多关于 PHP 和 java.com/html/xml'>XML 开发的包。
- (developerWorks,Uche Ogbuji,2004 年 5 月):了解如何为 java.com/html/xml'>XML 文档或 Web 服务创建好用的用户指南。
- :提供了改进您的 java.com/html/xml'>XML 技能所需要的资源。 内容来自dedecms
- :看看如何才能成为一名 IBM 认证的 java.com/html/xml'>XML 及相关技术的开发人员。
- :developerWorks java.com/html/xml'>XML 库提供了各种技术文章和技巧、教程、标准、IBM 红皮书。最新 java.com/html/xml'>XML 技巧的完整列表请访问 。
- :随时关注技术的最新进展。
- :关于本文主题和其他技术主题的书籍。
获得产品和技术
- :下载这个可从 java.com/html/xml'>XML 文档提取 RDDL 数据的简单易用的接口。 内容来自dedecms
- :下载这个基于 PHP 内置 java.com/html/xml'>XML 扩展的 java.com/html/xml'>XML 解析器。该 java.com/html/xml'>XML 解析类以 PHP 捆绑的 expat 为基础,支持两种基本的操作模式:函数和事件。
- :用这些试用版软件开发您的下一个项目,可直接从 developerWorks 下载。
讨论
- 。
- :参与和 java.com/html/xml'>XML 有关的讨论。
- :阅读本文后在这个论坛上提交您的见解和建议。java.com/html/xml'>XML 专区编辑负责该论坛,欢迎您的参加。
织梦好,好织梦
- :访问这些 blog,加入 。
本文来自织梦
本文来自织梦Vikram Vaswani 是 的创始人和 CEO,该公司是一家专门研究开源工具和技术的咨询服务公司。他还著有 和 等著作。
织梦内容管理系统
推荐内容
- 08-25Java应用:Fedora Linux 8系统
- 07-30源码分享:蜘蛛抓取淘宝
- 07-30AJAX 开发的两种不同的方法
- 07-30IT行业培训必读 优秀程序
- 07-30J2EE面向对象
- 07-30JAVA的事件处理机制
- 12-02JAVA-MyEclipse 自动提示(按
- 12-02一些关于中文乱码问题的
- 07-30AIX字体丢失——解决方案
- 08-25Java应用:Fedora Linux 8系统
- 07-30Security
- 02-23用Java构造自己的媒体播放
- 01-05深入浅出Java堆的管理--垃
- 02-21Java Robot对象实现服务器屏
- 07-30用JavaFX写用户界面控制器
- 11-17让Java说话
技巧: 使用 PHP 解析 RDDL 文档
时间:2009-07-30 作者: 点击: 0次 来源:
资源目录描述语言(Resource Directory Description Language,RDDL)允许文档作者提供关于 XHTML 文档中所用资源的更多信息。使用 PEAR 提供的 XML_RDDL 包中的 API 解析这些 RDDL 描述符,提取可用于
相关创意
· JAVA-MyEclipse 自动提示(按alt+/)时假死现像
· Java应用:Fedora Linux 8系统下配置JDK
我喜欢
(0)
0%
没意思
(0)
style="width:0%"
0%
| 上一篇:Java程序的加密和反加密 | ↑上帝请打分↑ | 下一篇:Java中实现增、删、改、查功能 |










