2010年9月26日日曜日

HTMLてどうやって書く

とあるマニュアル作成中。

私は、ほとんどXHTML を手書きで書いていて、bkhvalid でチェックしているのだけど。
bkhvalid使い始めたのはここ数年だけど手書きはもう10年以上で無駄に苦労している気がする。

ある程度全体ができたら、Kompozer も、使わせて頂いているのだけど。
で、最後に HTML Help Workshop で chm にしてマニュアルとしている。

最初から Kompozer で書くと、余計なタグが入るのでかえって苦労するわけで。
CSS も基本的に別ファイルにするので、なんかこう、Kompozer でどうやればいいのか分からん。

すでに存在するCSSファイルは簡単にあつかえるようなのだけど。
新規作成がいまいち分からない。

CSSファイルは、メインのウィンドウではCSS開けないようで、CSS Editor とかいうツールメニューにあるものを使わないと中身をいじれない。
なので、普通のテキストエディタで作成したり編集したほうが早いという・・・。

それでも Kompozer はマシなほうで、かなりいいソフトウェアだと思う。
タグがどこに入っているかも明確に分かるし、これ以上にないぐらいの出来で、ほんと素晴らしい。

(でも <pre><code></code>/pre>ブロックの改行が<br>に変換されてしまうので注意が必要)

FTP にも対応していて、ローカルにファイルが無くても作業ができるわけで。
ちょっとした修正なら、Kompozer だけで済んでしまう。
(私は基本的に手作業なのでローカルにもおいているが)

FTP もWindows は、ファイルシステムと同じようにアクセスできるし、コンソールも使ってなければ、FFFTPのようなFTP接続ソフトというのも最近は使っていない。

ということで人よりHTML書くのに苦労している気がする。
おそらくソフトウェアを使いこなせばもっと楽に作れるんだろうけど。

で、なんとかしたいのだけど。どうにもならないという日々。

市販のソフトウェアなんかだと、独自のマーカー的なコメントが大量に入るというのは、現状ではどうなっているのだろう。
おそらく直ってないと思うのだけど。

ということで、HTML作成ソフトの類は、もう10年以上買っていない。
最後に買ったのは Microsoft の Front Page で Windows 95 時代の物だ。

Google Sites も Blogger もそうだけど、けっこう変なタグがいっぱい入る。
ほとんどスタイルに関係する物だけど。
みんな気にして無さそうなので、私も見なかったことにしている。

が、そういったドキュメントを いざパーサーに通してデータを取得しようとすると、構造が一様では無くなっているので。
階層構造を上から辿って取得するという、所定の手順でデータが取得できないという事になる。

タグの親子関係を無視して階層構造の無いリストに突っ込んで処理したほうが早いような感じで。
テキストブロックのみを取得しつつ、そのテキストブロックの親を辿って、目的のタグの子に属するかという分岐でチェックするか、目的の親以下のタグを削除するかという方法でやることになる。

あちこちのサイトを見ると、今でもFORM が テーブルの中の TD で分割されて親子関係が崩れていたりするようで。
私が良く行く大手のサイトもそんな感じで。
見かけがよければOKということで、進歩していない模様。

FORM のタグは別に抽出したりすることもないんで、FORMは別にいいんだけど。

例えば

<TABLE>
 <TR>
  <TD>
   <FORM>
    <INPUT NAME="A">
   </TD>
   <TD>
    <INPUT TYPE="HIDDEN" NAME="B"/>
    <INPUT TYPE="SUBMIT"/>
   </FORM>
  </TD>
 </TR>
</TABLE>


見たいな事になっている。
dl,dt,dd でも似た様な事がよくある模様。

これで

TABLE.TR.TD.FORM.INPUT.NAME が抽出したい場合

TABLE.TR.TD.FORM 以下を走査しても、すべての INPUTが列挙できないわけで。

パーサーのほうで、閉じられてないタグを覚えておくか、</td><td>を消してやればいいんだろうけど。
不可逆になってしまう。

フラグがあればなんとかなるけど、分岐に応じてメモリの確保開放をやってたら、処理速度が低下するので、処理速度が低下しないように、メモリは先に確保しておいて・・となるわけで。
パイプライン上に分岐を多数置くのは好ましくないし。
そうなると、それのために全てのタグのオブジェクトに使われないかもしれないメモリを確保させておくわけで。
その方法だと速いけど、巨大なHTMLだとメモリの量もそれなりに消費する。
10万タグあるとすれば、フラグが1バイトでも10万バイト。2個あれば20万バイト。
入出力のオーバーヘッドを無視すればフラグ類が2個以上8個未満なら、ビットにしてもよいだろうけど。
悩ましい限り。
仮想化の方法も最近おもいついたんだけど、それならメモリも必要な分しか使われないし、問題ないのだけど。
全体を処理する際にオーバーヘッドがあるんで、やっぱり、ケースバイケースになってしまって、オールマイティに性能が生かせるコードというのは難しくて悩む。
どの道パイプラインに流す前か、流しつつも構文のチェックは必要なので、完璧なHTMLじゃなくてもいいんだけど。
HTML書いた人の意図が明確になるような補足タグみたいなのがHTMLにあればいいなーと思う今日この頃。
上の例は明らかに親FORMは1つだけど。
それは人間の経験とか習慣から分かる話で。
FORMを2つにしようとして間違ったのか、1つのFORMが誤って二つになったのか、そもそも1つなのかコンピュータもエンジニアも分からないという話。

HTMLの話が途中でパーサーの話に変わってますが。
楽がしたい。それだけ。

そういえば DreamWeaverは業務で使った事があった。
あれは良かったなー。
やっぱ買うのが一番なのか。

0 件のコメント:

コメントを投稿