php&java(三)_php基础

例子二:通过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

时间: 2024-09-22 20:07:13

php&amp;java(三)_php基础的相关文章

一个简单的自动发送邮件系统(三)_php基础

一个简单的自动发送邮件系统(三)     这里介绍php和mysql结合起来实用.如何从mysql数据库中提取数据.     好,我们已经成功的完成了我们的要求,很多的数据已经存在了数据库中,现在的问题是,如何查询这些数据,得到有用的结果呢? 在下面的程序中,我们将选择"apple"的用户输出. -------------------------------------------------------- <? /* 声明一些必须的变量*/ $hostname = "

新版PHP将向Java靠拢_php基础

所谓的"PHP"就是开放源码的Web应用开发/运行环境,日前<日经Open System>记者就今后PHP开发中心的发展计划等问题采访了该中心成员Zeev Suraski.Zeev Suraski表示,新版PHP中将导入try.catch等语句,从而更接近Java,以便更容易地进行大型系统的开发.(采访者:高桥 信赖) --请您谈一下决定开发PHP的起因. Rasmus Lerdorf于1995年首先公布了PHP.1997年我在制作以色列大学网页及网上商店站点时,使用了当时

聊天室php&amp;amp;mysql(三)_php基础

第三个页面 name="frame3.php" <? include "../signup/mysql.php"; //echo $userid; //echo $private; if($p)$p=1; else $p=0; if(($action="ok")and($p)){ $sql="select userid,id from chat_user_list where userid='$userid'"; $re

PHP的FTP学习(三)_php基础

By Vikram Vaswani Melonfire November 07, 2000 现在,我们已经接触了PHP关于FTP的大量函数,但这仅仅只是函数,离我们的目标还远远不够,要显示出这些函数的真正力量,我们应该建立一个程序,这个程序能以WEB方式上传,下载文件---这就是我们将要做的! 在我们进入代码前,我想要告诉大家的是,这个例子仅仅只是为了向大家解释PHP的各种FTP函数的使用,很多方面还不够完善,比如说,错误分析等,至于你想应用到你自己的程序中,你应该进行一些修改! 程序包括以下几

PHP个人网站架设连环讲(三)_php基础

三 首页新闻发布,让你更新更轻松(中) 上次我们做了一个文件头(至于文件尾,请大家自己做,假设为tail.php),一个函数的模块,现在,我们来一个基本功能的实现,也就是动态发布啦 <?php include("makestr.php"; include("head.php"); $newspath="/announce/"; //以文本文件存放的新闻文件的目录 $newsfile=array();//准备新闻数组 $hd=dir($new

用PHP制作静态网站的模板框架(三)_php基础

避免页面元素重复 "这确实不错",你也许会想,"我的网站主要就是由大量的静态页面构成.现在我可以从所有页面中删除它们的公共部分,要更新这些公共部分实在太麻烦了.以后我就可以用模板制作出很容易维护的统一页面布局."但事情并非这么简单,"大量的静态页面"道出了问题的所在. 请考虑上面的例子.这个例子实际上只有一个example.php页面,它之所以能够生成整个网站的所有页面,是因为它利用了URL中的查询字符串从数据库之类的信息源动态地构造出页面. 我

BBS(php &amp;amp; mysql)完整版(三)_php基础

//此页面为php3.php <? include "signup/mysql.inc"; switch($part){    case "1" :$table="bbs_php";break;    case "2" :$table="bbs_mysql";break;    case "3" :$table="bbs_html";break;    case

建立动态的WML站点(三)_php基础

接着用户必须在下一个文件(index3.wml)中输入.我们要求用户输入科目的名字或者教授的姓.你要留意一下变量在页面之间是怎样传送的.语法看来有点复杂,不过可以让你了解整个过程是怎样通过几个文件来完成的. <?php  Header("Content-type: text/vnd.wap.wml");  header("Cache-Control: no-cache, must-revalidate");  header("Pragma: no-c

模拟OICQ的实现思路和核心程序(三)_php基础

5 聊天信息的发送.阅读和回复程序 - shortalk.php <?require("require.php"); // 判断用户是否合法在线的公用程序?><html><head><title>短信息</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><style ty

一个程序下载的管理程序(三)_php基础

//后台程序sign.php源代码如下: <?require("../opendata.php");?> <? if($action=="sign") { if($say==""||$title==""||$url==""||$size=="") { header("location:../message.php?message=资料不完整&redir