php與XML、XSLT、Mysql的結(jié)合運(yùn)用,代碼篇
<?php; require_once 'DB.php';;//PEAR中的數(shù)據(jù)庫(kù)處理類(lèi) $dataType = 'mysql' ;;//數(shù)據(jù)庫(kù)類(lèi)型 $user = 'root';;//用戶(hù)名 $pass = 'abcd' //密碼 $host='202.96.215.200';;//Mysql數(shù)據(jù)庫(kù)服務(wù)器地址 $db_name = 'test' //數(shù)據(jù)庫(kù)名 $dsn='$dataType://$user:$pass@$host/$db_name';//連接數(shù)據(jù)庫(kù)的DNS配制 $db = DB::connect($dsn) //連接數(shù)據(jù)庫(kù) if (DB::isError($db)) {; die ($db->getMessage());;//連接失敗,輸出出錯(cuò)信息 } //下面二個(gè)是公共的函數(shù) /** * 讀取xsl文檔 * * @param String $filename - xsl文件的名稱(chēng) * @return string */ function readXsl($filename) {; if(false==file_exists($filename)) { echo '要讀取的文件<font color='red'>$filename</font>不存在</br />';; return false;; } return implode('', file($filename)); } //end function readXsl
/*** 將xml文件或數(shù)組變量根據(jù)xsl文件轉(zhuǎn)換成HTML內(nèi)容* http://knowsky.com* @param array $arydata - 數(shù)組變量* @param String $xslstring - xsl文檔數(shù)據(jù)* @param String $xmlstring - xml文檔數(shù)據(jù)*/function getHtml($arydata = false, $xslstring = false, $xmlstring = false){ global $db ;;//使用剛才的$db對(duì)象 include_once('XML/sql2xml.php');;//把sql2xml包含進(jìn)來(lái) $sql2xmlclass = new xml_sql2xml($db);;//將sql2xml實(shí)例化 $sql2xmlclass->setEncoding('GB2312');;//設(shè)置數(shù)據(jù)的轉(zhuǎn)碼類(lèi)型 if (false == $xmlstring) { // 如果用戶(hù)傳入數(shù)組數(shù)據(jù),則應(yīng)用該數(shù)組數(shù)據(jù)到xsl;;;;; //設(shè)置生成XML文檔數(shù)據(jù)的節(jié)點(diǎn)名稱(chēng) $options = array (; tagNameRow;;;=> 'row' , tagNameResult=> 'result' ); $sql2xmlclass->SetOptions($options); //添加要生成XML文檔的數(shù)據(jù) $sql2xmlclass->add($arydata) } //得到xml文檔 $xmlstring = $sql2xmlclass->getxml(); //print $xmlstring; //下面開(kāi)始將XML數(shù)據(jù)文檔用XSLT轉(zhuǎn)換成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 '轉(zhuǎn)換xml數(shù)據(jù)到xsl時(shí)出錯(cuò)'; xslt_free($xh); } } //end function getHtml()
//從用戶(hù)信息表中查詢(xún)數(shù)據(jù)的SQL語(yǔ)句 $sql = 'select nsrnm, #代碼 qymc,; #企業(yè)名稱(chēng) qydh#電話(huà) from yhxx#用戶(hù)信息表'; // 執(zhí)行SQL語(yǔ)句 $res = $db->query($sql); if ($db->isError($res)) { echo '執(zhí)行SQL語(yǔ)句時(shí)出錯(cuò)'; } while ($row = $res->fetchRow(DB_FETCHMODE_ASSOC)) {; $data[] = $row;;//將數(shù)據(jù)放到一個(gè)數(shù)組中 } //print_r($data); //大家可以看到數(shù)據(jù)已經(jīng)放到了一個(gè)多維的數(shù)組中了 //至此,我們的程序已經(jīng)基本上完成了,再接下去,我們要定義顯示數(shù)據(jù)的頁(yè)面 //打開(kāi)你的DW 或 FrontPage XP,制作顯示的頁(yè)面,我做了一個(gè),并提供給大家下載 //我們制作的數(shù)據(jù)顯示頁(yè)面文件為:browesData.html /* 這是我們平時(shí)要顯示的數(shù)據(jù)列表界面 <html> <head> <meta http-equiv='Content-Language' content='zh-cn'> <meta http-equiv='Content-Type' content='text/html; charset=gb2312'> <title>數(shù)據(jù)瀏覽</title> </head> <body> <table border='1' cellpadding='0' cellspacing='0' bordercolor='#111111' id='AutoNumber1'> <tr> <td bgcolor='#C0C0C0'>代碼</td> <td bgcolor='#C0C0C0'>企業(yè)名稱(chēng)</td> <td bgcolor='#C0C0C0'>電話(huà)</td> </tr> <tr> <td width='21%'> </td> <td width='50%'> </td> <td width='29%'> </td> </tr> </table> </body> </html>
*/ //我把它加工成一個(gè)XSLT格式的HTML文檔 /* <?xml version='1.0' encoding='gb2312'?> <xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> <xsl:output method='html' version='1.0' encoding='GB2312' indent='yes' /> <xsl:template match='/'> <html xmlns='http://www.w3.org/1999/xhtml'> <head> <meta http-equiv='Content-Type' content='text/html; charset=gb2312' /> <title>數(shù)據(jù)瀏覽</title> </head> <body> <table border='1' cellpadding='0' cellspacing='0' bordercolor='#111111' id='AutoNumber1'> <tbody> <tr> <td bgcolor='#C0C0C0'>代碼</td> <td bgcolor='#C0C0C0'>企業(yè)名稱(chēng)</td> <td bgcolor='#C0C0C0'>電話(huà)</td> </tr> <xsl:for-each select='root/result/row'> <tr> <td width='21%'> <xsl:value-of select='nsrnm' /></td> <td width='50%'> <xsl:value-of select='qymc' /></td> <td width='29%'> <xsl:value-of select='qydh' /></td> </tr> </xsl:for-each> </tbody> </table> </body> </html> </xsl:template> </xsl:stylesheet> */ $htmlFile='browesData.html';;; $htmlStr = readXsl($htmlFile);;//將xslt格式的HTML文檔讀取到變量中 echo getHtml($data, $htmlStr);; //程序結(jié)束 ?>
相關(guān)文章:
