zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

php与XML、XSLT、Mysql的结合运用实现代码

mysqlPHPXML代码 实现 结合 运用 XSLT
2023-06-13 09:14:14 时间
使用php中的xml与xslt要用到一些dll库,
extension=php_domxml.dll//操作XML的函数库
extension=php_iconv.dll//转码用的,比如将GB2312的转成UTF-8的
extension=php_xslt.dll//XSLT的函数库
使用上面这三个库的时候,你要将php安装目录下的dlls目录加入到路径中,否则会找不到
这些类库的
在下面的课程中,我们会用到php中的PEAR类库,主要用了DB类库,Sql2XML类库,大家可以在
pear.php.net上下载最新的版本
下载完上面二个类库以后,大家最好在php.ini中设置一下
include_path=".;d:phppear"
d:phppear是我的pear的安装路径
设置完以后,重新启动一下机器,否则因为路径找不到而导致Apache启动不正常,无法正常使用

至此要使用PHP中的XML和XSLT的设置就完成了,是不是很简单:)
使用Linux的用户可以到
http://www.gingerall.com/下载关于XSLt的源码
http://www.gnu.org/software/libiconv/下载关于Iconv的源码
二php与XML、XSLT、Mysql的结合运用,初级篇
下面我要讲的是一个简单的从数据库中抽取数据,生成XML文档,使用XSLT转换成HTML的过程,
该过程只讲使用这一技术的过程,不会涉及分页等其它的技术
该示例我使用下面的数据库表及数据
表名:企业用户信息表,英文名:yhxx
表结构:
#
#数据表的结构`yhxx`
#
CREATETABLEyhxx(
nsrnmvarchar(15)NOTNULLdefault"",
qymcvarchar(200)NOTNULLdefault"",
qydhvarchar(50)NOTNULLdefault"",
PRIMARYKEY(nsrnm)
)TYPE=MyISAMCOMMENT="用户信息表";
#
#数据表内容`yhxx`
#
INSERTINTOyhxxVALUES("310109040111985","乔家饮食发展有限公司","8621-63346626");
INSERTINTOyhxxVALUES("310104040221736","上海嘉陵贸易有限公司","74292546");
INSERTINTOyhxxVALUES("310108040331576","翡翠艺术公司","54861465");

接下来我开始写抽取数据的程序与显示数据的页面
为了使大家都能明白,我使用最简单的方法来写程序
程序文件名称:browesData.php
页面文件名称:browesData.html
程序及页面文件提供下载,本程序已经在win2000、mysql下通过测试
代码见下一页

如果大家对此技术感兴趣,我再为大家讲一下php与xml、xslt、数据库结合更深一步的应用
复制代码代码如下:

<?php
require_once"DB.php";//PEAR中的数据库处理类
$dataType="mysql";//数据库类型
$user="root";//用户名
$pass="abcd";//密码
$host="202.96.215.200";//Mysql数据库服务器地址
$db_name="test";//数据库名
$dsn="$dataType://$user:$pass@$host/$db_name";//连接数据库的DNS配制
$db=DB::connect($dsn);//连接数据库
if(DB::isError($db))
{
die($db->getMessage());//连接失败,输出出错信息
}
//下面二个是公共的函数
/**
*读取xsl文档
*
*@paramString$filename-xsl文件的名称
*@returnstring
*/
functionreadXsl($filename)
{
if(false==file_exists($filename))
{
echo"要读取的文件<fontcolor="red">$filename</font>不存在</br/>";
returnfalse;
}
returnimplode("",file($filename));
}//endfunctionreadXsl
/**
*将xml文件或数组变量根据xsl文件转换成HTML内容
*http://knowsky.com
*@paramarray$arydata-数组变量
*@paramString$xslstring-xsl文档数据
*@paramString$xmlstring-xml文档数据
*/
functiongetHtml($arydata=false,$xslstring=false,$xmlstring=false)
{
global$db;//使用刚才的$db对象
include_once("XML/sql2xml.php");//把sql2xml包含进来
$sql2xmlclass=newxml_sql2xml($db);//将sql2xml实例化
$sql2xmlclass->setEncoding("GB2312");//设置数据的转码类型
if(false==$xmlstring){//如果用户传入数组数据,则应用该数组数据到xsl
//设置生成XML文档数据的节点名称
$options=array(tagNameRow=>"row",
tagNameResult=>"result"
);
$sql2xmlclass->SetOptions($options);
//添加要生成XML文档的数据
$sql2xmlclass->add($arydata);
}
//得到xml文档
$xmlstring=$sql2xmlclass->getxml();
//print$xmlstring;
//下面开始将XML数据文档用XSLT转换成HTML文档
$arguments=array("/_xml"=>$xmlstring,
"/_xsl"=>$xslstring
);
$xh=xslt_create();
$result=xslt_process($xh,"arg:/_xml","arg:/_xsl",null,$arguments);
if($result){
return$result;
xslt_free($xh);
}else{
return"转换xml数据到xsl时出错";
xslt_free($xh);
}
}//endfunctiongetHtml()


//从用户信息表中查询数据的SQL语句
$sql="select
nsrnm,#代码
qymc,#企业名称
qydh#电话
from
yhxx#用户信息表";
//执行SQL语句
$res=$db->query($sql);
if($db->isError($res))
{
echo"执行SQL语句时出错";
}
while($row=$res->fetchRow(DB_FETCHMODE_ASSOC))
{
$data[]=$row;//将数据放到一个数组中
}
//print_r($data);
//大家可以看到数据已经放到了一个多维的数组中了
//至此,我们的程序已经基本上完成了,再接下去,我们要定义显示数据的页面
//打开你的DW或FrontPageXP,制作显示的页面,我做了一个,并提供给大家下载
//我们制作的数据显示页面文件为:browesData.html
/*
这是我们平时要显示的数据列表界面
<html>
<head>
<metahttp-equiv="Content-Language"content="zh-cn">
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>数据浏览</title>
</head>
<body>
<tableborder="1"cellpadding="0"cellspacing="0"style="border-collapse:collapse"bordercolor="#111111"width="100%"id="AutoNumber1">
<tr>
<tdwidth="21%"align="center"bgcolor="#C0C0C0">代码</td>
<tdwidth="50%"align="center"bgcolor="#C0C0C0">企业名称</td>
<tdwidth="29%"align="center"bgcolor="#C0C0C0">电话</td>
</tr>
<tr>
<tdwidth="21%"> </td>
<tdwidth="50%"> </td>
<tdwidth="29%"> </td>
</tr>
</table>
</body>
</html>

复制代码代码如下:

*/
//我把它加工成一个XSLT格式的HTML文档
/*
<?xmlversion="1.0"encoding="gb2312"?>
<xsl:stylesheetversion="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:outputmethod="html"version="1.0"encoding="GB2312"indent="yes"/>
<xsl:templatematch="/">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
<title>数据浏览</title>
</head>
<body>
<tableborder="1"cellpadding="0"cellspacing="0"style="border-collapse:collapse"bordercolor="#111111"width="100%"id="AutoNumber1">
<tbody>
<tr>
<tdwidth="21%"align="center"bgcolor="#C0C0C0">代码</td>
<tdwidth="50%"align="center"bgcolor="#C0C0C0">企业名称</td>
<tdwidth="29%"align="center"bgcolor="#C0C0C0">电话</td>
</tr>
<xsl:for-eachselect="root/result/row">
<tr>
<tdwidth="21%"> <xsl:value-ofselect="nsrnm"/></td>
<tdwidth="50%"> <xsl:value-ofselect="qymc"/></td>
<tdwidth="29%"> <xsl:value-ofselect="qydh"/></td>
</tr>

</xsl:for-each>

</tbody>

</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

*/
$htmlFile="browesData.html";
$htmlStr=readXsl($htmlFile);//将xslt格式的HTML文档读取到变量中
echogetHtml($data,$htmlStr);
//程序结束
?>