ホームページ >php教程 >php手册 >PHP と XML を使用して Web サイトをプログラミングする

PHP と XML を使用して Web サイトをプログラミングする

WBOY
WBOYオリジナル
2016-06-21 09:09:32808ブラウズ

xml|プログラミング

1. 小さなシーケンス

HTML は学習が容易で、汎用性の高い PHP プログラムが HTML 言語に埋め込まれています。しかし、WEB の普及が進むにつれ、HTML の弱点がますます明らかになってきています。 XML の登場により、これらの欠点が補われ、インターネット上のすべてのデータを処理できる汎用的な方法が提供されます。

2. HTML の限界の分析

1. HTML はスケーラビリティが低い。一般的なアプリケーションには HTML で十分ですが、数学や化学などの記号を扱う場合には明らかな欠点があり、拡張できないため開発が大きく制限されます。

2.リンクが切れた場合は自動修正できません。 Web ページの URL アドレスは頻繁に変更されるため、URL アドレスを変更する場合は手動で情報を変更する必要があり、そうしないと「404 URL アドレスが見つかりません」というメッセージが表示され、Web ページの保守作業が大幅に増加します。

3. データ検索に時間がかかります。 HTMLは主にWebページの表示制御に使用されるため、同じデータであってもWebページごとに保存形式が異なるため、データ検索時に必要な情報を素早く見つけることができません。

4. HTML では、2 バイト文字や多国籍文字に対する十分なサポートがありません。たとえば、中国語の情報ページはプラットフォームが異なると表示されない場合があります。

こうした欠点があるからこそ、人々はHTMLに代わるWebページ制作言語を研究してきました。その中には、すでに使用されているものとして、Extensible Markup Language XML、Cascading Style Sheets (CSS)、Dynamic HTML (DHTML) などがあります。

3. XML の構成

以下にいくつかの主要な XML テクノロジーの簡単なリストを示します:

1. DTD (Document Type Declaration)

DTD の主な機能は、XML のコンテンツ モードを定義することです。 XML タグの範囲。属性のデータ型を定義します。ただし、XML で記述されていないため、スケーラビリティが比較的低く、提供されるデータ型の数も限られているため、その役割は限られています。

2. XML Schema

XML Schemaの機能はDTDの機能と似ています。ただし、スキーマ ファイルには、それを参照する XML ファイル内の特定のタイプの要素と属性が記述されているという点が異なります。さらに、スキーマは XML で記述されているため、DTD と比較して以下の利点があります:

・XML スキーマのコンテンツ モデルはオープンであり、自由に拡張できますが、DTD は拡張されたコンテンツを解析できません。

・DTDはコンテンツタイプを文字列としてのみ定義できますが、XMLスキーマではコンテンツタイプを整数、浮動小数点、ブール値、またはその他多くの単純なデータ型として定義できます。

・XML スキーマは、名前空間を使用してドキュメント内の特別なノードをスキーマに接続します。XML ファイルには複数の対応するスキーマを含めることができますが、XML ファイルには DTD を 1 つだけ含めることができます。

3. XLink

Web言語として、XMLのリンク機能は非常に重要です。 XML のリンクおよびアドレス指定メカニズムには、XLink、XPath、および XPointer が含まれます。 XLink は、文書間に一方向または多方向の複雑な接続関係を確立できる強力なリンク方法と、注釈リンク、概要リンク、拡張リンク セットなどのさまざまなリンク機能を提供します。 XPath は XSLT および XPointer で使用され、XML ドキュメント内のノードおよびノー​​ド セットに対する相対的な位置決めをサポートします。 XPointer は、XPath に基づいて XML ドキュメントのコンテンツ (文字列や選択された段落など) の内部構造の位置決めを提供します。 XML のリンク機能は、HTML に比べて大幅に強化されています。

4. CSS と XSL

XML の大きな特徴は、内容と形式が分離されていることです。つまり、XML 文書には、文書を表示/表現する方法に関する情報が含まれていません。 CSS と XSL (XML スタイル言語) は、XML ドキュメントの表示の問題を解決します。

CSS(Cascading Style Sheets)はHTMLやXMLでも使用できます。 XSL は XML 構文を完全に使用しており、CSS よりもはるかに強力です。

5. DOM

ドキュメント オブジェクト モデル (DOM) は、ドキュメントのコンテンツ、構造、スタイルに動的にアクセスして更新する手段を提供する、プラットフォームおよび言語に依存しないプログラム インターフェイスです。テキストをさらに処理し、処理の結果をプレゼンテーション ページに更新できます。

DOM の目標は、コア、HTML、XML の 3 つの部分で構成される、XML と HTML の標準プログラミング インターフェイスを定義することです。 DOM のコア部分は、あらゆる構造化ドキュメントを表すことができる基礎となるオブジェクトのセットを確立します。 HTML と XML は、より便利なドキュメント ビューとして機能する高レベルのインターフェイスを提供します。 DOM 仕様はオブジェクトとメソッドで構成されます。プログラマーは、特定の種類のドキュメントへのアクセスと操作を容易にするためにこれらを使用します。

6. 名前空間

名前空間は、XML ファイルの要素と属性に現れるすべての名前の集合であり、URL によって区別されます。 XML では、ユーザーがタグと要素を自分で定義できます。したがって、複数の XML ファイルを 1 つにマージすると、競合が発生する可能性があります。名前空間はこの問題を解決します。

4. PHP の XML サポート

PHP は XML を強力にサポートします。 XML「パーサー」を使用し、このパーサーをサポートするために、20 (PHP4) の XML 解析関数を提供します。以下は、最も一般的に使用される PHP 解析関数の一部です。

1. xml_parse

boolean xml_parse(int parser, string data, int [isFinal]);
この関数は、XML 形式のファイル データを解析するために使用されます。パラメータ パーサーは解析コードです。パラメータ データは、解析されたデータ ブロック (チャンク) です。 isFinal パラメータは省略できます。true に設定すると、システムは最後のデータを data パラメータに自動的に送信します。エラーがない場合は true を返します。

2. xml_parser_create

int xml_parser_create(string [encoding]);
この関数は、新しい XML パーサーを初期化するために使用されます。エンコーディング パラメータは省略できます。デフォルト値は ISO-8859-1 です。US-ASCII と UTF-8 です。成功すると、他の関数で使用するためにパーサー コードが返され、失敗すると false 値が返されます。

3.パラメータ パーサーは解析コードです。 startElementHandler パラメーターと endElementHandler パラメーターは、それぞれ要素の開始と終了のヘッダーです。startElementHandler には解析コード、名前、属性が含まれる必要があります。一方、endElementHandler パラメーターには解析コードと名前が含まれます。エラーがない場合は true を返します。

4.パラメータ パーサーは解析コードです。パラメータ ハンドラには、解析コードとデータ文字列の 2 つの要素が含まれています。エラーがない場合は true を返します。

5. xml_get_error_code

int xml_get_error_code(int parser);
この関数はXML処理中のエラーコードを取得することができます。パラメータ パーサーは解析コードです。パーサーにエラーがある場合は false 値が返され、それ以外の場合はエラー コード (XML_ERROR_BINARY_ENTITY_REF .... など) が返されます。

6. xml_error_string

string xml_error_string(int code);
この関数はXML処理中のエラーコードを取得することができます。パラメータコードは解析エラーコードです。エラーがない場合、戻り値はコードのテキスト説明文字列です。

7.パラメータ パーサーは解析コードです。パーサーにエラーがある場合は false 値が返され、エラーがない場合は行番号が返されます。

8. xml_parser_free

boolean xml_parser_free(int parser);
この関数は、現在 XML 解析に使用されているメモリを解放するために使用されます。パラメータ パーサーは解析コードです。エラーがない場合は true、そうでない場合は false を返します。
5. 事例分析

以下は、PHP5 を使用して XML 1.0 形式で記述されたアドレス帳 address.xml を読み込み、その内容を表示する例です。詳細については、関連する注記を参照してください。

<?
//
//パート1: いくつかのPHPヘルパー関数
//

/***************************************

*XML の *
* コンテンツをファイルから読み取ります文字列の中*

************************************/

function read_file($filename)
{
//ファイルを読む
$lines =file ($filename);
//変数 $contents はファイルの内容を格納する変数です
$contents="";
while(list($key,$value)=each($lines))
{
$contents. =$value;
}
return $contents;
}

/**********************************
* PHP が XML 開始タグ *
* に遭遇したときに呼び出されます。その機能は次のとおりです。特定のレベルに従って XML タグを表示*
**
**********************************/

function start_element($parser, $name, $attrs)
{
//変数 $ Depth が格納されますマークの深さ
global $ Depth;
//変数 $spacer はマークの前のすべての矢印記号を格納します
$spacer="";
for ($i=1;$i {
$spacer .="->";
}
//マーク表示時の色を設定します
if($ Depth[$parser]==0)
{
$font_color="red" ;
}
else
if($ Depth [$parser]==1)
{
$font_color="green";
}
else
{
$font_color="blue";
}
//フォントを設定するマーク表示時
$font_size=5-$ Depth[$parser];
if ($font_size {
$font_size=2;
}
//マークを表示
echo " echo $spacer.$ Depth[$parser];
if ($ Depth[$parser]<>0)
{
echo ",";
}
echo $name."
";
echo "";
$ Depth[$parser]++;
//メインマークの場合は赤い横線を表示
if($ Depth [$parser]==2)
{
echo "


";
}
}

/**********************************
* PHP が XML 終了タグ *
* に遭遇したときに呼び出され、その機能は変更することです現在のレベル *
* をカウントし、メイン マークの下に水平線を表示します *
******************************** **** **/

function stop_element($parser,$name)
{
//変数 $ Depth はマークの深さを格納します
global $ Depth;
$ Depth[$parser]--;
//メインマークの場合、赤い横線が表示されます
if ($ Depth[$parser]==2)
{
echo "
";
}
}

/**********************************
*PHP が XML マークアップ コンテンツに遭遇すると *
* が呼び出され、その関数が表示されます一定のレベルに応じてマークされたコンテンツ*
*
************************************/

function char_data($parser,$ data)
{
//変数$ Depthはマークの深さを格納します
global $ Depth;
//マークの内容を表示します
$data=trim($data);
if (strlen($data))
{
for ( $i=1;$i echo " ";
echo "$data
n";
}
}

//
//2 番目の部分: PHP ファイルの実行が開始される場所
//
//解析する XML ファイルの名前

$file="アドレス。 xml";
//ファイルを読み取る
$data=read_file( $file);

//パーサーインスタンスを生成する
$parser = xml_parser_create();
//ハンドラー関数を設定する
xml_set_element_handler($parser, "start_element", "stop_element");
xml_set_character_data_handler($parser, "char_data ");
// ファイルを解析します
if(! ($parser)),
xml_get_current_line_number($parser)));
}

// パーサーを解放します
xml_parser_free($parser);
?>





声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。