首頁 php教程 php手册 基于xml+xslt+css+php快速构建可扩展网站

基于xml+xslt+css+php快速构建可扩展网站

Jun 13, 2016 am 10:38 AM
t xml 分離 可擴充 基於 快速 數據 顯示 建構 網站

1.让数据与显示分离

 

test.xml 数据:

 

test title

test content

banner

sidebar

main body

end of the page

 

test.xslt 模板:

 

test

]]>

 

 

2.网页自动生成

 

php 程序读入config文件根据文件中指定的目标文件名 和 数据文件名 以及 模板文件名生成目标页面

 

config 文件:

 

test.html

test.xml

test.xslt

 

php 代码:

 

$xml_file = “../conf/config”;

$name_tag = 0;

$xml_tag = 0;

$xsl_tag = 0;

 

$name = “”;

 

$arr = Array();

 

$i = 0;

 

function startElement($parser_instance, $element_name, $attrs)

{

global $name_tag;

global $xml_tag;

global $xsl_tag;

 

switch($element_name)

{

case “NAME” :

$name_tag = 1;

break;

case “XMLFILE” :

$xml_tag = 1;

break;

case “XSLFILE” :

$xsl_tag = 1;

break;

}

}

 

function characterData($parser_instance, $xml_data)

{

global $arr;

global $name_tag;

global $xml_tag;

global $xsl_tag;

global $name;

 

$xml_data = ltrim($xml_data);

 

if ($xml_data != “”)

{

if ($name_tag == 1)

{

$arr["$xml_data"] = Array();

$name = $xml_data;

$arr["$name"][0] = $name;

$name_tag = 0;

}

 

if ($xml_tag == 1)

{

$arr["$name"][1] = $xml_data;

$xml_tag = 0;

}

 

if ($xsl_tag == 1)

{

$arr["$name"][2] = $xml_data;

$xsl_tag = 0;

}

}

}

 

function endElement($parser_instance, $element_name)

{

 

}

 

function buildHtml($name, $xml, $xsl)

{

echo “$name $xml $xsl ”;

$xslDoc = new DOMDocument();

$xslDoc->load(”$xsl”);

 

$xmlDoc = new DOMDocument();

$xmlDoc->load(”$xml”);

 

$proc = new XSLTProcessor();

$proc->importStylesheet($xslDoc);

$html = $proc->transformToXML($xmlDoc);

 

if (!($filehandler = fopen($name, “w+”)))

{

die(”could not open $name output”);

}

 

fwrite($filehandler, $html);

 

fclose($filehandler);

}

 

$parser = xml_parser_create();

 

xml_set_element_handler($parser, “startElement”, “endElement”);

xml_set_character_data_handler($parser, “characterData”);

 

if (!($filehandler = fopen($xml_file, “r”)))

{

die(”could not open XML input”);

}

 

while ($data = fread($filehandler, 4096))

{

if (!xml_parse($parser, $data, feof($filehandler)))

{

die(sprintf(”XML error: %s at line %d”,

xml_error_string(xml_get_error_code($parser)),

xml_get_current_line_number($parser)));

}

}

 

 

fclose($filehandler);

xml_parser_free($parser);

 

 

 

foreach ($arr as $sub_arr)

{

$i = 0;

foreach ($sub_arr as $obj)

{

if ($i == 0)

{

$name = $obj;

}

 

if ($i == 1)

{

$xml = $obj;

}

 

if ($i == 2)

{

$xsl = $obj;

}

 

$i++;

}

buildHtml($name, $xml, $xsl);

 

}

 

 

?>

 

 

 

3.重新规划整个页面

 

 

这样的分拆式设计可以使页面更灵活,随意修改任何部分都不会影响到其余的块,并且可以不断变换其中的某个块的数据 比如:body.xml 来生成更多新的页面, 特别适合新闻系统或论坛使用

 

top.xml:

 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

使用ddrescue在Linux上恢復數據 使用ddrescue在Linux上恢復數據 Mar 20, 2024 pm 01:37 PM

使用ddrescue在Linux上恢復數據

開源!超越ZoeDepth! DepthFM:快速且精確的單目深度估計! 開源!超越ZoeDepth! DepthFM:快速且精確的單目深度估計! Apr 03, 2024 pm 12:04 PM

開源!超越ZoeDepth! DepthFM:快速且精確的單目深度估計!

超級智能體生命力覺醒!可自我更新的AI來了,媽媽再也不用擔心資料瓶頸難題 超級智能體生命力覺醒!可自我更新的AI來了,媽媽再也不用擔心資料瓶頸難題 Apr 29, 2024 pm 06:55 PM

超級智能體生命力覺醒!可自我更新的AI來了,媽媽再也不用擔心資料瓶頸難題

Google狂喜:JAX性能超越Pytorch、TensorFlow!或成GPU推理訓練最快選擇 Google狂喜:JAX性能超越Pytorch、TensorFlow!或成GPU推理訓練最快選擇 Apr 01, 2024 pm 07:46 PM

Google狂喜:JAX性能超越Pytorch、TensorFlow!或成GPU推理訓練最快選擇

iPhone上的蜂窩數據網路速度慢:修復 iPhone上的蜂窩數據網路速度慢:修復 May 03, 2024 pm 09:01 PM

iPhone上的蜂窩數據網路速度慢:修復

美國空軍高調展示首個AI戰鬥機!部長親自試駕全程未乾預,10萬行代碼試飛21次 美國空軍高調展示首個AI戰鬥機!部長親自試駕全程未乾預,10萬行代碼試飛21次 May 07, 2024 pm 05:00 PM

美國空軍高調展示首個AI戰鬥機!部長親自試駕全程未乾預,10萬行代碼試飛21次

阿里7B多模態文件理解大模型拿下新SOTA 阿里7B多模態文件理解大模型拿下新SOTA Apr 02, 2024 am 11:31 AM

阿里7B多模態文件理解大模型拿下新SOTA

特斯拉機器人進廠打工,馬斯克:手的自由度今年將達到22個! 特斯拉機器人進廠打工,馬斯克:手的自由度今年將達到22個! May 06, 2024 pm 04:13 PM

特斯拉機器人進廠打工,馬斯克:手的自由度今年將達到22個!

See all articles