php與XML、XSLT、Mysql的結合運用,代碼篇
<?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文檔 * * @param String $filename - xsl文件的名稱 * @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文件或數組變量根據xsl文件轉換成HTML內容* http://knowsky.com* @param array $arydata - 數組變量* @param String $xslstring - xsl文檔數據* @param String $xmlstring - xml文檔數據*/function getHtml($arydata = false, $xslstring = false, $xmlstring = false){ global $db ;;//使用剛才的$db對象 include_once('XML/sql2xml.php');;//把sql2xml包含進來 $sql2xmlclass = new xml_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); } } //end function getHtml()
//從用戶信息表中查詢數據的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 或 FrontPage XP,制作顯示的頁面,我做了一個,并提供給大家下載 //我們制作的數據顯示頁面文件為:browesData.html /* 這是我們平時要顯示的數據列表界面 <html> <head> <meta http-equiv='Content-Language' content='zh-cn'> <meta http-equiv='Content-Type' content='text/html; charset=gb2312'> <title>數據瀏覽</title> </head> <body> <table border='1' cellpadding='0' cellspacing='0' bordercolor='#111111' id='AutoNumber1'> <tr> <td bgcolor='#C0C0C0'>代碼</td> <td bgcolor='#C0C0C0'>企業名稱</td> <td bgcolor='#C0C0C0'>電話</td> </tr> <tr> <td width='21%'> </td> <td width='50%'> </td> <td width='29%'> </td> </tr> </table> </body> </html>
*/ //我把它加工成一個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>數據瀏覽</title> </head> <body> <table border='1' cellpadding='0' cellspacing='0' bordercolor='#111111' id='AutoNumber1'> <tbody> <tr> <td bgcolor='#C0C0C0'>代碼</td> <td bgcolor='#C0C0C0'>企業名稱</td> <td bgcolor='#C0C0C0'>電話</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);; //程序結束 ?>
相關文章: