PHPのSimpleXMLではSortができないので配列に変換して処理していた。
でも、XSLTが利用できればXMLのSortなどいとも簡単。しかもスピーディーなリスポンスが期待できる。
自分は、データベーススペシャリストなので、RDBの利用を基本にしていたが、薬価の改正などで、一時的にしか意味のない新旧比較表を作成する場合、RDBを利用するとしたら、設計やデータインポートなどの労力に見合うメリットはない。
データはエクセル形式で厚労省のサイトからダウンロードできる。これをXMLに変換して、SimpleXMLを利用して表示すれば良いだけなので、
Excel+VBA+PHP+XMLが圧倒的にコストパフォーマンスが良い。
しかも、PHPのSimpleXMLはかなり高速に反応してくれる。薬価データは16,404件あったが、全件表示はそれなりに時間がかかるものの、
検索を掛ければ一瞬で反応してくれる。INDEXも無いのに。(まぁ、プレーンテキストですし)
RDBはトランザクション処理、ACID特性が問われるように、更新に対する堅牢性、永続性で圧倒的に優位。
XMLのデータ更新は非効率だし、心許ない。
データを見せるだけでもRDBにかなわないな、と思うのはSQLの自在性で、特にSort。 品名で或いはコードで並び替えたい、など。
PHPでXSLTを使って変換したXMLはDOMオブジェクトでSimpleXMLからは利用できない。
DOMオブジェクトからSimpleXMLオブジェクトに変換する関数 simplexml_import_dom()を利用すれば問題なかった。
速度的には、配列に変換する方がよいかもと思うが、配列でのSortはPHPでの処理によるのでコードが面倒になり、柔軟性に欠ける。
Sortする項目と ↑ascending・descending↓ の組み合わせの数分のXSLファイルを用意することになるが、
ユーザーインターフェース的にいくつかのSortが選べるページが作りやすいので、私的にはPHP+XML+XSLTの利用価値は高くなった。