php&java(三)


Posted in PHP onOctober 09, 2006

例子二:通过Xalan 1.2,使用XSLT转换XML

做为第二个例子,我们使用了Xalan-java的XSLT引擎,这个引擎来自于APACHE的XML项目,使用这个程序,我们能够使用XSL转换XML源文件。这将极大的方便我们处理文档和进行内容管理。

开始之前,我们需要将xerces.jar 和 xalan.jar文件放入java.class.path目录下(这两个文件包含在Xalan-Java 1.2 中,可以从xml.apache.org处下载)。
PHP程序如下:
函数xslt_transform()以XML和XSL文件为参数,形式可为文件名(如:foo.xml)或URL(如:http://localhost/foo.xml)。

<?php

function xslt_transform($xml,$xsl) {

  // Create a XSLTProcessorFactory object. XSLTProcessorfactory is a Java
  // class which manufactures the processor for performing transformations.
  $XSLTProcessorFactory = new java("org.apache.xalan.xslt.XSLTProcessorFactory");

  // Use the XSLTProcessorFactory method getProcessor() to create a
  // new XSLTProcessor object.
  $XSLTProcessor = $XSLTProcessorFactory->getProcessor();

  // Use XSLTInputSource objects to provide input to the XSLTProcessor
  // process() method for transformation. Create objects for both the
  // xml source as well as the XSL input source. Parameter of
  // XSLTInputSource is (in this case) a 'system identifier' (URI) which
  // can be an URL or filename. If the system identifier is an URL, it
  // must be fully resolved.
  $xmlID = new java("org.apache.xalan.xslt.XSLTInputSource", $xml);
  $stylesheetID = new java("org.apache.xalan.xslt.XSLTInputSource", $xsl);

  // Create a stringWriter object for the output.
  $stringWriter = new java("java.io.StringWriter");

  // Create a ResultTarget object for the output with the XSLTResultTarget
  // class. Parameter of XSLTResultTarget is (in this case) a 'character
  // stream', which is the stringWriter object.  
  $resultTarget = new java("org.apache.xalan.xslt.XSLTResultTarget", $stringWriter);

  // Process input with the XSLTProcessors' method process(). This
  // method uses the XSL stylesheet to transform the XML input, placing
  // the result in the result target.
  $XSLTProcessor->process($xmlID,$stylesheetID,$resultTarget);

  // Use the stringWriters' method toString() to
  // return the buffer's current value as a string to get the
  // transformed result.
  $result = $stringWriter->toString();
  $stringWriter->close();
  return($result);
}

?>

函数定义好后,我们就可以调用它了,在下面的例程中,变量$xml指向一个URL字符串,$xsl也是如此。这个例子将显示5个最新的phpbuilder.com文章标题。

<?php

$xml = "http://www.phpbuilder.com/rss_feed.php?type=articles&limit=5";
$xsl = "http://www.soeterbroek.com/code/xml/rss_html.xsl";
$out = xslt_transform($xml,$xsl);
echo $out;

?>

如果你在本地机上运行程序,必须确保你的函数参数指向正确的文件名。

<?php

$xml  = "/web/htdocs/xml_java/rss_feed.xml";
$xsl  = "/web/htdocs/xml_java/rss_html.xsl";
$out = xslt_transform($xml,$xsl);
echo $out;

?>

虽然这种效果我们可以通过其它方法实现,或许那些方法更好,但这个例子能让你对PHP调用JAVA类有一个更好的了解。

教程结束了,希望你能够从这篇教程中学到点东西,以下是一些你用得到的链接:
http://www.php4win.de ~ A great Win32 distribution of PHP
http://www.javasoft.com ~ Sun's Java release
http://www.jars.com ~ Start searching for handy Java classes
http://www.gamelan.com ~ More Java classes
http://www.technetcast.com/tnc_play_stream.html?stream_id=400 ~ Sam Ruby about PHP and Java integration at Open Source Convention 2000 (audio)
http://xml.apache.org ~ Apache XML Project
http://www.phpbuilder.com/columns/justin20001025.php3 ~ Transforming XML with XSL using Sablotron

PHP 相关文章推荐
把从SQL中取出的数据转化成XMl格式
Oct 09 PHP
如何利用php+mysql保存和输出文件
Oct 09 PHP
php 文件上传类代码
Aug 06 PHP
phpmailer发送gmail邮件实例详解
Jun 24 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
Nov 19 PHP
前端必学之PHP语法基础
Jan 01 PHP
PHP魔术方法使用方法汇总
Feb 14 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
Mar 07 PHP
Zend Framework实现多服务器共享SESSION数据的方法
Mar 22 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
Jun 17 PHP
解决laravel 出现ajax请求419(unknown status)的问题
Sep 03 PHP
Yii框架 session 数据库存储操作方法示例
Nov 18 PHP
一个用于mysql的数据库抽象层函数库
Oct 09 #PHP
教你如何把一篇文章按要求分段
Oct 09 #PHP
全文搜索和替换
Oct 09 #PHP
转换中文日期的PHP程序
Oct 09 #PHP
PHP网上调查系统
Oct 09 #PHP
PHP的ASP防火墙
Oct 09 #PHP
一个高ai的分页函数和一个url函数
Oct 09 #PHP
You might like
PHP用GD库生成高质量的缩略图片
2011/03/09 PHP
PHP伪静态Rewrite设置之APACHE篇
2014/07/30 PHP
php多线程实现方法及用法实例详解
2015/10/26 PHP
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
正负小数点后两位浮点数实现原理及代码
2013/09/06 Javascript
原生js页面滚动延迟加载图片
2015/12/20 Javascript
Node.js 应用跑得更快 10 个技巧
2016/04/03 Javascript
jQuery绑定事件on()与弹窗的简要概述
2016/04/27 Javascript
基于Bootstrap仿淘宝分页控件实现代码
2016/11/07 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
JavaScript无阻塞加载和defer、async详解
2017/02/26 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
JavaScript创建对象的七种方式(推荐)
2017/06/26 Javascript
vue实现仿淘宝结账页面实例代码
2017/11/08 Javascript
在vue项目中使用sass的配置方法
2018/03/20 Javascript
node中间层实现文件上传功能
2018/06/11 Javascript
js实现简易计算器功能
2019/10/18 Javascript
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
python实现的简单FTP上传下载文件实例
2015/06/30 Python
Python实现文件按照日期命名的方法
2015/07/09 Python
Python微医挂号网医生数据抓取
2019/01/24 Python
Python Pandas 获取列匹配特定值的行的索引问题
2019/07/01 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
python如何删除文件、目录
2020/06/23 Python
雅诗兰黛美国官网:Estee Lauder美国
2016/07/21 全球购物
巴西食品补充剂在线零售商:Músculos na Web
2017/08/07 全球购物
泰国王权免税店官方网站:KingPower
2019/03/11 全球购物
STAUD官方网站:洛杉矶独有的闲适风格
2019/04/11 全球购物
医院门卫岗位职责
2013/12/30 职场文书
保护环境演讲稿
2014/05/10 职场文书
关于青春的演讲稿三分钟
2014/08/22 职场文书
劳动争议和解协议书范本
2014/11/20 职场文书
2014年学校财务工作总结
2014/12/06 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书
受欢迎的自荐信,就这么写!
2019/04/19 职场文书