册价格宏变量是如何取值的 - DigitalPlatform/dp2 GitHub Wiki
在种册窗或者册登记窗图书登记时,在缺省值的册价格字段使用@price的宏变量,可以使生成册信息时自动在册记录中生成册价格。
宏变量@price是从书目信息的确定字段去提取值到册价格字段的。具体提取书目记录的哪个字段,是【功能】-【系统维护】-【系统管理窗】-【脚本程序】中定义的。
在library.xml获得书目局部数据脚本里面else if (bibliodom.DocumentElement.NamespaceURI == DpNs.unimarcxml)
下,price的strXPath中定义了取值的书目字段。比如:
if (strPartName == "price")
{
strXPath = "//unimarc:record/unimarc:datafield[@tag='010']/unimarc:subfield[@code='d'] | //unimarc:record/unimarc:datafield[@tag='011']/unimarc:subfield[@code='d']"; // 2021/6/26 增加 011$d
node = bibliodom.SelectSingleNode(strXPath, mngr);
if (node == null)
{
strXPath = "//unimarc:record/unimarc:datafield[@tag='091']/unimarc:subfield[@code='d']";
node = bibliodom.SelectSingleNode(strXPath, mngr);
if (node == null)
return 0;
}
strResultValue = node.InnerText;
return 1;
}
以上代码表示@price的宏变量从010$d和011$d取值。