Ignore:
Timestamp:
2011-08-12T19:35:50+12:00 (13 years ago)
Author:
ak19
Message:

Changes to perl code to do with removing the ex. prefix: ex. is only removed if it is the sole prefix (i.e. ex.dc.* prefixes are not removed).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/perllib/plugouts/BasePlugout.pm

    r23939 r24404  
    965965
    966966# returns an XML representation of the dublin core metadata
    967 # if dc meta is not found, try ex mete
     967# if dc meta is not found, try ex meta
     968# This method is not used by the DSpacePlugout, which has its
     969# own method to save its dc metadata
    968970sub get_dc_metadata {
    969971    my $self = shift(@_);
     
    978980
    979981    my $explicit_dc = {};
     982    my $explicit_ex_dc = {};
    980983    my $explicit_ex = {};
    981984
    982985    my $all_text="";
     986   
     987    # We want high quality dc metadata to go in first, so we store all the
     988    # assigned dc.* values first. Then, for all those dc metadata names in
     989    # the official dc set that are as yet unassigned, we look to see whether
     990    # embedded ex.dc.* metadata has defined some values for them. If not,
     991    # then for the same missing dc metadata names, we look in ex metadata.
     992
    983993    foreach my $data (@{$section_ptr->{'metadata'}}){
    984994    my $escaped_value = &docprint::escape_text($data->[1]);
     
    10021012        }
    10031013
    1004     }
    1005     elsif (($data->[0] =~ m/^ex\./) || ($data->[0] !~ m/\./)) {
     1014    } elsif ($data->[0]=~ m/^ex\.dc\./) { # now look through ex.dc.* to fill in as yet unassigned fields in dc metaset
     1015        $data->[0] =~ m/^ex\.dc\.(.*)/;
     1016        my $ex_dc_element = $1;
     1017        my $lc_ex_dc_element = lc($ex_dc_element);
     1018
     1019        # only store the ex.dc value for this dc metaname if no dc.* was assigned for it
     1020        if (defined $dc_set->{$ex_dc_element}) {
     1021        if (!defined $explicit_ex_dc->{$lc_ex_dc_element}) {
     1022            $explicit_ex_dc->{$lc_ex_dc_element} = [];
     1023        }
     1024        push(@{$explicit_ex_dc->{$lc_ex_dc_element}},$escaped_value);
     1025        }
     1026    }
     1027    elsif (($data->[0] =~ m/^ex\./) || ($data->[0] !~ m/\./)) { # look through ex. meta (incl. meta without prefix)
    10061028        $data->[0] =~ m/^(ex\.)?(.*)/;
    1007         my $ex_element =  $2;
     1029        my $ex_element = $2;
    10081030        my $lc_ex_element = lc($ex_element);
    10091031
     
    10231045
    10241046    if (!defined $explicit_dc->{$lc_k}) {
    1025         if (defined $explicit_ex->{$lc_k}) {
    1026 
     1047        # try to find if ex.dc.* defines this dc.* meta,
     1048        # if not, then look for whether there's an ex.* equivalent
     1049
     1050        if (defined $explicit_ex_dc->{$lc_k}) {
     1051        foreach my $v (@{$explicit_ex_dc->{$lc_k}}) {
     1052            my $dc_element    = $lc_k;
     1053            my $escaped_value = $v;
     1054           
     1055            if (defined $version && ($version eq "oai_dc")) {
     1056            $all_text .= "   <dc:$dc_element>$escaped_value</dc:$dc_element>\n";
     1057            }
     1058            else {
     1059            $all_text .= '   <dcvalue element="'. $dc_element.'">'. $escaped_value. "</dcvalue>\n";
     1060            }           
     1061        }
     1062        } elsif (defined $explicit_ex->{$lc_k}) {
    10271063        foreach my $v (@{$explicit_ex->{$lc_k}}) {
    10281064            my $dc_element    = $lc_k;
     
    10351071            $all_text .= '   <dcvalue element="'. $dc_element.'">'. $escaped_value. "</dcvalue>\n";
    10361072            }
    1037            
    10381073        }
    10391074        }
Note: See TracChangeset for help on using the changeset viewer.