遅い返信ですが、 こういう時は、Perlあたりを使えば何とかなります。
下の内容をshiftjisで保存して、conv.plあたりにリネーム、 perl conv.pl <in.html >out.html で一括置換できます。
use encoding "cp932";
while(my $item=<STDIN>){ if($item=~ /(<dfn>(.+?)<\/dfn>)/){ my $dfn=$1; my $txt=$2; my $res=getKeys($txt); $item=~ s/\Q$dfn\E/$dfn$res/g; } print $item; }
sub getKeys{ my $txt=$_[0]; my $res=""; my @words=split(/\s/,$txt); for(my $i=0;$i<@words;$i++){ my $word=$words[$i]; if($word=~ /\//){ my @ws=split(/\//,$word); foreach my $w (@ws){ my $tmp=""; for(my $j=0;$j<@words;$j++){ if($i==$j){$tmp.=$w;}else{$tmp.=$words[$j];} $tmp.=" "; } chop $tmp; if($tmp=~ /\//){ $res.=getKeys($tmp); }else{ $res.="\n<key type=\"表記\">".$tmp."</key>"; } } return $res; } } return $res; }
> ご返信ありがとうございます。 > そのような方法があるのですね。 > > ただ、<dfn>in/under no circumstances</dfn>のようなどっちつかずのパターンの項目が多数あるので、例に挙げたような一括置換で簡単に変換できる書式がないかなと思っていたのですが、元ファイルはEPWINGというよりHTMLがベースなのでそのような便利な仕組みはやはり用意されてなさそうですね。 > > > > そのような場合は、同じ項目に対して複数のインデックスがつけてあると思います。 > > EBStudioでは、独自タグの<key>を使っていただくと同じことができます。 > > マニュアルの > > 「EBStudioでサポートするHTML要素」 > > →拡張仕様 > > →<key>…本文に現れないキーワードの付与 > > を参考にしていただけますでしょうか。 > > こんな感じでいけるはずです。 > > <dfn>in/under no circumstances</dfn> > > <key type="表記">in no circumstances</key> > > <key type="表記">under no circumstances</key>
|