Changeset 12327


Ignore:
Timestamp:
2006-07-28T14:49:58+12:00 (18 years ago)
Author:
shaoqun
Message:

added methods used by plugout

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl/perllib/doc.pm

    r12268 r12327  
    225225sub _escape_text {
    226226    my ($text) = @_;
    227 
    228227    # special characters in the gml encoding
    229228    $text =~ s/&/&/g; # this has to be first...
     
    733732# Build up dublin_core metadata.  Priority given to dc.* over ex.*
    734733
     734sub new_buffer_dc_section {
     735   
     736    my $self = shift(@_);
     737    my ($section, $version) = @_;
     738
     739    # build up string of dublin core metadata
     740    $section="" unless defined $section;
     741   
     742    my $section_ptr=$self->_lookup_section($section);
     743    return "" unless defined $section_ptr;
     744    foreach my $data (@{$section_ptr->{'metadata'}}){
     745    my $escaped_value = &_escape_text($data->[1]);
     746    my $dc_element =  $data->[0];
     747   
     748    my @array = split('\.',$dc_element);
     749    my ($type,$name);
     750
     751    if(defined $array[1])
     752    {
     753        $type = $array[0];
     754        $name = $array[1];
     755    }
     756    else
     757    {
     758        $type = "ex";
     759        $name = $array[0];
     760    }
     761   
     762    $all_text .= '   <Metadata Type="'. $type.'" Name="'.$name.'">'. $escaped_value. "</Metadata>\n";
     763    }
     764    return $all_text;
     765}
     766
     767
    735768sub buffer_dc_section {
    736769    my $self = shift(@_);
     
    743776    return "" unless defined $section_ptr;
    744777
     778
    745779    my $explicit_dc = {};
    746780    my $explicit_ex = {};
     
    748782    my $all_text="";
    749783    foreach my $data (@{$section_ptr->{'metadata'}}){
     784    foreach my $temp (@$data)
     785    {
     786        print "($temp) ";
     787    }   
     788    print "\n";
    750789    my $escaped_value = &_escape_text($data->[1]);
    751790    if ($data->[0]=~ m/^dc\./) {
     
    821860    my ($handle, $section, $version) = @_;
    822861   
    823     my $all_text = $self->buffer_dc_section($section,$version);
    824 
     862    #my $all_text = $self->buffer_dc_section($section,$version);
     863    my $all_text = $self->new_buffer_dc_section($section,$version);
     864   
    825865    print $handle $all_text;
    826866}
     
    836876
    837877    while (defined $section && $section ne "") {
     878   
    838879    ($num, $section) = $section =~ /^\.?(\d+)(.*)$/;
    839     $num =~ s/^0+(\d)/$1/; # remove leading 0s
     880   
     881    $num =~ s/^0+(\d)/$1/ if defined $num ; # remove leading 0s
     882   
    840883    $section = "" unless defined $section;
    841884   
     885
    842886    if (defined $num && defined $sectionref->{'subsections'}->{$num}) {
    843887        $sectionref = $sectionref->{'subsections'}->{$num};
     
    13581402}
    13591403
     1404# returns a xml element of the form <MetadataList><Metadata name="metadata-name">metadata_value</Metadata>...</MetadataList>
     1405sub get_top_metadata_list{
     1406    my $self = shift (@_);
     1407
     1408    my @topmetadata =$self->get_all_metadata($self->get_top_section());
     1409    my $metadatalist ='<MetadataList>';
     1410   
     1411     foreach my $i (@topmetadata){
     1412     foreach my $j (@$i){   
     1413         my %metaMap = @$j;
     1414         foreach my $key (keys %metaMap){
     1415         $metadatalist .='<Metadata name='."\"$key\"".'>'.$metaMap{$key}.'</Metadata>'."\n";
     1416         }       
     1417     }   
     1418     }
     1419
     1420  $metadatalist .='</MetadataList>';   
     1421
     1422   return $metadatalist;
     1423}
     1424
     1425
    13601426# $value is optional
    13611427sub delete_metadata {
Note: See TracChangeset for help on using the changeset viewer.