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”老师帮一下忙,帮忙指点一下这两个字段的出处。
==========