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

点击:32328[回复顶层] [树状] [详细]
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 1 楼
文章id: 781
为册加入索取号和卷期信息方案

作者: xiaoma


这个方案用于书目统计窗,可以为书目信息下属的册信息加入索取号和卷期信息,索取号取的是905的d子字段和e子字段,卷期信息取的是905的y子字段和v子字段。



发表时间: 2013-02-01 14:50:19
最后修改时间: 2013-02-17 16:10:16
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 2 楼
文章id: 782

作者: xiaohuo




资源:

-- ID: 0 文件名: 为册记录添加索取号和卷期.projpack 尺寸: 11754 最后修改时间: 2013-02-01 15:12:19 --
为册记录添加索取号和卷期.projpack [下载] 警告:某些文件下载后,如打开(或执行),可能危害您的计算机安全,请谨慎行事。


发表时间: 2013-02-01 15:06:55
最后修改时间: 2013-02-01 15:12:23
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 3 楼
文章id: 783

作者: xiaohuo




发表时间: 2013-02-01 15:07:35
最后修改时间: 2013-02-01 15:07:58
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 4 楼
文章id: 785
回复:

作者: 精灵


==========

以下是引用 xiaohuo 于 2013/2/1 15:06:55 发表的文字:

==========

这个方案非常好,不过我感觉是否可以这样做,是否可以修改一下“library.xml”中的“public int GetBiblioPart(XmlDocument bibliodom,string strPartName,out string strResultValue)”函数,在这个函数中添加一个判断语句

if (bibliodom.DocumentElement.NamespaceURI == Ns.usmarcxml)

        {

            mngr.AddNamespace("usmarc", Ns.usmarcxml);    // "http://www.loc.gov/MARC21/slim"

            string strXPath = "";

            if (strPartName == "volume")

            {

                string v = "";

                string y = "";

                strXPath = "//usmarc:record/usmarc:datafield[@tag='905']/usmarc:subfield[@code='y']";

                node = bibliodom.SelectSingleNode(strXPath, mngr);

                if (node != null)

                    y = node.InnerText;

                strXPath = "//usmarc:record/usmarc:datafield[@tag='905']/usmarc:subfield[@code='v']";

                node = bibliodom.SelectSingleNode(strXPath, mngr);

                if (node != null)

                    v = node.InnerText;

                if (y != null)

                    strResultValue = y + "/";

                if (v != null)

                    strResultValue = strResultValue + v;

                else

                    strResultValue = strResultValue.Replace("/", "");

                return 1;

            }

            else if (strPartName == "price")

                strXPath = "//usmarc:record/usmarc:datafield[@tag='020']/usmarc:subfield[@code='c']";

                         ........................................................................................

                         ........................................................................................

                         ........................................................................................

                         ........................................................................................

                         ........................................................................................

        }

然后,在前端的“种册窗”中的“选项”里面,在卷期一项中填写入“@volume”。这样,采编部的同事,在做完书目数据后,直接扫描册条码就会自动填写上卷期信息。不用再统一添加卷期信息,可以加快图书加工效率。

但是,我还有一个小小的疑问,就是905字段中是否有X与Y这两个子字段。我查了一下MARC数据库方面的资料,没有发现里面记载着Y与X这两个子字段,也可能是我手中的资料太少。所以想请“xiaohuo”老师帮一下忙,帮忙指点一下这两个字段的出处。



发表时间: 2013-03-13 10:25:15
最后修改时间: 2013-03-13 14:29:54
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 5 楼
文章id: 795
回复: 回复:

作者: xietao


CNMARC 905 字段的 $y 是 year 的意思,索书号的年代部分;$v 是 volumn 的意思,索书号的卷期部分。这是我的记忆,不一定准确。

这两个子字段被一些单位用过。例如北图(期刊)。我有较深的印象。

回头我再查查具体的出处。

==========

以下是引用 精灵 于 2013/3/13 10:25:15 发表的文字:

==========

以下是引用 xiaohuo 于 2013/2/1 15:06:55 发表的文字:

==========

这个方案非常好,不过我感觉是否可以这样做,是否可以修改一下“library.xml”中的“public int GetBiblioPart(XmlDocument bibliodom,string strPartName,out string strResultValue)”函数,在这个函数中添加一个判断语句

if (bibliodom.DocumentElement.NamespaceURI == Ns.usmarcxml)

        {

            mngr.AddNamespace("usmarc", Ns.usmarcxml);    // "http://www.loc.gov/MARC21/slim"

            string strXPath = "";

            if (strPartName == "volume")

            {

                string v = "";

                string y = "";

                strXPath = "//usmarc:record/usmarc:datafield[@tag='905']/usmarc:subfield[@code='y']";

                node = bibliodom.SelectSingleNode(strXPath, mngr);

                if (node != null)

                    y = node.InnerText;

                strXPath = "//usmarc:record/usmarc:datafield[@tag='905']/usmarc:subfield[@code='v']";

                node = bibliodom.SelectSingleNode(strXPath, mngr);

                if (node != null)

                    v = node.InnerText;

                if (y != null)

                    strResultValue = y + "/";

                if (v != null)

                    strResultValue = strResultValue + v;

                else

                    strResultValue = strResultValue.Replace("/", "");

                return 1;

            }

            else if (strPartName == "price")

                strXPath = "//usmarc:record/usmarc:datafield[@tag='020']/usmarc:subfield[@code='c']";

                         ........................................................................................

                         ........................................................................................

                         ........................................................................................

                         ........................................................................................

                         ........................................................................................

        }

然后,在前端的“种册窗”中的“选项”里面,在卷期一项中填写入“@volume”。这样,采编部的同事,在做完书目数据后,直接扫描册条码就会自动填写上卷期信息。不用再统一添加卷期信息,可以加快图书加工效率。

但是,我还有一个小小的疑问,就是905字段中是否有X与Y这两个子字段。我查了一下MARC数据库方面的资料,没有发现里面记载着Y与X这两个子字段,也可能是我手中的资料太少。所以想请“xiaohuo”老师帮一下忙,帮忙指点一下这两个字段的出处。

==========



发表时间: 2013-03-26 12:47:05



[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 6 楼
文章id: 796

作者: xietao


看到有个网页:

http://library.gxccedu.com/wt3.html

最后一句话是这样的:

905 |a收藏馆代码|b登录号|d分类号|e书次/种次号|f复本数|v入藏卷期|y年代范围

但原始出处依然不清楚。



发表时间: 2013-03-26 12:55:13



[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章第 7 楼
文章id: 797
回复: 为册加入索取号和卷期信息方案

作者: xietao






以下是引用 xiaoma 于 2013/2/1 14:50:19 发表的文字:

这个方案用于书目统计窗,可以为书目信息下属的册信息加入索取号和卷期信息,索取号取的是905的d子字段和e子字段,卷期信息取的是905的y子字段和v子字段。


这个统计方案不知道用于什么场合?

CNMARC 格式的 905 字段就是一笔糊涂账,假如一种图书或者一种期刊里面有很多册,每一册的卷期都是不同的,年代都是不同的,905字段无法表达。905里面的$v$y是和$d$e配套的一组子字段,目的是描述索取号里面的第三行、第四行,但因为905字段没有提供重复如何操作的办法,即便是重复后也缺乏其他定位信息。(国外对于馆藏信息是采用单独的一个 MARC 记录描述一册来实现通讯交换的,例如 USMARC 就有专门的 holding 格式)

而在 dp2 系统中,书目记录下面有期记录和册记录,期记录里面有出版日期和年代卷期信息,册记录里面的索取号只是一个笼统的字段,用斜杠分隔表示索取号字符串,册记录里面也有卷期字段,和期记录里面的是冗余的。一个正常运作的系统,期记录和册记录里面本来就不缺这些信息,这些信息是从业务流程中自然创建产生的,一期一期,一册一册,非常清晰,没有歧义。如果用户感兴趣在 MARC 记录里面维持 905 字段,可以从期记录和册记录中抽取信息用于创建 905 字段,而不是倒过来从 905 字段到册记录中。

有一种很小的可能是用户单位从以前的系统转换到 dp2 系统的时候,需要从 905 的蛛丝马迹里面构造以前没有的期信息和册信息相关字段,但这个课题远非一个统计方案能单独解决的。请小马不妨说说这些背景情况。


发表时间: 2013-03-27 08:11:38
最后修改时间: 2013-03-27 08:14:21



页 1 / 1
 

在线用户
(无) 
当前栏目在线用户数 0, 总在线用户数 0