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

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

Jun 13, 2016 am 10:38 AM
txml그리고분리확장 가능기반으로빠른데이터보여주다짓다웹사이트

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 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전