PHP5でのXML処理の【実践的】な資料を探しています。

資料を見る人間のレベルは、”RSSなどをXHTMLに変換する”程度はできるレベルです。
具体的には以下のような内容で、Web上にまとまった資料・サンプルなどないでしょうか?

 ・XMLスキーマのチェック
 ・XMLエレメントの走査
  特に、XMLスキーマ(といいますかパースするXMLの仕様)をチェックしながら走査する手順

パースするのみならPHP5の関数のみでも足りるのですが、
仕様(XMLスキーマ)に沿って、XMLエレメントの有無や属性、デフォルト値等をチェック・補完しながら走査するような感じになります。

急ぎのため、Web上に存在する資料だとありがたいのですが、最悪、市販書籍でも構いません。
よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/01/09 07:55:54
  • 終了:2009/01/13 21:42:53

回答(3件)

id:mulloo No.1

mulloo回答回数151ベストアンサー獲得回数22009/01/09 08:08:08

id:wizemperor

閲覧対象者はパースについては問題ありません。

具体的な要素ごとの処理があるとよいのですが。

その書籍のどこがどうよいのかの回答が欲しいのです。

2009/01/09 10:11:57
id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332009/01/09 09:55:33

ポイント27pt

PHP5 では DOMDocument::schemaValidate を用いて XML Schema の検証を行います。

使い方は「DOMによるデータ追加」が参考になると思います。

id:wizemperor

スキーマの検証は関数でできますね。

検証後、foreachなどで各エレメント・アトリビュートをチェックして、

(再利用するために)クラスのプロパティや変数に格納することになるかと思うのですが、

その走査処理が伝わる資料・サンプルがあればと思いまして。

汎用処理は無理なので、例えばRSSのような特定のXMLの処理クラスのサンプルでもよいです。

ようはただパースするのではなく、エラー処理やアトリビュートのデフォルト値の処理サンプルがあればと。

探したんですがなかなかないですね。自分で書いて見せるしかないかな…

2009/01/09 10:22:28
id:pahoo No.3

pahoo回答回数5960ベストアンサー獲得回数6332009/01/09 18:13:41

ポイント27pt

XML Schema によるチェックだけでなく、XML Document全般に関する情報をお求めなのですね。

でしたら、「PHP 5& XMLによるWebサービス構築」という書籍がお勧めです。ただ、楽天BOOKを見たら、品切れになっていました。

お近くの図書館で検索してみてください。


また、「PHPでマッシュアップ」のサンプル・プログラムが参考になれば幸いです。

id:wizemperor

ありがとうございます。

わかりやすいサンプルですね。

処理の流れを掴むにはちょうどよい感じかもしれません。

「PHP 5& XMLによるWebサービス構築」は私も楽天で品切れを確認しました

この手の本がもうちょっとでてくるといいですね

2009/01/09 19:23:47
  • id:pahoo
    #2で回答した者ですが、#2で紹介したDOMDocument::schemaValidateはXMLドキュメントを検証するためのメソッドです。回答した「使い方」リンク先をご覧になれば、分かると思います。
  • id:wizemperor
    はい。エラー処理はスキーマを利用した検証でおっけいでしたね。
    で、実際には、その後に各要素ごとに属性や内容の処理が必要になるかと思うんですが、
    (検証では、SimpleXMLオブジェクト等に属性のデフォルト値まではセットしてくれないですよね?)
    見本になるようなうまいやり方があればなと思いまして…。
    (自分が見るのではなく、人に見せるものとして)

    PHP5+XML関連の本でよい本でもあればいいんですが。
    mullooさんの回答の本は、出版社倒産で中古しか出回ってないようですね…。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません