.xhtml
ファイルの画像を確認し、必要に応じてAltタグを追加できるスクリプトを作成したいと思います。検索中に正規表現を見つけて誘惑しましたが、どこで何を検索するのかglob
わかりません。以下を行うための最良のオプションは何ですか?awk
sed
<img class="something" width="something" height="something" src="folder/folder/image.png" />
<img id="something" src="folder/folder/file.png" />
必要なスクリプトが存在するかどうかを検出したいalt=""
(ファイル名が変更されていない場合)。
必須形式の終了:
<img class="something" width="something" height="something" src="folder/folder/image.png" alt="image"/>
<img id="something" src="folder/folder/file.png" alt="file"/>
できることはわかりますが、これについてどこで読むべきかわかりません。
<img
結末を探す/>
img
ラベル内の検出alt=""
alt=""
レコード名の前にファイル形式がなく、挿入する場合""
答え1
perl
パーサーの助けを借りてこれを使用する1つの方法は次のとおりですXML::Twig
。
#!/usr/bin/env perl
use strict;
use warnings;
use XML::Twig;
use File::Spec;
my $twig = XML::Twig->new(
twig_handlers => {
## For each 'img' tag execute following function...
'img' => sub {
## If it doesn't have an 'alt' attribute...
if ( ! $_->att_exists( 'alt' ) ) {
## Get value of 'src' tag.
my $src = $_->att( 'src' );
return unless $src;
## Get last part of the path and remove extension.
my $src_file = (File::Spec->splitpath( $src ))[2] || q{};
$src_file =~ s/\.[^.]+$//;
## Create the 'alt' attribute.
$_->set_att( 'alt', $src_file );
}
}
},
pretty_print => 'indented',
)->parsefile( shift )->print;
xml
ファイルを唯一の引数として実行してください。たとえば、次のようになります。
perl script.pl xmlfile