Hi Dan.

Yes, 'copy_id' is what I was looking for.  Thank you so much for that!

We need to have the id from the asset.copy table in the 852 subfield f of our Z39.50 output for our holdings. I'm not sure exactly why but it is my understanding that certain vendors that we work with need it there.

If there is some other place we should be doing this I would like to know. It seems to me WWW/SuperCat.pm is the only place to do it.

Thanks again!


On 1/2/2018 10:23 AM, Daniel Wells wrote:
Hello John,

This part of the code is pulling data from the unapi.bre() function in the DB, so in this case, you want 'copy_id', i.e.:

...
f => $copy->getAttribute('copy_id'),
...

This said, I think we'd all be interested to know exactly what you are trying to accomplish, as there are other existing APIs for getting copy IDs, so I am not sure if adding it into this SRU function is the easiest way to go.

Sincerely,
Dan


On Tue, Jan 2, 2018 at 9:50 AM, John Merriam <jmerr...@biblio.org <mailto:jmerr...@biblio.org>> wrote:

    Hello.  I am working in the perl module WWW/SuperCat.pm and trying
    to get the id of a row in asset.copy.  For some reason I am getting
    back what looks like an unAPI URI instead of just the id of the
    row.  I've been staring at this for a while and not sure why this is
    happening or the best way to fix it.  This is around line 2030 in my
    WWW/SuperCat.pm in EG 2.12.8.  The basic code flow in
    WWW/SuperCat.pm is:

    results retrieved from cstore
    my $marcxml = XML::LibXML->load_xml(...);
    my @copies;
    for my $node ($marcxml->getElementsByTagName('holdings')) {
       for my $volume ($node->getElementsByTagName('volume')) {
         for my $copy ($volume->getElementsByTagName('copy')) {
           push @copies, {
             f => $copy->getAttribute('id'),
           };

    f ends up with unAPI stuff in it instead of just the row id that I
    am looking for.  It looks like:

    ftag:open-ils.org:U2@acp/5826234

    The part that I want is after the /   I put in a hack to manipulate
    the unAPI string and strip out the / and everything in front of it
    but I don't want to leave it that way.  I would like to do this the
    correct way.

    I'm not sure if it really is supposed to behave this way or not.
    Assuming it is, I was thinking maybe a function exists that can
    extract the row id from the unAPI URI?  I wasn’t able to find one.

    Any ideas how to correctly get just the real row id from the
    database without the unAPI stuff?

    Thanks in advance!

--

John Merriam
Evergreen System Specialist
Bibliomation, Inc.
24 Wooster Ave.
Waterbury, CT 06708
203-577-4070 x108

Reply via email to