ホームページ  >  記事  >  バックエンド開発  >  xml+xslt+css+php_PHP チュートリアルに基づいてスケーラブルな Web サイトをすばやく構築する

xml+xslt+css+php_PHP チュートリアルに基づいてスケーラブルな Web サイトをすばやく構築する

WBOY
WBOYオリジナル
2016-07-13 17:39:38954ブラウズ

1.让データと表示分离
test.xml データ:
テストタイトル
テストコンテンツ
バナー
<左>サイドバー
本体
ページの終わり
test.xslt モジュール:
テスト
]]>
2.网页自動生成
php 程序入力configファイルに基づいて、ファイル内で指定された目标ファイル名とデータファイル名およびモジュールファイル名を生成目标页面
設定ファイル:
<ページ>
test.html
test.xml
test.xslt
php代:
$xml_file = “../conf/config”;
$name_tag = 0;
$xml_tag = 0;
$xsl_tag = 0;
$name = "";
$arr = 配列();
$i = 0;
関数 startElement($parser_instance, $element_name, $attrs)
{
グローバル $name_tag;
グローバル $xml_tag;
グローバル $xsl_tag;
スイッチ($要素名)
{
ケース「名前」:
$name_tag = 1;
休憩;
ケース「XMLFILE」:
$xml_tag = 1;
休憩;
ケース「XSLFILE」:
$xsl_tag = 1;
休憩;
}
}
関数characterData($parser_instance, $xml_data)
{
グローバル$arr;
グローバル $name_tag;
グローバル $xml_tag;
グローバル $xsl_tag;
グローバル $name;
$xml_data = ltrim($xml_data);
if ($xml_data != “”)
{
if ($name_tag == 1)
{
$arr["$xml_data"] = 配列();
$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;
}
}
}
関数 endElement($parser_instance, $element_name)
{
}
関数 buildHtml($name, $xml, $xsl)
{
エコー「$name $xml $xsl」 ”;
$xslDoc = 新しい DOMDocument();
$xslDoc->load(”$xsl”);
$xmlDoc = 新しい DOMDocument();
$xmlDoc->load(”$xml”);
$proc = 新しい XSLTProcessor();
$proc->importStylesheet($xslDoc);
$html = $proc->transformToXML($xmlDoc);
if (!($filehandler = fopen($name, “w+”)))
{
die(”$name 出力を開けませんでした”);
}
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(”XML 入力を開けませんでした”);
}
while ($data = fread($filehandler, 4096))
{
if (!xml_parse($parser, $data, feof($filehandler)))
{
die(sprintf(”XML エラー: %s 行 %d”,
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
}
fclose($filehandler);
xml_parser_free($parser);
foreach ($arr として $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:

www.bkjia.com本当http://www.bkjia.com/PHPjc/486275.html技術記事 1.让データと表示分离 test.xml データ: xml titletest title/title contenttest content/content topbanner/top leftsidebar/left bodymain body/body end of the page/end /xml test...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。