X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=blobdiff_plain;f=sql%2Fbase%2Fbase.sql;h=deeaa3c50c7924f477e3531196460a83219c2e44;hp=ab7b654a6f85958147e0d4174fe3589a144412e8;hb=66620b64f7d28ec1294258594d458697258d722e;hpb=ce9ac5aeee49207bc0adf3b021db0f33742feddd diff --git a/sql/base/base.sql b/sql/base/base.sql index ab7b654..deeaa3c 100644 --- a/sql/base/base.sql +++ b/sql/base/base.sql @@ -1625,4 +1625,23 @@ END; $$ LANGUAGE plpgsql; +CREATE OR REPLACE FUNCTION migration_tools.marc_parses( TEXT ) RETURNS BOOLEAN AS $func$ + +use MARC::Record; +use MARC::File::XML (BinaryEncoding => 'UTF-8'); +use MARC::Charset; + +MARC::Charset->assume_unicode(1); + +my $xml = shift; + +eval { my $r = MARC::Record->new_from_xml( $xml ); }; +if ($@) { + return 0; +} else { + return 1; +} + +$func$ LANGUAGE PLPERLU; +COMMENT ON FUNCTION migration_tools.marc_parses(TEXT) IS 'Return boolean indicating if MARCXML string is parseable by MARC::File::XML';