globbing, sed ou arquivos awk html

0

Eu queria criar um script que eu pudesse verificar .xhtml arquivos para imagens e adicionar tags alt, se necessário. Durante a pesquisa, encontrei expressões regulares e fiz man on glob , mas não tenho certeza sobre onde ou o que pesquisar em awk e sed . Qual seria a melhor opção para fazer o seguinte:

<img class="something" width="something" height="something" src="folder/folder/image.png" />

<img id="something" src="folder/folder/file.png" />

Eu queria que o script desejado detectasse se um alt="" está presente, se não alt, o nome do arquivo.

Finalize o formato desejado:

<img class="something" width="something" height="something" src="folder/folder/image.png" alt="image"/>

<img id="something" src="folder/folder/file.png" alt="file"/>

Eu sei que isso pode ser feito, mas não tenho certeza de onde ler sobre isso.

  • Localizar <img com o final />
  • Dentro de img tag detect alt=""
  • se alt="" não estiver presente, registre o nome antes do tipo de arquivo e insira em ""
por DᴀʀᴛʜVᴀᴅᴇʀ 14.12.2012 / 22:41

1 resposta

3

Uma maneira de usar perl com a ajuda do XML::Twig parser:

#!/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;

Execute-o com seu arquivo xml como argumento exclusivo, como:

perl script.pl xmlfile
    
por 14.12.2012 / 23:08

Tags