册价格宏变量是如何取值的 - 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取值。