欢迎您来到 数字平台。 您尚未登录。[登录] [注册新用户]
当前位置: 论坛首页 / 栏目 文档与手册 / 文章 46

点击:8345

[回复顶层(需要先登录)] [表状] [详细]
[回复(需要先登录)] [引用(需要先登录)]普通文章第 1 楼
文章id: 46
13位和10位ISBN的兼容方案


关键词: 13位ISBN 新ISBN


    中国标准书号是国际标准书号(International Standard Book Number,简称ISBN)系统的组成部分。作为国际出版业和图书贸易通用的标识编码系统,一个ISBN唯一标识一部在制作、销售和发行中的专题出版物。为与国际标准接轨,《中国标准书号》国家标准(GB/T 57952006)于200610月由国家标准化管理委员会批准颁布,200711日起在全国实施。届时,我国出版物使用的书号和条码将与世界同步由10位升至13位。

200711以后出版(包括再版、重印)的图书、音像制品和电子出版物,从征订目录到版本记录一律使用13位中国标准书号。

根据我国实际情况,库存出版物(包括在售出版物)上市流通不必更换为13位中国标准书号及条码,但出口的出版物须更换为13位中国标准书号和条码。

书目元数据中,ISBN发挥着资源标识的重要作用。图书馆及出版发行业用户迫切需要现有信息系统能兼容已有书目元数据中的10ISBN和因新版、再版、重印时采用的13ISBN

数字平台公司的信息系统,具有灵活的索引构造体系和二次开发接口,除了根据数据内容原样抽取索引外,还可以对数据内容进行再加工,以处理后的内容构造索引。以下是一个用户采购批查重的解决方案:

用户需求:通过ISBN、书名、责任者三个检索点,实现书商订单目录与馆藏书目的批处理查重。需要解决书商订单目录中再版、重印时采用的13ISBN与馆藏书目中旧13ISBN的查重匹配。

解决方案:书目元数据中,ISBN是照书实录,图书中标识的ISBN10位就录入10位,13位就录入13位。再加上数据加工成本考虑,也不可能采用录入时对ISBN进行转换加工。所以,采用对ISBN索引进行系统后台加工转换方式,在保证数据原貌的情况下,在索引中,统一将新ISBN转换成旧ISBN(反之亦然)。虽然系统可同时实现旧ISBN、新ISBN双索引,但从减少索引容量、提高检索效率角度考虑,系统对检索词也作同样的转换处理,因而仅选择统一的一种ISBN号转换方案即可实现检索词与索引的匹配,从而满足用户需求。

解决办法:通过系统提供的二次开发函数,在keys.xml配置文件中,采用C#对系统索引和检索词进行加工,代码如下:

<script><![CDATA[

using System;

using System.Xml;

using DigitalPlatform.rms;

using DigitalPlatform.IO;

 

public class MyKeysHost : KeysHost

{

  public void convertISBN()

  {

       string isbn = this.InputString;

       isbn = isbn.Replace("-", "");   //去除ISBN中的"-"连接符号

       isbn = isbn.Replace("—", ""); //为稳妥,去除ISBN中的全角"—"连接符号

 

            if (isbn.Length < 3)

            {

                this.ResultString = isbn; //如果ISBN不足3位,原样输出

                return;

            }

            string head = isbn.Substring(0, 3);       //获得新旧ISBN号的判断依据

 

            if (head == "978")

            {

                isbn = isbn.Substring(3, isbn.Length - 3);

 

                if (isbn.Length >= 10)

                {

                    isbn = isbn.Substring(0, 9);

                }

            }

           else

           {

                if (isbn.Length >= 10)

                {

                           isbn = isbn.Substring(0, 9);                       

                }

           }

   

       this.ResultString = isbn;

//     this.ResultStrings.Add(isbn);        //如果同时构造出多索引,采用添加函数

 

  }

}

]]>

 

……

SQL表配置结构中,对索引和检索词同时调用convertISBN函数实现字符串加工:

    <table name="ISBN" id="0" type="isbn">

        <convert>

            <string style="#convertISBN" />

        </convert>

        <convertquery>

            <string style="#convertISBN" />

        </convertquery>

        <caption lang="zh-cn">ISBN</caption>

        <caption lang="en">ISBN</caption>

    </table>

方案效果:用户采用新旧规则的ISBN,都可以查询到以新规则实录的ISBN或旧规则实录的ISBN,完全满足用户需求。



发表时间: 2007-01-27 23:03:14
  • 普通文章 13位和10位ISBN的兼容方案 孤舟蓑笠翁 2007-01-27 23:03:14[点击:8345]
  •  

    在线用户
    访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客 (我自己)   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客
    当前栏目在线用户数 26, 总在线用户数 198