Open DigitalPlatform opened 5 months ago
输出新书通报模块为书目栏目提供了 javascript 脚本定制的能力。
书目栏目的 javascript 脚本,可以使用环境在调用前准备好的下列变量: biblio 书目记录。类型为 MarcRecord。 syntax MARC 格式。类型为 string。值为 "unimarc" 和 "usmarc" 之一。 result 预先取出的当前栏目内容。类型为 string。 host 宿主对象。类型为 ScriptHost。
脚本中可以创建一个名为 message 的 string 类型的变量,脚本返回后,宿主通过它可以得知脚本意图传递的错误信息。
这个是一个数据字典,用于定义一些全局参数。
host.ParamTable 中,key "biblio_item_style" 对应的 value 值用于定义输出的册记录信息表格的风格。可以使用如下风格子参数: max_lines:n 最多内容行数。n 代表一个整数。缺省为 -1,表示不限制。 free_text 自由文本风格。如果未包含此风格,表示为普通表格风格。 ignore_title_line 忽略表格标题行。如果未包含此风格,表示不忽略表格标题行。
下面给出一些具体的使用场景脚本。
脚本如下:
result = result + "_后方添加文字";
(建议:在一个现有的列,比如 biblio_title 列上添加上述脚本,效果就是在当前书目记录的题名文字后面增加一截文字)
脚本如下:
result = "固定文字";
(注: 当前列由宿主准备好的 result 中的原有内容被改变)
脚本如下:
message = "这是错误信息";
(注: 将 message 值设置为空不会引发报错)
脚本如下:
result = biblio.select("field[@name='200']/subfield[@name='a']").FirstContent;
常见错误:
biblio.select("field[@name='200']/subfield[@name='a']").FirstContent;
这是忘了赋值给环境变量 result。产生的内容在脚本返回前一定要赋值给 result。
脚本如下:
if (syntax == "unimarc")
result = biblio.select("field[@name='200']/subfield[@name='a']").FirstContent;
else
result = biblio.select("field[@name='245']/subfield[@name='a']").FirstContent;
脚本如下:
host.ParamTable["biblio_items_style"] = "max_lines:1";
效果是,册记录信息表格只显示出第一行内容,更多的行会显示为一行“(此后略去 n 册 ...)”
host.ParamTable["biblio_items_style"] = "free_text,ignore_title_line";
效果是,册记录信息表格为自由文本风格,并且忽略表格标题行。
书目栏目的 javascript 脚本,可以使用环境在调用前准备好的下列变量: item 册记录。类型为 XDoc。 result 预先取出的当前栏目内容。类型为 string。 host 宿主对象。类型为 ScriptHost。
脚本中可以创建一个名为 message 的 string 类型的变量,脚本返回后,宿主通过它可以得知脚本意图传递的错误信息。
脚本举例:
脚本如下:
result = "(" + result + ")";
(栏目名请使用 "item_barcode")
脚本如下:
result = item.Root.Elements("barcode").FirstInnerText;
效果是,从册记录 XML 的 barcode 元素中获取正文信息。
如题。