我想创建一个脚本,可以检查.xhtml
文件中的图像并根据需要添加 alt 标签。在搜索时,我发现了正则表达式并进行了 man on,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
在解析器的帮助下使用的一种方法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