」というタグがついている記事一覧

PostgreSQL8.3のインストール(8.2からのアップグレード)

PostgreSQL8.3よりXML型が使えるようになる等、XMLサポートが少し追加された。この機能を利用したいので8.3にアップグレードする。

XMLサポートを有効にしてインストールしたいのでlibxml2のアップグレードを先に行う。

libxmlのインストール

# wget ftp://gd.tuwien.ac.at:21/pub/libxml/libxml2-2.6.31.tar.gz
# tar xvzf libxml2-2.6.31.tar.gz
# cd libxml2-2.6.31
# ./configure --prefix=/usr/local
# make
# make install

ダンプ

8.2で稼働しているデータはそのままでは、8.3では使用できないため、既に登録されているデータが必要な場合は、ここでダンプしておく。

PostgreSQL8.3のインストール

# /etc/init.d/postgresql stop
# wget http://wwwmaster.postgresql.org/redir?http%3A%2F%2Fftp3.jp.postgresql.org%2Fpub%2Fdb%2Fpostgresql%2F%2Fsource%2Fv8.3.1%2Fpostgresql-8.3.1.tar.gz
# tar xvzf postgresql-8.3.1.tar.gz
# cd postgresql-8.3.1
# ./configure --with-libxml
# gmake
# gmake install

8.2が稼働していた場合は、/usr/local/pgsql/dataが既にあり、8.3を起動したときにこれを利用しようとするため、起動できない。そこで、このディレクトリを削除する。(ここでは念のため、data.oldにmoveしている)

# mv /usr/local/pgsql/data /usr/local/pgsql/data.old

エンコードの指定

ここで、いったん/etc/sysconfig/i18nのlangの設定を使用したいDBの
エンコード設定に変更しておく
例.

lang="ja_JP.utf8"

=> UTF8になる

lang="ja_JP"

=> EUC-JPになる

これまでと違い同一data内で異なるエンコードの使用ができないので注意

# /etc/init.d/postgresql start

これでdataディレクトリも作成される。
PostgreSQL8.2等がインストールされていない状態の場合は、この自動起動ファイルの作成も必要。
PostgreSQL8.2のソースインストールを参照。
※ この自動起動ファイルも8.2の個所を8.3にしておく。

当然、dataディレクトリ内の設定が変わっているので
/usr/local/pgsql/data/postgresql.conf
/usr/local/pgsql/data/pg_hba.conf
等の設定をそれぞれ修正。

postgresql.confについては試していないが、pg_hba.confについては前のものをコピーでもOK

# cp -p /usr/local/pgsql/data.old/pg_hba.conf /usr/local/pgsql/data/

PostgreSQLの再起動

# /etc/init.d/postgresql restart

リストア

必要に応じてリストアを行う。

タグ
コメントはありません。 »

phpでXMLとXSLTでHTMLをつくる(XSLTプロセッサ)

タグ: , ,

XSLTプロセッサとは

XSLTプロセッサとはXSLTを使ってXMLを他のXMLに変換するものです。タイトルではHTMLをつくるとなっていますが、実際にはHTMLでなくてもいいわけです。

XSLTとは

XSLTとは、まさに上記の目的(XMLを他のXMLに変換する)のための簡易言語で、これもXMLで書かれています。
XSLTの書き方はサンプルで覚えるXSLTプログラミングが参考になります。

phpによる変換

PHPマニュアル XSL関数より

PHP 5には、デフォルトでXSLエクステンションが含まれており、 configureに引数–with-xsl[=DIR] を追加することにより有効にすることができます。

なのでとても簡単にできます。下記が例です。($xml に xmlの内容が格納されており、/path/to/xslfile.xslにxsltファイルがあることを想定しています。)

$doc = new DOMDocument();
$xsl = new XSLTProcessor();

$doc->load('/path/to/xslfile.xsl');
$xsl->importStyleSheet($doc);

$doc->loadXML($xml);
echo $xsl->transformToXML($doc);

ここでは、$doc->loadXML($xml);としていますが、これは$xml内に既にXMLの内容が格納されていると想定しているからです。たとえばDBからとってきた場合などです。ファイルから直接読み込むのであれば、XSLTの読み込みと同じように$doc->load(’/path/to/xmlfile.xml’);でもOKです。
これだけで、変換が完了します。

タグ
コメントはありません。 »