パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

好きなDBMS」記事へのコメント

  • でも、CSVファイルは大嫌いです。
    • Perl でお気楽な CGI ばっかり書いているので タブ区切りテキストが多いです。 CSV はパーシングがめんどくさい…。
      • by Anonymous Coward on 2004年12月08日 3時45分 (#663087)
        CSVやTSVって後で見たときその列がなんだったか確認するのが面倒なので、よくこんなん使います。

        <top id="nn"><aaa>aaa</aaa><bbb>bbb</bbb><ccc>ccc</ccc></top>

        解析はこんな感じ。

        {local ($/) = qq[<top id=\"$id\">];
        <LOG>;
        $/ = q[</top>];
        my $line = <LOG>;
        chomp $line;
        %line = ($line =~ m|<(\w+)>(.*?)</\1>|go);
        }

        解析がちょっと面倒だけど、値に名前がついてるのでらくちん。

        (そういえばphpには$/ってあるのかな?rubyにはあるらしいけど)

        #眠いAC
        親コメント
        • それってXMLとどう違うんですか?
          親コメント
          • つまり s 式ですか、そうですか。
          • >それってXMLとどう違うんですか?

            こんなんが延々並んでるだけなので、XMLとは呼べんような気がするんですが、どうなんでしょう?
            (個人的には似非XMLとか呼んでるけど)

            <top id="nn"><aaa>aaa</aaa><bbb>bbb</bbb><ccc>ccc</ccc></top>
            <top id="nn"><aaa>aaa</aaa><bbb>bbb</bbb><ccc>ccc</ccc></top>
            <top id="nn"><aaa>aaa</aaa><bbb>bbb</bbb><ccc>ccc</ccc></top>
            <top id="nn"
            • 最上位要素(root)があれば、ウェルフォームドXMLとして妥当かと思います。
              親コメント
            • 十分XMLだと思います。ルートノードが無いだけで。
              # 似非XMLより、XMLのフラグメントという感じかな。

              そのデータを、
              <?xml version="1.0"?>
              <?xml-stylesheet type="text/xsl" href="sample.xsl"?>
              <elements name="test">
              ここ
              </elements>
              に流し込んで、sample.xslを
              <?xml version="1.0"?>
              <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
              <xsl:template match="/">
              <html>
              <head><title><xsl:value-of select="/elements/@name"/></title></head>
              <body>
              <table border="1">
              <tr><th>id</th><th>aaa</th><th>bbb</th><th>ccc</th></tr>
              <xsl:for-each select="//top">
              <tr><td><xsl:value-of select="@id"/></td>
              <td><xsl:value-of select="aaa/text()"/></td>
              <td><xsl:value-of select="bbb/text()"/></td>
              <td><xsl:value-of select="ccc/text()"/></td>
              </tr>
              </xsl:for-each>
              </table>
              </body>
              </html>
              </xsl:template>
              </xsl:stylesheet>
              こんな感じに作れば、ブラウザでXML開くだけで、HTMLテーブル形式で表示できますね。
              XSLTプロセッサ使えばCSVとかTSVにも変換できるし、割と便利かも。

              親コメント
              • by t-wata (10969) on 2004年12月13日 18時27分 (#665555) 日記
                そういえば、エンティティ参照で流し込むなら、元データの隣にXMLファイルを置いとくだけでいけるんだ。
                例えば、もとのデータがdata.txtだとすれば、したの内容のXMLファイルとsample.xslを一緒においておけば、XMLのダブルクリックで表を見れる。
                <?xml version="1.0"?>
                <!DOCTYPE elements[
                <!ENTITY data SYSTEM "./data.txt">
                ]>
                <?xml-stylesheet type="text/xsl" href="sample.xsl"?>
                <elements name="test">
                &data;
                </elements>

                なんか似非XML、かなり使えそうな気がしてきた。データに"<"(の小文字)とか"&"を入れる場合に注意する必要があるけど、CSVよりずっと明示的にカラムの範囲を指定できるし、複数行でもOKだし、簡易ビューアがXML+XSLで簡単に作れるし、加工も容易だし。
                書き出しするときの手間がCSV/TSVよか若干増えるけど、普通のXMLと違って、単にファイルにアペンドしてけばいいだけだから大した手間じゃないし。
                親コメント
        • 先頭行に項目名を入れるよろし

にわかな奴ほど語りたがる -- あるハッカー

処理中...