书目数据转换窗口,用于将dt1000的MARC格式书目数据,转换成dp2系统的XML格式数据,进入对应的书目库;同时,把MARC格式书目数据中的906和986字段中的册信息,拆分为若干实体XML记录存入dp2系统的实体库。

===
编程中感到比较不爽的是,dt1000书目数据986字段中,$t子字段为“应还书日期”,而缺乏“借阅日期”信息。而dt1000读者数据的986字段中,除了有“应还书日期”外(在$v子字段中),还有“借阅日期”(在$t子字段中)。这就意味着,在单独一轮升级书目数据的过程中,缺乏足够的信息来创建完整的dp2实体记录,而要等到读者数据也升级后,专门用一轮交叉处理来重写、增补dp2实体记录的某些信息。
从上面也可以看出,在设计dt1000书目数据和读者数据的时候,碰巧两个有关的字段的字段名都设计成了986,但是同样叫$t子字段,含义却不同,容易引起误会,这是一个遗憾。
===
保存书目记录:
MARC书目记录按照UNIMARC或USMARC格式转换为MARCXML格式。全部MARC字段都得到保留。自然,其中的dt1000扩充的906/986等字段,仅仅起到参考的作用,今后dp2软件不会再更新这些字段。保存记录到dp2系统的时候,是追加方式。这就要求批处理前,必须先清空dp2书目库。保存成功后,可以获得实际存入的dp2记录id号。
创建实体记录的步骤:
1) 将MARC数据中的906和986字段按照册条码或登录号合并。如果没有册条码的,按照登录号进行判重。如果某册信息发生重复,以986的信息为准。
2) 根据MARC数据中的信息,创建实体XML记录。
<parent> -- 父记录id: 根据先前追加存入dp2书目库中获得记录id。
<barcode> -- 册条码:从子字段组中$a获得。
<registerNo> -- 登录号:从子字段组中$h获得。这是本次新增的元素。
<state> -- 状态:暂空白。
<location> -- 馆藏地点:从子字段组中$b获得。
<price> -- 价格:从子字段组中$d获得。如果从$d中获得的价格内容为空,则从982$b中获得。
<bookType> -- 图书册类型:从子字段组中$f获得。如果$f中获得的图书册类型内容为空,则从982$a中获得。
<comment> -- 注释:从子字段组中$z获得。
<borrower> -- 借阅者:从子字段组中$r获得。
<borrowDate> -- 借阅日期:从子字段组中$t获得。长度要求为8字符。转换为RFC1123格式。本来,$t为应还日期,但是由于dt1000书目册信息中缺乏借阅日期,所以只好用此应还日期来充作“借阅日期”,并且把借阅期限设置为1天,相当于应还日期的第二天。
<borrowPeriod> -- 借阅期限:象征性设置为1天,即“1day”。
<mergeComment> -- 增补注释:关于从906字段增补过来的册信息这一情形的注释。属于临时性注释,并未纳入dp2系统的正式信息元素。