[XML] xmllintを使って、XMLの内容を検証する

xmllint

前回に引き続き、コマンドからXMLを取り扱う話。
今度はxmllintを使って、XMLの内容を検証してみよう。
今回はXMLの内容検証用にXSDファイルを用意する。

http://xmlsoft.org/xmllint.html

入力データは前回使用した2種類のXMLをそのまま使おう。

フラットな構造のXMLを検証する

planets1.xmlの構造を定義したXSDファイルを用意しよう。
planets要素の下にplanet要素が並ぶ構造を表現する。

[XML] xsltprocを使って、XMLをCSVに変換する

xsltproc

XMLをDBのテーブルに格納したい時はDBのツールを利用するために、一旦CSVに変換したくなる。
XMLからCSVへの変換っていうと、プログラムを組まなきゃって思うけど、xsltprocを使うとXSLTファイルで変換マッピングを作ってあげれば、シェルからでも変換処理ができる。

http://xmlsoft.org/XSLT/xsltproc.html

フラットな構造をCSVに展開する

まずはそのままCSVに展開できそうなフラットなデータ構造の場合を考えよう。

[Java,C] 浮動小数点での丸め誤差の例

floatやdoubleといった浮動小数点数で計算をしていると、丸め処理をしているつもりでも誤差が出ることがある。
これの簡単な例がないかなぁと思っていたんだけど、 0.35 * 3.0 でうまく表現できそう。

Javaで 0.35 * 0.3 を計算してみる

Javaのdoubleで 0.35 * 0.3 を計算してみると

System.out.println(0.35 * 3.0);
// 1.0499999999999998

[bash] IFS(Internal Field Separator)について

シェルスクリプトでreadを使う時にフィールド分割したくない場合やフィールドの区切り文字を変えたい場合なんかにIFSの値を変えたりする。
でも、実際にIFSの値を変えるとどこまで影響があるんだろうか?

read

これが最も一般的な使い方だと思う。
例えば、IFSが明示的に設定されていない場合は <空白><タブ><改行> が区切り文字になるので、入力に空白があると行が区切られて変数に格納される。