diff --git a/perl/exit_strategy.pl b/perl/exit_strategy.pl index ebd984e08a16eb9f6b039637ca294ad487ea1796..49886a5feca6493f559aa89a74426ae88f60075b 100644 --- a/perl/exit_strategy.pl +++ b/perl/exit_strategy.pl @@ -365,11 +365,12 @@ sub check_if_db_conform ($string, $filename) { my $str_local_reps = "$str_local_record/*[local-name()=\'key\' and \@id=\'label\' and (. = \'LOCAL\' or . = \'LZA_INTERN\' or . = \'LZA\')]"; my $str_repid_old = "/mets:mets/mets:amdSec[starts-with(\@ID, \'REP\') and $str_local_reps]/\@ID"; my $compiled_xpath_repid_old = XML::LibXML::XPathExpression->new($str_repid_old); -# my $compiled_xpath_ifpurged_event = XML::LibXML::XPathExpression->new('/mets:mets/mets:amdSec[@ID="ie-amd"]/mets:digiprovMD[@ID="ie-amd-digiprov"]/mets:mdWrap/mets:xmlData/dnx:dnx/dnx:section[@id="event"]/dnx:record[starts-with(dnx:key[@id="eventIdentifierValue"],"27")]/dnx:key[@id="eventDescription"]/text()'); - my $compiled_xpath_ifpurged_event = XML::LibXML::XPathExpression->new('/mets:mets/mets:amdSec[@ID="ie-amd"]/mets:digiprovMD[@ID="ie-amd-digiprov"]/mets:mdWrap/mets:xmlData/dnx:dnx/dnx:section[@id="event"]/dnx:record[dnx:key[@id="eventIdentifierValue"][. >= 272][. <= 274]]/dnx:key[@id="eventDescription"]/text()'); - my $compiled_xpath_purged_event_date = XML::LibXML::XPathExpression->new('/mets:mets/mets:amdSec[@ID="ie-amd"]/mets:digiprovMD[@ID="ie-amd-digiprov"]/mets:mdWrap/mets:xmlData/dnx:dnx/dnx:section[@id="event"]/dnx:record[dnx:key[@id="eventIdentifierValue"][. >= 272][. <= 274]]/dnx:key[@id="eventDateTime"]/text()'); - my $compiled_xpath_purged_event_authorized_by = XML::LibXML::XPathExpression->new('/mets:mets/mets:amdSec[@ID="ie-amd"]/mets:digiprovMD[@ID="ie-amd-digiprov"]/mets:mdWrap/mets:xmlData/dnx:dnx/dnx:section[@id="event"]/dnx:record[dnx:key[@id="eventIdentifierValue"][. >= 272][. <= 274]]/dnx:key[@id="linkingAgentIdentifierValue1"]/text()'); - my $compiled_xpath_purged_event_reason = XML::LibXML::XPathExpression->new('/mets:mets/mets:amdSec[@ID="ie-amd"]/mets:digiprovMD[@ID="ie-amd-digiprov"]/mets:mdWrap/mets:xmlData/dnx:dnx/dnx:section[@id="event"]/dnx:record[dnx:key[@id="eventIdentifierValue"][. >= 272][. <= 274]]/dnx:key[@id="eventOutcomeDetail1"]/text()'); + # only event 272 or 274 should be used, next line uses a multiple-predicate hack for XPATH 1.0 + my $xpath_if_purged_expr = '/mets:mets/mets:amdSec[@ID="ie-amd"]/mets:digiprovMD[@ID="ie-amd-digiprov"]/mets:mdWrap/mets:xmlData/dnx:dnx/dnx:section[@id="event"]/dnx:record[dnx:key[@id="eventIdentifierValue"][. >= 272][. != 273][. <= 274]]/'; + my $compiled_xpath_ifpurged_event = XML::LibXML::XPathExpression->new($xpath_if_purged_expr . 'dnx:key[@id="eventDescription"]/text()'); + my $compiled_xpath_purged_event_date = XML::LibXML::XPathExpression->new($xpath_if_purged_expr .'dnx:key[@id="eventDateTime"]/text()'); + my $compiled_xpath_purged_event_authorized_by = XML::LibXML::XPathExpression->new($xpath_if_purged_expr . 'dnx:key[@id="linkingAgentIdentifierValue1"]/text()'); + my $compiled_xpath_purged_event_reason = XML::LibXML::XPathExpression->new($xpath_if_purged_expr . 'dnx:key[@id="eventOutcomeDetail1"]/text()'); ############################################################ sub get_title ($xp, $dmd){ # get title