php与XML、XSLT、Mysql的结合运用,代码篇

 1   
 2require_once "DB.php"; //PEAR中的数据库处理类   
 3$dataType = "mysql" ; //数据库类型   
 4$user = "root"; //用户名   
 5$pass = "abcd" ; //密码   
 6$host="202.96.215.200"; //Mysql数据库服务器地址   
 7$db_name = "test"; //数据库名   
 8$dsn="$dataType://$user:$pass@$host/$db_name"; //连接数据库的DNS配制   
 9$db = DB::connect($dsn); //连接数据库   
10if (DB::isError($db))   
11{   
12die ($db->getMessage()); //连接失败,输出出错信息   
13}   
14  
15//下面二个是公共的函数   
16/**   
17* 读取xsl文档   
18*   
19* @param String $filename - xsl文件的名称   
20* @return string   
21*/   
22function readXsl($filename)   
23{   
24if(false==file_exists($filename))   
25{   
26echo "要读取的文件

<font color="red">$filename</font>

 1不存在
 2";   
 3return false ;   
 4}   
 5return implode('', file($filename));   
 6} //end function readXsl 
 7
 8/**   
 9* 将xml文件或数组变量根据xsl文件转换成HTML内容   
10* http://knowsky.com   
11* @param array $arydata - 数组变量   
12* @param String $xslstring - xsl文档数据   
13* @param String $xmlstring - xml文档数据   
14*/   
15function getHtml($arydata = false, $xslstring = false, $xmlstring = false)   
16{   
17global $db ; //使用刚才的$db对象   
18include_once("XML/sql2xml.php"); //把sql2xml包含进来   
19$sql2xmlclass = new xml_sql2xml($db); //将sql2xml实例化   
20$sql2xmlclass->setEncoding("GB2312"); //设置数据的转码类型   
21if (false == $xmlstring) { // 如果用户传入数组数据,则应用该数组数据到xsl   
22//设置生成XML文档数据的节点名称   
23$options = array ( tagNameRow => "row" ,   
24tagNameResult => "result"   
25);   
26$sql2xmlclass->SetOptions($options);   
27//添加要生成XML文档的数据   
28$sql2xmlclass->add($arydata);   
29}   
30//得到xml文档   
31$xmlstring = $sql2xmlclass->getxml();   
32//print $xmlstring;   
33//下面开始将XML数据文档用XSLT转换成HTML文档   
34$arguments = array('/_xml' => $xmlstring,   
35'/_xsl' => $xslstring   
36);   
37$xh = xslt_create(); 
38
39$result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', null, $arguments); 
40
41if ($result) {   
42return $result;   
43xslt_free($xh);   
44} else {   
45return "转换xml数据到xsl时出错";   
46xslt_free($xh);   
47}   
48} //end function getHtml() 
49
50  
51//从用户信息表中查询数据的SQL语句   
52$sql = "select   
53nsrnm, #代码   
54qymc, #企业名称   
55qydh #电话   
56from   
57yhxx #用户信息表";   
58// 执行SQL语句   
59$res = $db->query($sql);   
60if ($db->isError($res))   
61{   
62echo "执行SQL语句时出错";   
63}   
64while ($row = $res->fetchRow(DB_FETCHMODE_ASSOC))   
65{   
66$data[] = $row; //将数据放到一个数组中   
67}   
68//print_r($data);   
69//大家可以看到数据已经放到了一个多维的数组中了   
70//至此,我们的程序已经基本上完成了,再接下去,我们要定义显示数据的页面   
71//打开你的DW 或 FrontPage XP,制作显示的页面,我做了一个,并提供给大家下载   
72  
73//我们制作的数据显示页面文件为:browesData.html   
74/*   
75这是我们平时要显示的数据列表界面

<html> <head> <meta content="zh-cn" http-equiv="Content-Language"/> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> <title>数据浏览</title> </head> <body> <table border="1" bordercolor="#111111" cellpadding="0" cellspacing="0" id="AutoNumber1" style="border-collapse: collapse" width="100%"> <tr> <td align="center" bgcolor="#C0C0C0" width="21%">代码</td> <td align="center" bgcolor="#C0C0C0" width="50%">企业名称</td> <td align="center" bgcolor="#C0C0C0" width="29%">电话</td> </tr> <tr> <td width="21%"> </td> <td width="50%"> </td> <td width="29%"> </td> </tr> </table> </body> </html>

1*/   
2  
3//我把它加工成一个XSLT格式的HTML文档   
4/*
5<?xml version="1.0" encoding="gb2312"

<xsl:stylesheet version="1.0" xmlns:xsl=" http://www.w3.org/1999/XSL/Transform ">

1<xsl:output encoding="GB2312" indent="yes" method="html" version="1.0"></xsl:output>
 1<xsl:template match="/">
 2<html xmlns=" http://www.w3.org/1999/xhtml ">
 3<head>
 4<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
 5<title>数据浏览</title>
 6</meta></head>
 7<body>
 8<table border="1" bordercolor="#111111" cellpadding="0" cellspacing="0" id="AutoNumber1" style="border-collapse: collapse" width="100%">
 9<tbody>
10<tr>
11<td align="center" bgcolor="#C0C0C0" width="21%">代码</td>
12<td align="center" bgcolor="#C0C0C0" width="50%">企业名称</td>
13<td align="center" bgcolor="#C0C0C0" width="29%">电话</td>
14</tr>
15<xsl:for-each select="root/result/row">
16<tr>
17<td width="21%"> <xsl:value-of select="nsrnm"></xsl:value-of></td>
18<td width="50%"> <xsl:value-of select="qymc"></xsl:value-of></td>
19<td width="29%"> <xsl:value-of select="qydh"></xsl:value-of></td>
20</tr>
21</xsl:for-each>
22</tbody>
23</table>
24</body>
25</html>
26</xsl:template>

*/
$htmlFile="browesData.html" ;
$htmlStr = readXsl($htmlFile); //将xslt格式的HTML文档读取到变量中
echo getHtml($data, $htmlStr) ;

//程序结束

?>

Published At
Categories with Web编程
Tagged with
comments powered by Disqus