タグの書き出しNo.01429
まるたま さん 00/07/04 15:11
 
はじめまして。まるたまと申します。
マクロ超初心者です。

htmlで、フレームで分けた目次を作りたい
のですが見出しだけを、拾うのが非常に面
倒なので、どうにかならないかなーと思っ
ています。

list.htmというファイルから、見出しタグ
だけを別ファイルに書き出す、ということ
は可能でしょうか?
<h1>から<h4>までの、<h1>XXXX</h1>と
書かれている部分をそのまま、別ファイル
にまとめたいのです。

探してみたのですが、「検索」はあったの
ですが、「選択」とか「書き出し」だと
ヒットしなかったんです。

ヒントになりそうな事、なんでも結構です
どうぞよろしくお願いします。

[ ]
RE:01429 タグの書き出しNo.01430
ENCODINGSHIFTJIS さん 00/07/04 18:43
 
>list.htmというファイルから、見出しタグ
>だけを別ファイルに書き出す、ということ
>は可能でしょうか?
><h1>から<h4>までの、<h1>XXXX</h1>と
>書かれている部分をそのまま、別ファイル
>にまとめたいのです。
>

ヒント&注意
基本が行指向なので そのまま複数行を考えると マクロを書くはめになる。

前処理として <H の直前で改行 </H> の直後で改行 と置換
しておくと 楽かも。 テキスト処理のノウハウは次第に身につきます。

一行内で済むなら Grep で 正規表現on   <h[1-4]
ゴミは手で処理できる量を予想する 以下置換
<H  の前を消す     正規表現   .*<H    →  <H
</H?>の後ろを消す  --------   </H.>\f.*  → \0

最先端のカッコよい方法: HTML を XHTML にして XSLT で抽出する
プロならできます。

__END__

[ ]
RE:01429 タグの書き出しNo.01431
ひろ さん 00/07/04 19:12
 
 まるたまさん今日は、ひろです。
> <h1>から<h4>までの、<h1>XXXX</h1>と
> 書かれている部分をそのまま、別ファイル
> にまとめたいのです。
 見出しの途中で改行が入っていると上手く行きませんが、grep という機能
を使えば良いと思います。

 「検索」と「grep の実行」で検索語として、「<h|H[1-4]>[^<]*</h|H[1-4]>」
として、「正規表現」を ON にします。また「ファイル名一覧だけ作成」は
OFF にします。そして active な file の一覧を作成したい場合は、「検索
するファイル」に「(現在の内容)」を指定し、そうでない場合は直接 file
name を指定します。

 これで list が作成できます。ただし、file name が行頭に付くので、必
要なければ削除してください。

 正規表現や grep の詳細については、help や
http://win.blue.co.jp/~jr-kun/hidemaru_qa/hmindex0.html を参考にして
下さい。

[ ]
RE:01431 タグの書き出しNo.01432
きいろいまふらあ さん 00/07/04 20:43
 
きいろいまふらあです。重箱の隅によこはいり。

> 「検索」と「grep の実行」で検索語として、「<h|H[1-4]>[^<]*</h|H[1-4]>」

<(h|H)[1-4]>[^<]*</(h|H)[1-4]>

だとしても、間に別のタグが入っているとヒットしません。(;_;)
さてどうしましょう?困った。(^^;

1行(テキストファイルとして見た場合の、htmlファイルの論理行)の中に
複数のヘッダが存在しない、という前提で(あるいはそんな加工を事前に施して)

<(h|H)[1-4]>.*</(h|H)[1-4]>

としますか?
そのくらいならENCODINGSHIFTJISさんのような方向性に持っていったほうが確実?

<(h|H)[1-4]>の前に強制的に改行を入れる。
</(h|H)[1-4]>の後ろに強制的に改行を入れる。
ファイルの先頭に移動。
選択開始
<(h|H)[1-4]>を検索
前の行の末尾に移動
選択範囲を削除
※1
</(h|H)[1-4]>を検索
次の行の頭に移動
選択開始
<(h|H)[1-4]>を検索
前の行の末尾に移動
選択範囲を削除
※1にもどりループ。検索が失敗するまで。
最後の</(h|H)[1-4]>の次の行以降を削除
<(h|H)[1-4]>の前の改行を(あれば)削除。
</(h|H)[1-4]>の後ろの改行を(あれば)削除。

対応する括弧とか使うわけではないので、被害は最小限と思われるが、
タグの対応がきっちりとれていることは大前提。

[ ]
RE:01432 タグの書き出しNo.01435
ひろ さん 00/07/05 12:47
 
 きいろいまふらあさん今日は、ひろです。
> > 「検索」と「grep の実行」で検索語として、「<h|H[1-4]>[^<]*</h|H[1-4]>」
>
> <(h|H)[1-4]>[^<]*</(h|H)[1-4]>
>
> だとしても、間に別のタグが入っているとヒットしません。(;_;)
 この場合をすっかり忘れていました(^^;。

> 1行(テキストファイルとして見た場合の、htmlファイルの論理行)の中に
> 複数のヘッダが存在しない、という前提で(あるいはそんな加工を事前に施して)
>
> <(h|H)[1-4]>.*</(h|H)[1-4]>
 見出しは通常改行を入れて編集するので、このほうが安全ですね。

[ ]