Changeset 24404 for main/trunk/greenstone2/perllib/plugouts/BasePlugout.pm
- Timestamp:
- 2011-08-12T19:35:50+12:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone2/perllib/plugouts/BasePlugout.pm
r23939 r24404 965 965 966 966 # 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 968 970 sub get_dc_metadata { 969 971 my $self = shift(@_); … … 978 980 979 981 my $explicit_dc = {}; 982 my $explicit_ex_dc = {}; 980 983 my $explicit_ex = {}; 981 984 982 985 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 983 993 foreach my $data (@{$section_ptr->{'metadata'}}){ 984 994 my $escaped_value = &docprint::escape_text($data->[1]); … … 1002 1012 } 1003 1013 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) 1006 1028 $data->[0] =~ m/^(ex\.)?(.*)/; 1007 my $ex_element = 1029 my $ex_element = $2; 1008 1030 my $lc_ex_element = lc($ex_element); 1009 1031 … … 1023 1045 1024 1046 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}) { 1027 1063 foreach my $v (@{$explicit_ex->{$lc_k}}) { 1028 1064 my $dc_element = $lc_k; … … 1035 1071 $all_text .= ' <dcvalue element="'. $dc_element.'">'. $escaped_value. "</dcvalue>\n"; 1036 1072 } 1037 1038 1073 } 1039 1074 }
Note:
See TracChangeset
for help on using the changeset viewer.