htmlタグの大文字←→小文字一括変換No.12014
たなかまー さん 02/06/05 11:02
 
初めての投稿です。宜しくお願いします。
ツールを使ってホームページを作って小さな修正は秀丸エディターを使って
いるのですが、サーバーオーナーから今後のXML対応をにらんで、htmlタグ
を小文字で記載するよう依頼されています。
そのツールでhtmlタグ一括で小文字に変換できればOKなのですが、どうもう
まくいきません(そういう機能がサポートされていない)。
現実的には、今フリーのhtmlエディターでその機能がサポートされているこ
とは発見したのですが、せっかくエディターは「秀丸」で4年も通しているの
で、何とかしたいと思っています。
どなたか、良いアドバイスを!!

[ ]
RE:12014 htmlタグの大文字←→小文字一括No.12015
たけのこ さん 02/06/05 12:01
 
たけのこです。

こんな感じですか(ターゲットはタグだけですが)?
一行目の行頭タグだけ無視されますが、そこだけ手作業で…(多分ドキュメント
タイプを記述しているでしょうが)。

#toLower = 1;   // 大文字化するときは0にする。
#selectFound = getconfig("SelectFound");
gofiletop;

if(#toLower){
  $search = "<(/?)[A-Z]+[\t >]";
}else{
  $search = "<(/?)[a-z]+[\t >]";
}
searchdown $search, regular;
while(result){
  if(!#selectFound){
    beginsel;
    searchdown "[\t >]", regular;
  }
  if(#toLower){
    tolower;
  }else{
    toupper;
  }
  escape;
  searchdown $search, regular;
}

[ ]
RE:12015 htmlタグの大文字←→小文字一括No.12016
ひろ さん 02/06/05 12:36
 
 たなかまーさん、たけのこさん今日は、ひろです。
>     beginsel;
>     searchdown "[\t >]", regular;
 これでは不味いです。何故なら
<IMG ALT="Sample Image" SRC="Sample.jpg">
といった、属性の価自体も変換してしまい、最悪リンク切れになりかねませ
ん。Ver.3.xx なら、次のマクロで良いでしょう。
//----------------- to lower HTML tag -------------------------------
disabledraw;
#reg_search = searchmode;
$search = searchbuffer;
#search = searchoption;
gofiletop;
setsearch "[A-Z]+",16;
while( 1 ){
  finddown;
  if( !result )break;
  if( colorcode&14 == 14 || colorcode&15 == 15 )tolower;
  moveto selendx,selendy;
  escape;
}
if( !#reg_search ){
  openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
  writeregnum "SelectFound",#reg_search;
  envchanged;
  closereg;
}
setsearch $search, #search;
//-------------------------------------------------------------------

[ ]
RE:12016 htmlタグの大文字←→小文字一括No.12018
たけのこ さん 02/06/05 12:48
 
たけのこです。

>>     searchdown "[\t >]", regular;
> これでは不味いです。何故なら
><IMG ALT="Sample Image" SRC="Sample.jpg">
>といった、属性の価自体も変換してしまい、最悪リンク切れになりかねませ
>ん。

何故ですか?

[ ]
RE:12018 htmlタグの大文字←→小文字一括No.12019
tnobu2 さん 02/06/05 12:59
 
>>>     searchdown "[\t >]", regular;
>> これでは不味いです。何故なら
>><IMG ALT="Sample Image" SRC="Sample.jpg">
>>といった、属性の価自体も変換してしまい、最悪リンク切れになりかねませ
>>ん。
>
>何故ですか?

UNIX系のサーバだとファイル名の大文字小文字は区別されるからという
ことでしょう。
基本的に引用符(")で囲まれた部分は置き換えるべきではありません。

[ ]
RE:12019 htmlタグの大文字←→小文字一括No.12020
たけのこ さん 02/06/05 13:08
 
たけのこです。

>基本的に引用符(")で囲まれた部分は置き換えるべきではありません。

そこにヒットすることあります?
  searchdown "<(/?)[A-Z]+[\t >]", regular;
がヒットした場所から
  searchdown "[\t >]", regular;
ですから、タグとエレメントの切れ目がヒットするはずで、その後は次のタグを
見つけているつもりですが…

[ ]
RE:12020 htmlタグの大文字←→小文字一括No.12021
はてな さん 02/06/05 13:35
 
こんにちは、

お節介かもしれませんが、
ひろさんのマクロと、たけのこさんのマクロを比べてみたらこうなりました。

たけのこさんのマクロ
<IMG ALT="Sample Image" SRC="Sample.jpg">
      ↓
<img ALT="Sample Image" SRC="Sample.jpg">

ひろさんのマクロ
<IMG ALT="Sample Image" SRC="Sample.jpg">
      ↓
<img alt="Sample Image" src="Sample.jpg">

属性の文字まで、小文字になるようです。
たなかまーさんの希望はどちらなんでしょうか?

[ ]
RE:12020 htmlタグの大文字←→小文字一括No.12022
ひろ さん 02/06/05 13:44
 
 たけのこさん今日は、ひろです。
> タグとエレメントの切れ目がヒットするはずで、その後は次のタグを
> 見つけているつもりですが…
 失礼しましたm(__)m。
 属性はそのままですから、このコードで良いですね。

 ただ先のマクロでは、タグの途中で改行されていると、変換されないので、
Ver.3.xx なら、colorcode を見た方が確実ですよね。

[ ]
RE:12022 htmlタグの大文字←→小文字一括No.12023
たけのこ さん 02/06/05 13:57
 
たけのこです。

> 属性はそのままですから、このコードで良いですね。

ほっ、一安心です(^^;

> ただ先のマクロでは、タグの途中で改行されていると、変換されないので、
>Ver.3.xx なら、colorcode を見た方が確実ですよね。

あー、タグの途中で改行ってOKなんでしたっけ(自分ではそんなxmlもjspも書か
ないので眼中にありませんでした)? そうすると\nを秀丸正規表現の中で使う
には制約があるので、htmlカラー表示してcolorcodeを使う方が良いですね。

[ ]
RE:12016 htmlタグの大文字←→小文字一括No.12024
たなかまー さん 02/06/05 14:30
 
ひろさん、たけのこさんありがとうございます。
ひろさんがご提供いただいたマクロはそのままコピーでOKなのですが、
求めている仕様は
<IMG ALT="Sample Image" SRC="Sample.jpg">

<img alt="Sample Image" src="Sample.jpg">
です。
ですから、たけのこさんさんのマクロでは結果的にNGということになります
たけのこさん申し訳ありません。

>Ver.3.xx なら、次のマクロで良いでしょう。
>//----------------- to lower HTML tag --------------------------
>disabledraw;
>#reg_search = searchmode;
>$search = searchbuffer;
>#search = searchoption;
>gofiletop;
>setsearch "[A-Z]+",16;
>while( 1 ){
>  finddown;
>  if( !result )break;
>  if( colorcode&14 == 14 || colorcode&15 == 15 )tolower;
>  moveto selendx,selendy;
>  escape;
>}
>if( !#reg_search ){
>  openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
>  writeregnum "SelectFound",#reg_search;
>  envchanged;
>  closereg;
>}
>setsearch $search, #search;
>//--------------------------------------------------------------

でこのファイルをまるまるコピーしたのですが、ループして動きません。
ちなみに
OS:Windows 2000 Pro
秀丸はV3.15です。



[ ]
RE:12020 htmlタグの大文字←→小文字一括No.12025
tnobu2 さん 02/06/05 14:44
 
>>基本的に引用符(")で囲まれた部分は置き換えるべきではありません。
>
>そこにヒットすることあります?

すいません。ちゃんと自分で実行してみないでコメントしてしまいました。
失礼しました。

[ ]
RE:12024 htmlタグの大文字←→小文字一括No.12026
ひろ さん 02/06/05 15:48
 
 たなかまーさん今日は、ひろです。
> このファイルをまるまるコピーしたのですが、ループして動きません。
 設定依存の部分を入れ忘れていましたm(__)m。
//----------------- to lower HTML tag -------------------------------
disabledraw;
#reg_search = searchmode;
$search = searchbuffer;
#search = searchoption;
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
writeregnum "SelectFound",1;
envchanged;
closereg;
gofiletop;
setsearch "[A-Z]+",16;
while( 1 ){
  finddown;
  if( !result )break;
  if( colorcode&14 == 14 || colorcode&15 == 15 )tolower;
  moveto selendx,selendy;
  escape;
}
if( !#reg_search ){
  openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
  writeregnum "SelectFound",#reg_search;
  envchanged;
  closereg;
}
setsearch $search, #search;
//-------------------------------------------------------------------

[ ]
RE:12026 htmlタグの大文字←→小文字一括No.12027
たなかまー さん 02/06/05 16:29
 
ひろさん
ありがとうございました。かなりいい感じです。
ただ次のようなケースがあり、「うーーーん」とうなっています。

このマクロですと、
<DIV ALIGN=RIGHT>といった場合、<div align=RIGHT>となります。
ちなみに、
<div align="RIGHT">という風に属性をダブルクォーテーションで囲むと
<div align="right">となります。

最終的には、
<DIV ALIGN=RIGHT>→<div align="right">と自動変換が効けばベスト。

ここまでくると、先の表題が違ってきますね。
[htmlタグの大文字←→小文字一括変換]とかきましたが、htmlタグ/属性
の大文字←→小文字一括変換が正しく、さらに属性ダブルクォーテーション
囲みまで行けば完璧です。

今のところ、ここまでできるツールはないようですが、秀丸のマクロの可能
性はどこまであるのでしょうか...。

[ ]
RE:12015 getconfig("SelectFound") ???No.12030
ひろ さん 02/06/05 17:39
 
 秀丸担当さん、たけのこさん今日は、ひろです。
> #selectFound = getconfig("SelectFound");
 こちらについて質問があります。getconfig については、ヘルプに
> ファイルタイプ別の設定の値の取得をします。
とあります。それに対して、SelectFound は「動作環境の設定」→「ユーザー
インターフェース」→「検索での表示」の項目ですよね。マクロは問題なく
動作するようですが、こういった使い方をしても良いものでしょうか? ひょっ
として不具合が偶々上手く動いているだけでは? と心配になりました。

[ ]
RE:12030 getconfig("SelectFound") ???No.12031
たけのこ さん 02/06/05 17:57
 
たけのこです。

>動作するようですが、こういった使い方をしても良いものでしょうか? ひょっ

すみません。
getconfigの仕様の方を勘違いしていました…が、

>不具合が偶々上手く動いているだけでは? と心配になりました。

か、どうかはハテナですけど?

[ ]
RE:12027 htmlタグの大文字←→小文字一括No.12033
ひろ さん 02/06/05 19:13
 
 たなかまーさん今日は、ひろです。
> このマクロですと、
> <DIV ALIGN=RIGHT>といった場合、<div align=RIGHT>となります。
> ちなみに、
> <div align="RIGHT">という風に属性をダブルクォーテーションで囲むと
> <div align="right">となります。
 一般には、「"」で括られた部分を変換してしまうと不味いので、個々に
replaceallfast を追加すればよいと思います。使い方はマクロ・ヘルプを参
考にしてください。

 またこれ以上マクロについての質問は、
http://www.maruo.co.jp/hidesoft/4/
にお願いします。

[ ]