r69815 - in /branches/upstream/libmarc-xml-perl/current: Changes MANIFEST META.yml lib/MARC/File/SAX.pm lib/MARC/File/XML.pm t/batch-ns.t t/batch-ns.xml t/error-handling.t t/invalid.xml

jawnsy-guest at users.alioth.debian.org jawnsy-guest at users.alioth.debian.org
Sun Feb 27 02:27:01 UTC 2011


Author: jawnsy-guest
Date: Sun Feb 27 02:26:55 2011
New Revision: 69815

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=69815
Log:
[svn-upgrade] new version libmarc-xml-perl (0.93)

Added:
    branches/upstream/libmarc-xml-perl/current/t/batch-ns.t
    branches/upstream/libmarc-xml-perl/current/t/batch-ns.xml
    branches/upstream/libmarc-xml-perl/current/t/error-handling.t
    branches/upstream/libmarc-xml-perl/current/t/invalid.xml
Modified:
    branches/upstream/libmarc-xml-perl/current/Changes
    branches/upstream/libmarc-xml-perl/current/MANIFEST
    branches/upstream/libmarc-xml-perl/current/META.yml
    branches/upstream/libmarc-xml-perl/current/lib/MARC/File/SAX.pm
    branches/upstream/libmarc-xml-perl/current/lib/MARC/File/XML.pm

Modified: branches/upstream/libmarc-xml-perl/current/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmarc-xml-perl/current/Changes?rev=69815&op=diff
==============================================================================
--- branches/upstream/libmarc-xml-perl/current/Changes (original)
+++ branches/upstream/libmarc-xml-perl/current/Changes Sun Feb 27 02:26:55 2011
@@ -1,5 +1,16 @@
 Revision history for Perl extension MARC-XML
 
+0.93 Fri Feb 11 17:13:02 EST 2011
+       - When slurping MARCXML records (e.g., via MARC::Batch), can
+         now handle XML files that use a prefix
+         to refer to the http://www.loc.gov/MARC21/slim namespace.
+       - If trying to parse a MARCXML record that has omitted
+         the <record> wrapper element, throw an exception
+         with a more meaningful error message.
+       - adjusted copyright statement further to meet Debian requirements
+         (RT#48333)
+       - set license in Makefile.PL
+ 
 0.92 Thu Jul 30 22:37:07 EDT 2009
       - small documentation changes to close RT tickets #48334 and #48333
         filed by Jonathan from Debian world.

Modified: branches/upstream/libmarc-xml-perl/current/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmarc-xml-perl/current/MANIFEST?rev=69815&op=diff
==============================================================================
--- branches/upstream/libmarc-xml-perl/current/MANIFEST (original)
+++ branches/upstream/libmarc-xml-perl/current/MANIFEST Sun Feb 27 02:26:55 2011
@@ -8,11 +8,15 @@
 MANIFEST
 META.yml
 README
+t/batch-ns.t
+t/batch-ns.xml
 t/batch.t
 t/batch.xml
 t/encode.t
+t/error-handling.t
 t/escape.mrc
 t/escape.t
+t/invalid.xml
 t/namespace.t
 t/namespace.xml
 t/record.dat

Modified: branches/upstream/libmarc-xml-perl/current/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmarc-xml-perl/current/META.yml?rev=69815&op=diff
==============================================================================
--- branches/upstream/libmarc-xml-perl/current/META.yml (original)
+++ branches/upstream/libmarc-xml-perl/current/META.yml Sun Feb 27 02:26:55 2011
@@ -1,6 +1,6 @@
 --- #YAML:1.0
 name:               MARC-XML
-version:            0.92
+version:            0.93
 abstract:           ~
 author:
     - Ed Summers <ehs at pobox.com>
@@ -18,7 +18,7 @@
     directory:
         - t
         - inc
-generated_by:       ExtUtils::MakeMaker version 6.52
+generated_by:       ExtUtils::MakeMaker version 6.55_02
 meta-spec:
     url:      http://module-build.sourceforge.net/META-spec-v1.4.html
     version:  1.4

Modified: branches/upstream/libmarc-xml-perl/current/lib/MARC/File/SAX.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmarc-xml-perl/current/lib/MARC/File/SAX.pm?rev=69815&op=diff
==============================================================================
--- branches/upstream/libmarc-xml-perl/current/lib/MARC/File/SAX.pm (original)
+++ branches/upstream/libmarc-xml-perl/current/lib/MARC/File/SAX.pm Sun Feb 27 02:26:55 2011
@@ -12,6 +12,7 @@
 use Data::Dumper;
 use MARC::Record;
 use MARC::Charset qw(utf8_to_marc8);
+use Carp qw(croak);
 
 =head2 new()
 
@@ -50,16 +51,36 @@
     my $name = $element->{ LocalName };
     if ( $name eq 'record' ) {
         $self->{ record } = MARC::Record->new();
-    } elsif ( $name eq 'leader' ) { 
-        $self->{ tag } = 'LDR';
-    } elsif ( $name eq 'controlfield' ) {
-        $self->{ tag } = $element->{ Attributes }{ '{}tag' }{ Value };
-    } elsif ( $name eq 'datafield' ) { 
-        $self->{ tag } = $element->{ Attributes }{ '{}tag' }{ Value };
-        $self->{ i1 } = $element->{ Attributes }{ '{}ind1' }{ Value };
-        $self->{ i2 } = $element->{ Attributes }{ '{}ind2' }{ Value };
-    } elsif ( $name eq 'subfield' ) { 
-        $self->{ subcode } = $element->{ Attributes }{ '{}code' }{ Value };
+    } elsif ( $name eq 'collection' ) {
+        # ignore collection wrappers
+    } elsif ( defined $self->{ record } ) {
+        if ( $name eq 'leader' ) { 
+            $self->{ tag } = 'LDR';
+        } elsif ( $name eq 'controlfield' ) {
+            $self->{ tag } = $element->{ Attributes }{ '{}tag' }{ Value };
+        } elsif ( $name eq 'datafield' ) { 
+            $self->{ tag } = $element->{ Attributes }{ '{}tag' }{ Value };
+            $self->{ i1 } = $element->{ Attributes }{ '{}ind1' }{ Value };
+            $self->{ i2 } = $element->{ Attributes }{ '{}ind2' }{ Value };
+        } elsif ( $name eq 'subfield' ) { 
+            $self->{ subcode } = $element->{ Attributes }{ '{}code' }{ Value };
+        }
+    } else {
+        # we've reached a new element but haven't started populating
+        # a MARC::Record yet.  This either means that we've encountered
+        # some non-MARC21slim stuff or the caller's given us an invalid
+        # doc that doesn't include a <record> element.
+        # In the first case, we'll just ignore the element; in the second
+        # case, we'll thow an exception with a better description.
+        #
+        # TODO: to be more consistent with how MARC::File::USMARC handles
+        #        parse errors, rather than throwing an exception we could
+        #        instantiate an empty MARC::Record and set its warnings
+        #        array.
+        #
+        if ( $name eq 'leader' || $name eq 'controlfield' || $name eq 'datafield' || $name eq 'subfield' ) {
+            croak("found MARCXML element $name, but the <record> wrapper is missing");
+        }
     }
 }
 

Modified: branches/upstream/libmarc-xml-perl/current/lib/MARC/File/XML.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmarc-xml-perl/current/lib/MARC/File/XML.pm?rev=69815&op=diff
==============================================================================
--- branches/upstream/libmarc-xml-perl/current/lib/MARC/File/XML.pm (original)
+++ branches/upstream/libmarc-xml-perl/current/lib/MARC/File/XML.pm Sun Feb 27 02:26:55 2011
@@ -14,7 +14,7 @@
 use Carp qw( croak );
 use Encode ();
 
-$VERSION = '0.92';
+$VERSION = '0.93';
 
 my $factory = XML::SAX::ParserFactory->new();
 $factory->require_feature(Namespaces);
@@ -395,15 +395,22 @@
     return if eof($fh);
 
     ## get a chunk of xml for a record
-    local $/ = '</record>';
+    local $/ = 'record>';
     my $xml = <$fh>;
 
+    ## do we have enough?
+    $xml .= <$fh> if $xml !~ m!</([^:]+:){0,1}record>$!;
     ## trim stuff before the start record element 
-    $xml =~ s/.*<record.*?>/<record>/s;
+    $xml =~ s/.*?<(([^:]+:){0,1})record.*?>/<$1record>/s;
 
     ## return undef if there isn't a good chunk of xml
-    return if ( $xml !~ m|<record>.*</record>|s );
-    
+    return if ( $xml !~ m|<(([^:]+:){0,1})record>.*</\1record>|s );
+
+    ## if we have a namespace prefix, restore the declaration
+    if ($xml =~ /<([^:]+:)record>/) {
+        $xml =~ s!<([^:]+):record>!<$1:record xmlns:$1="http://www.loc.gov/MARC21/slim">!;
+    }
+
     ## return the chunk of xml
     return( $xml );
 }
@@ -512,8 +519,6 @@
 
 =item * Support for callback filters in decode().
 
-=item * Command line utilities marc2xml, etc.
-
 =back
 
 =head1 SEE ALSO

Added: branches/upstream/libmarc-xml-perl/current/t/batch-ns.t
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmarc-xml-perl/current/t/batch-ns.t?rev=69815&op=file
==============================================================================
--- branches/upstream/libmarc-xml-perl/current/t/batch-ns.t (added)
+++ branches/upstream/libmarc-xml-perl/current/t/batch-ns.t Sun Feb 27 02:26:55 2011
@@ -1,0 +1,42 @@
+use Test::More tests => 23;
+
+use Data::Dumper;
+use_ok( 'MARC::File::XML' );
+use_ok( 'MARC::Batch' );
+
+my $batch = MARC::Batch->new( 'XML', 't/batch-ns.xml' );
+isa_ok( $batch, 'MARC::Batch' );
+
+my @titles = ( 
+'ActivePerl with ASP and ADO / Tobias Martinsson.',
+'Programming the Perl DBI / Alligator Descartes and Tim Bunce.',
+'Perl : programmer\'s reference / Martin C. Brown.',
+'Perl : the complete reference / Martin C. Brown.',
+'CGI programming with Perl / Scott Guelich, Shishir Gundavaram & Gunther Birznieks.',
+'Proceedings of the Perl Conference 4.0 : July 17-20, 2000, Monterey, California.',
+'Perl for system administration / David N. Blank-Edelman.',
+'Programming Perl / Larry Wall, Tom Christiansen & Jon Orwant.',
+'Perl programmer\'s interactive workbook / Vincent Lowe.',
+'Cross-platform Perl / Eric F. Johnson.',
+);
+
+my @leaders = (
+'00755cam  22002414a 4500',
+'00647pam  2200241 a 4500',
+'00605cam  22002054a 4500',
+'00579cam  22002054a 4500',
+'00801nam  22002778a 4500',
+'00665nam  22002298a 4500',
+'00579nam  22002178a 4500',
+'00661nam  22002538a 4500',
+'00603cam  22002054a 4500',
+'00696nam  22002538a 4500',
+);
+
+$count = 0;
+while ( my $record = $batch->next() ) { 
+    $count++;
+    is( $record->leader(), shift(@leaders), "found leader $count" );
+    is( $record->title(), shift(@titles), "found title $count" );
+}
+

Added: branches/upstream/libmarc-xml-perl/current/t/batch-ns.xml
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmarc-xml-perl/current/t/batch-ns.xml?rev=69815&op=file
==============================================================================
--- branches/upstream/libmarc-xml-perl/current/t/batch-ns.xml (added)
+++ branches/upstream/libmarc-xml-perl/current/t/batch-ns.xml Sun Feb 27 02:26:55 2011
@@ -1,0 +1,552 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<marc:collection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd" xmlns:marc="http://www.loc.gov/MARC21/slim">
+  <marc:record>
+    <marc:leader>00755cam  22002414a 4500</marc:leader>
+    <marc:controlfield tag="001">fol05731351 </marc:controlfield>
+    <marc:controlfield tag="003">IMchF</marc:controlfield>
+    <marc:controlfield tag="005">20000613133448.0</marc:controlfield>
+    <marc:controlfield tag="008">000107s2000    nyua          001 0 eng  </marc:controlfield>
+    <marc:datafield tag="010" ind1=" " ind2=" ">
+      <marc:subfield code="a">   00020737 </marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="020" ind1=" " ind2=" ">
+      <marc:subfield code="a">0471383147 (paper/cd-rom : alk. paper)</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="040" ind1=" " ind2=" ">
+      <marc:subfield code="a">DLC</marc:subfield>
+      <marc:subfield code="c">DLC</marc:subfield>
+      <marc:subfield code="d">DLC</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="042" ind1=" " ind2=" ">
+      <marc:subfield code="a">pcc</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="050" ind1="0" ind2="0">
+      <marc:subfield code="a">QA76.73.P22</marc:subfield>
+      <marc:subfield code="b">M33 2000</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="082" ind1="0" ind2="0">
+      <marc:subfield code="a">005.13/3</marc:subfield>
+      <marc:subfield code="2">21</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="100" ind1="1" ind2=" ">
+      <marc:subfield code="a">Martinsson, Tobias,</marc:subfield>
+      <marc:subfield code="d">1976-</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="245" ind1="1" ind2="0">
+      <marc:subfield code="a">ActivePerl with ASP and ADO /</marc:subfield>
+      <marc:subfield code="c">Tobias Martinsson.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="260" ind1=" " ind2=" ">
+      <marc:subfield code="a">New York :</marc:subfield>
+      <marc:subfield code="b">John Wiley &amp; Sons,</marc:subfield>
+      <marc:subfield code="c">2000.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="300" ind1=" " ind2=" ">
+      <marc:subfield code="a">xxi, 289 p. :</marc:subfield>
+      <marc:subfield code="b">ill. ;</marc:subfield>
+      <marc:subfield code="c">23 cm. +</marc:subfield>
+      <marc:subfield code="e">1 computer  laser disc (4 3/4 in.)</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="500" ind1=" " ind2=" ">
+      <marc:subfield code="a">"Wiley Computer Publishing."</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="650" ind1=" " ind2="0">
+      <marc:subfield code="a">Perl (Computer program language)</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="630" ind1="0" ind2="0">
+      <marc:subfield code="a">Active server pages.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="630" ind1="0" ind2="0">
+      <marc:subfield code="a">ActiveX.</marc:subfield>
+    </marc:datafield>
+  </marc:record>
+  <marc:record>
+    <marc:leader>00647pam  2200241 a 4500</marc:leader>
+    <marc:controlfield tag="001">fol05754809 </marc:controlfield>
+    <marc:controlfield tag="003">IMchF</marc:controlfield>
+    <marc:controlfield tag="005">20000601115601.0</marc:controlfield>
+    <marc:controlfield tag="008">000203s2000    mau           001 0 eng  </marc:controlfield>
+    <marc:datafield tag="010" ind1=" " ind2=" ">
+      <marc:subfield code="a">   00022023 </marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="020" ind1=" " ind2=" ">
+      <marc:subfield code="a">1565926994</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="040" ind1=" " ind2=" ">
+      <marc:subfield code="a">DLC</marc:subfield>
+      <marc:subfield code="c">DLC</marc:subfield>
+      <marc:subfield code="d">DLC</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="042" ind1=" " ind2=" ">
+      <marc:subfield code="a">pcc</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="050" ind1="0" ind2="0">
+      <marc:subfield code="a">QA76.73.P22</marc:subfield>
+      <marc:subfield code="b">D47 2000</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="082" ind1="0" ind2="0">
+      <marc:subfield code="a">005.74</marc:subfield>
+      <marc:subfield code="2">21</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="100" ind1="1" ind2=" ">
+      <marc:subfield code="a">Descartes, Alligator.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="245" ind1="1" ind2="0">
+      <marc:subfield code="a">Programming the Perl DBI /</marc:subfield>
+      <marc:subfield code="c">Alligator Descartes and Tim Bunce.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="260" ind1=" " ind2=" ">
+      <marc:subfield code="a">Cmabridge, MA :</marc:subfield>
+      <marc:subfield code="b">O'Reilly,</marc:subfield>
+      <marc:subfield code="c">2000.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="263" ind1=" " ind2=" ">
+      <marc:subfield code="a">1111</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="300" ind1=" " ind2=" ">
+      <marc:subfield code="a">p. cm.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="650" ind1=" " ind2="0">
+      <marc:subfield code="a">Perl (Computer program language)</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="650" ind1=" " ind2="0">
+      <marc:subfield code="a">Database management.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="700" ind1="1" ind2=" ">
+      <marc:subfield code="a">Bunce, Tim.</marc:subfield>
+    </marc:datafield>
+  </marc:record>
+  <marc:record>
+    <marc:leader>00605cam  22002054a 4500</marc:leader>
+    <marc:controlfield tag="001">fol05843555 </marc:controlfield>
+    <marc:controlfield tag="003">IMchF</marc:controlfield>
+    <marc:controlfield tag="005">20000525142739.0</marc:controlfield>
+    <marc:controlfield tag="008">000318s1999    cau      b    001 0 eng  </marc:controlfield>
+    <marc:datafield tag="010" ind1=" " ind2=" ">
+      <marc:subfield code="a">   00501349 </marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="040" ind1=" " ind2=" ">
+      <marc:subfield code="a">DLC</marc:subfield>
+      <marc:subfield code="c">DLC</marc:subfield>
+      <marc:subfield code="d">DLC</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="042" ind1=" " ind2=" ">
+      <marc:subfield code="a">pcc</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="050" ind1="0" ind2="0">
+      <marc:subfield code="a">QA76.73.P22</marc:subfield>
+      <marc:subfield code="b">B763 1999</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="082" ind1="0" ind2="0">
+      <marc:subfield code="a">005.13/3</marc:subfield>
+      <marc:subfield code="2">21</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="100" ind1="1" ind2=" ">
+      <marc:subfield code="a">Brown, Martin C.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="245" ind1="1" ind2="0">
+      <marc:subfield code="a">Perl :</marc:subfield>
+      <marc:subfield code="b">programmer's reference /</marc:subfield>
+      <marc:subfield code="c">Martin C. Brown.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="260" ind1=" " ind2=" ">
+      <marc:subfield code="a">Berkeley :</marc:subfield>
+      <marc:subfield code="b">Osborne/McGraw-Hill,</marc:subfield>
+      <marc:subfield code="c">c1999.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="300" ind1=" " ind2=" ">
+      <marc:subfield code="a">xix, 380 p. ;</marc:subfield>
+      <marc:subfield code="c">22 cm.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="504" ind1=" " ind2=" ">
+      <marc:subfield code="a">Includes bibliographical references and index.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="650" ind1=" " ind2="0">
+      <marc:subfield code="a">Perl (Computer program language)</marc:subfield>
+    </marc:datafield>
+  </marc:record>
+  <marc:record>
+    <marc:leader>00579cam  22002054a 4500</marc:leader>
+    <marc:controlfield tag="001">fol05843579 </marc:controlfield>
+    <marc:controlfield tag="003">IMchF</marc:controlfield>
+    <marc:controlfield tag="005">20000525142716.0</marc:controlfield>
+    <marc:controlfield tag="008">000318s1999    caua          001 0 eng  </marc:controlfield>
+    <marc:datafield tag="010" ind1=" " ind2=" ">
+      <marc:subfield code="a">   00502116 </marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="020" ind1=" " ind2=" ">
+      <marc:subfield code="a">0072120002</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="040" ind1=" " ind2=" ">
+      <marc:subfield code="a">DLC</marc:subfield>
+      <marc:subfield code="c">DLC</marc:subfield>
+      <marc:subfield code="d">DLC</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="042" ind1=" " ind2=" ">
+      <marc:subfield code="a">pcc</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="050" ind1="0" ind2="0">
+      <marc:subfield code="a">QA76.73.P22</marc:subfield>
+      <marc:subfield code="b">B762 1999</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="082" ind1="0" ind2="0">
+      <marc:subfield code="a">005.13/3</marc:subfield>
+      <marc:subfield code="2">21</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="100" ind1="1" ind2=" ">
+      <marc:subfield code="a">Brown, Martin C.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="245" ind1="1" ind2="0">
+      <marc:subfield code="a">Perl :</marc:subfield>
+      <marc:subfield code="b">the complete reference /</marc:subfield>
+      <marc:subfield code="c">Martin C. Brown.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="260" ind1=" " ind2=" ">
+      <marc:subfield code="a">Berkeley :</marc:subfield>
+      <marc:subfield code="b">Osborne/McGraw-Hill,</marc:subfield>
+      <marc:subfield code="c">c1999.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="300" ind1=" " ind2=" ">
+      <marc:subfield code="a">xxxv, 1179 p. :</marc:subfield>
+      <marc:subfield code="b">ill. ;</marc:subfield>
+      <marc:subfield code="c">24 cm.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="650" ind1=" " ind2="0">
+      <marc:subfield code="a">Perl (Computer program language)</marc:subfield>
+    </marc:datafield>
+  </marc:record>
+  <marc:record>
+    <marc:leader>00801nam  22002778a 4500</marc:leader>
+    <marc:controlfield tag="001">fol05848297 </marc:controlfield>
+    <marc:controlfield tag="003">IMchF</marc:controlfield>
+    <marc:controlfield tag="005">20000524125727.0</marc:controlfield>
+    <marc:controlfield tag="008">000518s2000    mau           001 0 eng  </marc:controlfield>
+    <marc:datafield tag="010" ind1=" " ind2=" ">
+      <marc:subfield code="a">   00041664 </marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="020" ind1=" " ind2=" ">
+      <marc:subfield code="a">1565924193</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="040" ind1=" " ind2=" ">
+      <marc:subfield code="a">DLC</marc:subfield>
+      <marc:subfield code="c">DLC</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="042" ind1=" " ind2=" ">
+      <marc:subfield code="a">pcc</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="050" ind1="0" ind2="0">
+      <marc:subfield code="a">QA76.73.P22</marc:subfield>
+      <marc:subfield code="b">G84 2000</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="082" ind1="0" ind2="0">
+      <marc:subfield code="a">005.2/762</marc:subfield>
+      <marc:subfield code="2">21</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="100" ind1="1" ind2=" ">
+      <marc:subfield code="a">Guelich, Scott.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="245" ind1="1" ind2="0">
+      <marc:subfield code="a">CGI programming with Perl /</marc:subfield>
+      <marc:subfield code="c">Scott Guelich, Shishir Gundavaram &amp; Gunther Birznieks.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="250" ind1=" " ind2=" ">
+      <marc:subfield code="a">2nd ed., expanded &amp; updated</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="260" ind1=" " ind2=" ">
+      <marc:subfield code="a">Cambridge, Mass. :</marc:subfield>
+      <marc:subfield code="b">O'Reilly,</marc:subfield>
+      <marc:subfield code="c">2000.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="263" ind1=" " ind2=" ">
+      <marc:subfield code="a">0006</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="300" ind1=" " ind2=" ">
+      <marc:subfield code="a">p. cm.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="650" ind1=" " ind2="0">
+      <marc:subfield code="a">Perl (Computer program language)</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="650" ind1=" " ind2="0">
+      <marc:subfield code="a">CGI (Computer network protocol)</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="650" ind1=" " ind2="0">
+      <marc:subfield code="a">Internet programming.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="700" ind1="1" ind2=" ">
+      <marc:subfield code="a">Gundavaram, Shishir.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="700" ind1="1" ind2=" ">
+      <marc:subfield code="a">Birznieks, Gunther.</marc:subfield>
+    </marc:datafield>
+  </marc:record>
+  <marc:record>
+    <marc:leader>00665nam  22002298a 4500</marc:leader>
+    <marc:controlfield tag="001">fol05865950 </marc:controlfield>
+    <marc:controlfield tag="003">IMchF</marc:controlfield>
+    <marc:controlfield tag="005">20000615103017.0</marc:controlfield>
+    <marc:controlfield tag="008">000612s2000    mau           100 0 eng  </marc:controlfield>
+    <marc:datafield tag="010" ind1=" " ind2=" ">
+      <marc:subfield code="a">   00055759 </marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="020" ind1=" " ind2=" ">
+      <marc:subfield code="a">0596000138</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="040" ind1=" " ind2=" ">
+      <marc:subfield code="a">DLC</marc:subfield>
+      <marc:subfield code="c">DLC</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="042" ind1=" " ind2=" ">
+      <marc:subfield code="a">pcc</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="050" ind1="0" ind2="0">
+      <marc:subfield code="a">QA76.73.P22</marc:subfield>
+      <marc:subfield code="b">P475 2000</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="082" ind1="0" ind2="0">
+      <marc:subfield code="a">005.13/3</marc:subfield>
+      <marc:subfield code="2">21</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="111" ind1="2" ind2=" ">
+      <marc:subfield code="a">Perl Conference 4.0</marc:subfield>
+      <marc:subfield code="d">(2000 :</marc:subfield>
+      <marc:subfield code="c">Monterey, Calif.)</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="245" ind1="1" ind2="0">
+      <marc:subfield code="a">Proceedings of the Perl Conference 4.0 :</marc:subfield>
+      <marc:subfield code="b">July 17-20, 2000, Monterey, California.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="250" ind1=" " ind2=" ">
+      <marc:subfield code="a">1st ed.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="260" ind1=" " ind2=" ">
+      <marc:subfield code="a">Cambridge, Mass. :</marc:subfield>
+      <marc:subfield code="b">O'Reilly,</marc:subfield>
+      <marc:subfield code="c">2000.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="263" ind1=" " ind2=" ">
+      <marc:subfield code="a">0006</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="300" ind1=" " ind2=" ">
+      <marc:subfield code="a">p. cm.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="650" ind1=" " ind2="0">
+      <marc:subfield code="a">Perl (Computer program language)</marc:subfield>
+      <marc:subfield code="v">Congresses.</marc:subfield>
+    </marc:datafield>
+  </marc:record>
+  <marc:record>
+    <marc:leader>00579nam  22002178a 4500</marc:leader>
+    <marc:controlfield tag="001">fol05865956 </marc:controlfield>
+    <marc:controlfield tag="003">IMchF</marc:controlfield>
+    <marc:controlfield tag="005">20000615102948.0</marc:controlfield>
+    <marc:controlfield tag="008">000612s2000    mau           000 0 eng  </marc:controlfield>
+    <marc:datafield tag="010" ind1=" " ind2=" ">
+      <marc:subfield code="a">   00055770 </marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="020" ind1=" " ind2=" ">
+      <marc:subfield code="a">1565926099</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="040" ind1=" " ind2=" ">
+      <marc:subfield code="a">DLC</marc:subfield>
+      <marc:subfield code="c">DLC</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="042" ind1=" " ind2=" ">
+      <marc:subfield code="a">pcc</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="050" ind1="0" ind2="0">
+      <marc:subfield code="a">QA76.73.P22</marc:subfield>
+      <marc:subfield code="b">B43 2000</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="082" ind1="0" ind2="0">
+      <marc:subfield code="a">005.13/3</marc:subfield>
+      <marc:subfield code="2">21</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="100" ind1="1" ind2=" ">
+      <marc:subfield code="a">Blank-Edelman, David N.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="245" ind1="1" ind2="0">
+      <marc:subfield code="a">Perl for system administration /</marc:subfield>
+      <marc:subfield code="c">David N. Blank-Edelman.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="260" ind1=" " ind2=" ">
+      <marc:subfield code="a">Cambridge, Mass. :</marc:subfield>
+      <marc:subfield code="b">O'Reilly,</marc:subfield>
+      <marc:subfield code="c">2000.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="263" ind1=" " ind2=" ">
+      <marc:subfield code="a">0006</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="300" ind1=" " ind2=" ">
+      <marc:subfield code="a">p. cm.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="650" ind1=" " ind2="0">
+      <marc:subfield code="a">Perl (Computer program language)</marc:subfield>
+    </marc:datafield>
+  </marc:record>
+  <marc:record>
+    <marc:leader>00661nam  22002538a 4500</marc:leader>
+    <marc:controlfield tag="001">fol05865967 </marc:controlfield>
+    <marc:controlfield tag="003">IMchF</marc:controlfield>
+    <marc:controlfield tag="005">20000615102611.0</marc:controlfield>
+    <marc:controlfield tag="008">000614s2000    mau           000 0 eng  </marc:controlfield>
+    <marc:datafield tag="010" ind1=" " ind2=" ">
+      <marc:subfield code="a">   00055799 </marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="020" ind1=" " ind2=" ">
+      <marc:subfield code="a">0596000278</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="040" ind1=" " ind2=" ">
+      <marc:subfield code="a">DLC</marc:subfield>
+      <marc:subfield code="c">DLC</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="042" ind1=" " ind2=" ">
+      <marc:subfield code="a">pcc</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="050" ind1="0" ind2="0">
+      <marc:subfield code="a">QA76.73.P22</marc:subfield>
+      <marc:subfield code="b">W35 2000</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="082" ind1="0" ind2="0">
+      <marc:subfield code="a">005.13/3</marc:subfield>
+      <marc:subfield code="2">21</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="100" ind1="1" ind2=" ">
+      <marc:subfield code="a">Wall, Larry.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="245" ind1="1" ind2="0">
+      <marc:subfield code="a">Programming Perl /</marc:subfield>
+      <marc:subfield code="c">Larry Wall, Tom Christiansen &amp; Jon Orwant.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="250" ind1=" " ind2=" ">
+      <marc:subfield code="a">3rd ed.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="260" ind1=" " ind2=" ">
+      <marc:subfield code="a">Cambridge, Mass. :</marc:subfield>
+      <marc:subfield code="b">O'Reilly,</marc:subfield>
+      <marc:subfield code="c">2000.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="263" ind1=" " ind2=" ">
+      <marc:subfield code="a">0007</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="300" ind1=" " ind2=" ">
+      <marc:subfield code="a">p. cm.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="650" ind1=" " ind2="0">
+      <marc:subfield code="a">Perl (Computer program language)</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="700" ind1="1" ind2=" ">
+      <marc:subfield code="a">Christiansen, Tom.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="700" ind1="1" ind2=" ">
+      <marc:subfield code="a">Orwant, Jon.</marc:subfield>
+    </marc:datafield>
+  </marc:record>
+  <marc:record>
+    <marc:leader>00603cam  22002054a 4500</marc:leader>
+    <marc:controlfield tag="001">fol05872355 </marc:controlfield>
+    <marc:controlfield tag="003">IMchF</marc:controlfield>
+    <marc:controlfield tag="005">20000706095105.0</marc:controlfield>
+    <marc:controlfield tag="008">000315s1999    njua          001 0 eng  </marc:controlfield>
+    <marc:datafield tag="010" ind1=" " ind2=" ">
+      <marc:subfield code="a">   00500678 </marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="020" ind1=" " ind2=" ">
+      <marc:subfield code="a">013020868X</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="040" ind1=" " ind2=" ">
+      <marc:subfield code="a">DLC</marc:subfield>
+      <marc:subfield code="c">DLC</marc:subfield>
+      <marc:subfield code="d">DLC</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="042" ind1=" " ind2=" ">
+      <marc:subfield code="a">pcc</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="050" ind1="0" ind2="0">
+      <marc:subfield code="a">QA76.73.P22</marc:subfield>
+      <marc:subfield code="b">L69 1999</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="082" ind1="0" ind2="0">
+      <marc:subfield code="a">005.13/3</marc:subfield>
+      <marc:subfield code="2">21</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="100" ind1="1" ind2=" ">
+      <marc:subfield code="a">Lowe, Vincent</marc:subfield>
+      <marc:subfield code="q">(Vincent D.)</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="245" ind1="1" ind2="0">
+      <marc:subfield code="a">Perl programmer's interactive workbook /</marc:subfield>
+      <marc:subfield code="c">Vincent Lowe.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="260" ind1=" " ind2=" ">
+      <marc:subfield code="a">Upper Saddle River, NJ :</marc:subfield>
+      <marc:subfield code="b">Prentice Hall PTP,</marc:subfield>
+      <marc:subfield code="c">c1999.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="300" ind1=" " ind2=" ">
+      <marc:subfield code="a">xx, 633 p. :</marc:subfield>
+      <marc:subfield code="b">ill. ;</marc:subfield>
+      <marc:subfield code="c">23 cm.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="650" ind1=" " ind2="0">
+      <marc:subfield code="a">Perl (Computer program language)</marc:subfield>
+    </marc:datafield>
+  </marc:record>
+  <marc:record>
+    <marc:leader>00696nam  22002538a 4500</marc:leader>
+    <marc:controlfield tag="001">fol05882032 </marc:controlfield>
+    <marc:controlfield tag="003">IMchF</marc:controlfield>
+    <marc:controlfield tag="005">20000707091904.0</marc:controlfield>
+    <marc:controlfield tag="008">000630s2000    cau           001 0 eng  </marc:controlfield>
+    <marc:datafield tag="010" ind1=" " ind2=" ">
+      <marc:subfield code="a">   00058174 </marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="020" ind1=" " ind2=" ">
+      <marc:subfield code="a">0764547291 (alk. paper)</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="040" ind1=" " ind2=" ">
+      <marc:subfield code="a">DLC</marc:subfield>
+      <marc:subfield code="c">DLC</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="042" ind1=" " ind2=" ">
+      <marc:subfield code="a">pcc</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="050" ind1="0" ind2="0">
+      <marc:subfield code="a">QA76.73.P22</marc:subfield>
+      <marc:subfield code="b">F64 2000</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="082" ind1="0" ind2="0">
+      <marc:subfield code="a">005.13/3</marc:subfield>
+      <marc:subfield code="2">21</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="100" ind1="2" ind2=" ">
+      <marc:subfield code="a">Foster-Johnson, Eric.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="245" ind1="1" ind2="0">
+      <marc:subfield code="a">Cross-platform Perl /</marc:subfield>
+      <marc:subfield code="c">Eric F. Johnson.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="260" ind1=" " ind2=" ">
+      <marc:subfield code="a">Foster City, CA :</marc:subfield>
+      <marc:subfield code="b">IDG Books Worldwide,</marc:subfield>
+      <marc:subfield code="c">2000.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="263" ind1=" " ind2=" ">
+      <marc:subfield code="a">0009</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="300" ind1=" " ind2=" ">
+      <marc:subfield code="a">p. cm.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="500" ind1=" " ind2=" ">
+      <marc:subfield code="a">Includes index.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="650" ind1=" " ind2="0">
+      <marc:subfield code="a">Perl (Computer program language)</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="650" ind1=" " ind2="0">
+      <marc:subfield code="a">Web servers.</marc:subfield>
+    </marc:datafield>
+    <marc:datafield tag="650" ind1=" " ind2="0">
+      <marc:subfield code="a">Cross-platform software development.</marc:subfield>
+    </marc:datafield>
+  </marc:record>
+</marc:collection>

Added: branches/upstream/libmarc-xml-perl/current/t/error-handling.t
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmarc-xml-perl/current/t/error-handling.t?rev=69815&op=file
==============================================================================
--- branches/upstream/libmarc-xml-perl/current/t/error-handling.t (added)
+++ branches/upstream/libmarc-xml-perl/current/t/error-handling.t Sun Feb 27 02:26:55 2011
@@ -1,0 +1,17 @@
+use strict;
+use warnings;
+use Test::More tests => 1; 
+use MARC::Record;
+use MARC::File::XML;
+
+open IN, '<', 't/invalid.xml';
+my $xml = join('', <IN>);
+close IN;
+my $r;
+eval { $r = MARC::Record->new_from_xml($xml, 'UTF-8'); };
+if ($@) {
+    diag($@);
+    ok($@ =~ /found MARCXML element/, 'failed with sensible exception message');
+} else {
+    fail('should have thrown an exception trying to parse XML from t/invalid.xml');
+}

Added: branches/upstream/libmarc-xml-perl/current/t/invalid.xml
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmarc-xml-perl/current/t/invalid.xml?rev=69815&op=file
==============================================================================
--- branches/upstream/libmarc-xml-perl/current/t/invalid.xml (added)
+++ branches/upstream/libmarc-xml-perl/current/t/invalid.xml Sun Feb 27 02:26:55 2011
@@ -1,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<collection
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"
+  xmlns="http://www.loc.gov/MARC21/slim">
+<datafield tag="952" ind1=" " ind2=" ">
+<subfield code="2">ddc</subfield>
+<subfield code="a">CPL</subfield>
+<subfield code="b">CPL</subfield>
+<subfield code="p">barcode2</subfield>
+</datafield>
+</collection>




More information about the Pkg-perl-cvs-commits mailing list