首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

PHP + XML + XSLT + MySQL 整合實戰:安裝配置、數據抽取、XSLT 轉換與模板分離

     編輯:MySQL 資料庫相關知識

架構優勢:邏輯與展現徹底分離

傳統 PHP 混雜 HTML 難維護。引入 XML 作為數據載體,XSLT 作為轉換引擎,實現:

  • PHP 只負責業務邏輯、查詢數據庫、生成 XML。
  • XSLT 模板純粹負責 HTML 輸出格式。
  • 前端重構零觸動 PHP 代碼,協作高效。

一、Windows 環境擴展安裝配置

必裝 PHP 擴展 (php.ini 啟用)

extension=php_domxml.dll    -- XML DOM 操作 (PHP 4/5 早期)
extension=php_xslt.dll      -- XSLT 處理器 (Sablotron/libxslt)
extension=php_iconv.dll     -- 字符集轉換 (如 GB2312 ↔ UTF-8)

關鍵步驟

  1. 將 PHP 安裝目錄下 dlls/ 加入系統 PATH (否則找不到依賴 DLL)。
  2. 下載 PEAR 套件:DB.php (資料庫抽象)、XML_Serializer / XML_Util (XML 生成)。
  3. php.ini 設 include_path = ".;d:/php/pear"。
  4. 重啟 Apache/IIS 生效。

二、示例數據表:企業用戶信息

CREATE TABLE yhxx (
  nsrnm VARCHAR(15) PRIMARY KEY,   -- 納稅人識別號
  qymc  VARCHAR(200) NOT NULL,     -- 企業名稱
  qydh  VARCHAR(50)                -- 企業電話
) ENGINE=MyISAM CHARSET=utf8;

INSERT INTO yhxx VALUES
('310109040111985', '喬家飲食發展有限公司', '8621-63346626'),
('310104040221736', '上海嘉陵貿易有限公司', '74292546'),
('310108040331576', '翡翠藝術公司', '54861465');

三、PHP 抽取數據生成 XML (browseData.php)

<?php
require_once 'DB.php';
require_once 'XML/Serializer.php';

$dsn = 'mysql://root:pwd@localhost/testdb';
$db = DB::connect($dsn);
if (DB::isError($db)) die($db->getMessage());

$res = $db->query('SELECT * FROM yhxx');
if (DB::isError($res)) die($res->getMessage());

$data = array();
while ($row = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
    $data[] = $row;
}

$serializer = new XML_Serializer(array(
    'rootName' => 'companies',
    'recordName' => 'company',
    'keyAttribute' => 'id'
));
$serializer->serialize($data);
header('Content-Type: text/xml; charset=utf-8');
echo $serializer->getSerializedData();
?>

四、XSLT 模板轉換為 HTML (browseData.xsl)

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="https://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8" indent="yes"/>

<xsl:template match="/>
  <html><head><title>企業用戶列表</title></head><body>
    <table border="1" cellpadding="5" cellspacing="0">
      <tr><th>納稅人識別號</th><th>企業名稱</th><th>電話</th></tr>
      <xsl:for-each select="companies/company">
        <tr>
          <td><xsl:value-of select="nsrnm"/></td>
          <td><xsl:value-of select="qymc"/></td>
          <td><xsl:value-of select="qydh"/></td>
        </tr>
      </xsl:for-each>
    </table>
  </body></html>
</xsl:template>
</xsl:stylesheet>

五、PHP 執行 XSLT 轉換並輸出

<?php
// ... 連接資料庫、查詢生成 XML 字串 $xmlStr (同上) ...

$xsl = file_get_contents('browseData.xsl');

$proc = xslt_create();
$html = xslt_process($proc, 'arg:/_xml', 'arg:/_xsl', NULL,
    array('/_xml' => $xmlStr, '/_xsl' => $xsl));
if ($html) {
    echo $html;
} else {
    echo 'XSLT Error: ' . xslt_error($proc) . ' (code ' . xslt_errno($proc) . ')';
}
xslt_free($proc);
?>

六、現代替代方案提示

PHP 5+ 推薦 DOMDocument + XSLTProcessor (內建 libxml2/libxslt),domxml/xslt 擴展已棄用。現代架構更傾向:

  • 後端 API 輸出 JSON。
  • 前端 Vue/React/Angular 渲染。
  • 或服務端模板引擎 (Twig、Blade、Smarty)。

本文作為 XML/XSLT 經典架構歷史參考。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved