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 相关文章推荐
php生成SessionID和图片校验码的思路和实现代码
Mar 10 PHP
php入门教程 精简版
Dec 13 PHP
php foreach 参数强制类型转换的问题
Dec 10 PHP
利用curl抓取远程页面内容的示例代码
Jul 23 PHP
PHP制作百度词典查词采集器
Jan 29 PHP
微信支付扫码支付php版
Jul 22 PHP
php 使用redis锁限制并发访问类示例
Nov 02 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
Nov 07 PHP
php如何修改SESSION的生存存储时间的实例代码
Jul 05 PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 PHP
PHP的PDO连接讲解
Jan 24 PHP
php二维数组按某个键值排序的实例讲解
Feb 15 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
Apache2 httpd.conf 中文版
2006/11/17 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
2014/07/24 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
thinkphp中html:list标签传递多个参数实例
2014/10/30 PHP
php中get_meta_tags()、CURL与user-agent用法分析
2014/12/16 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
使用PHP开发留言板功能
2019/11/19 PHP
PHP执行linux命令6个函数代码实例
2020/11/24 PHP
如何在Mozilla Gecko 用Javascript加载XSL
2007/01/09 Javascript
JS实现图片预加载无需等待
2012/12/21 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
2013/08/01 Javascript
javascript实现tab切换的两个实例
2015/11/05 Javascript
JS解决iframe之间通信和自适应高度的问题
2016/08/24 Javascript
解决canvas画布使用fillRect()时高度出现双倍效果的问题
2017/08/03 Javascript
Webpack性能优化 DLL 用法详解
2017/08/10 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
vue使用Font Awesome的方法步骤
2019/02/26 Javascript
基于Nuxt.js项目的服务端性能优化与错误检测(容错处理)
2019/10/23 Javascript
使用python装饰器验证配置文件示例
2014/02/24 Python
优化Python代码使其加快作用域内的查找
2015/03/30 Python
Python文件夹与文件的相关操作(推荐)
2016/07/25 Python
python实现三维拟合的方法
2018/12/29 Python
Django多数据库的实现过程详解
2019/08/01 Python
python实现银行实战系统
2020/02/26 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
企业申诉管理制度
2014/01/30 职场文书
少先队学雷锋活动月总结
2014/03/09 职场文书
公证委托书格式
2014/09/13 职场文书
离职报告范文
2014/11/04 职场文书
2015年文明创建工作总结
2015/04/30 职场文书
呼啸山庄读书笔记
2015/06/29 职场文书
校长新学期寄语2016
2015/12/04 职场文书