- PR -

PerlでのvalidなXML出力について

1
投稿者投稿内容
sinh
ベテラン
会議室デビュー日: 2003/01/22
投稿数: 87
投稿日時: 2005-04-28 14:39
お世話になります。

PerlにてDTD, XML schema, Relax NGなどの
スキーマに従うXML文書を出力
したいと思っています。
ネット上やCPANなどを探して、
XML文書の出力は数サイト見つけることができたのですが、
スキーマに従うXML文書の出力方法が見つかりませんでした。
CPANなどにあるモジュールを使用してもよい場合に
スキーマに従うXML文書の出力方法としてはどのようにするのが
簡単でしょうか?

よろしくお願いします。
Gio
ぬし
会議室デビュー日: 2003/11/28
投稿数: 350
お住まい・勤務地: 都内から横浜の間に少量発生中
投稿日時: 2005-04-28 17:52
一般的には、DOM を構築して Document に DocumentType を設定、validation でエラーがなければスキーマに適合しているので出力、という流れで良いと思いますが、perl だとやや難航しそうです。(私だけかも(笑))

というのも DocumentType を DOM と同様に操作できるのが DOM level 3 インタフェースで、例えば CPAN の XML::DOM などは level 1 インタフェースしかサポートしていないためです。
回避策として、利用するスキーマを指定した(DTD の場合は DOCTYPE を含む基本指定しかない)XML ファイルを作成しておき、validation なしで読み込んで DOM を作成してから、その DOM 上でノード操作を行う方法が考えられます。

pure Perl でなくても良いのならば、
XML::xerces 2.3.0-4
http://xml.apache.org/xerces-p/
が使えるかもしれません。
(Xerces C++ の perl 用ラッパです)

リンク先によると、DOM level 3 と W3C XML Schema に対応しているようなので、検討いただいてもよろしいかと思います。
(上述の回避方法が使えれば、CPAN XML::DOM でも行けるかもしれません。)

# XML::DOM の :D の部分などが顔文字で表示されてしまうので、顔文字を使わないよう設定しました。

[ メッセージ編集済み 編集者: Gio 編集日時 2005-04-28 17:54 ]
sinh
ベテラン
会議室デビュー日: 2003/01/22
投稿数: 87
投稿日時: 2005-05-13 18:36
Gioさん、ありがとうございます。
返信が遅くなってしまいすいませんでした。

--------------------------------------------------------------
一般的には、DOM を構築して Document に DocumentType を設定、validation でエラーがなければスキーマに適合しているので出力、という流れで良いと思いますが、perl だとやや難航しそうです。(私だけかも(笑))
--------------------------------------------------------------

難航しそうなのは少し困るので
ほかの言語などを検討してみようと思います。

1

スキルアップ/キャリアアップ(JOB@IT)