Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

输出新书通报功能使用指南 #1189

Open
DigitalPlatform opened this issue Jun 7, 2024 · 2 comments
Open

输出新书通报功能使用指南 #1189

DigitalPlatform opened this issue Jun 7, 2024 · 2 comments

Comments

@DigitalPlatform
Copy link
Owner

如题。

@DigitalPlatform
Copy link
Owner Author

DigitalPlatform commented Jun 7, 2024

书目栏目中脚本的使用方法

输出新书通报模块为书目栏目提供了 javascript 脚本定制的能力。

环境变量

书目栏目的 javascript 脚本,可以使用环境在调用前准备好的下列变量:
biblio 书目记录。类型为 MarcRecord。
syntax MARC 格式。类型为 string。值为 "unimarc" 和 "usmarc" 之一。
result 预先取出的当前栏目内容。类型为 string。
host 宿主对象。类型为 ScriptHost。

脚本中可以创建一个名为 message 的 string 类型的变量,脚本返回后,宿主通过它可以得知脚本意图传递的错误信息。

host.ParamTable 用法

这个是一个数据字典,用于定义一些全局参数。

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 值设置为空不会引发报错)

输出书目记录的题名

针对 UNIMARC 格式的书目记录

脚本如下:

result = biblio.select("field[@name='200']/subfield[@name='a']").FirstContent;

常见错误:

biblio.select("field[@name='200']/subfield[@name='a']").FirstContent;

这是忘了赋值给环境变量 result。产生的内容在脚本返回前一定要赋值给 result。

针对 UNIMARC 和 USMARC 两种格式的书目记录

脚本如下:

if (syntax == "unimarc")
    result = biblio.select("field[@name='200']/subfield[@name='a']").FirstContent;
else
    result = biblio.select("field[@name='245']/subfield[@name='a']").FirstContent;

改变 biblio_items 列的显示风格

脚本如下:

host.ParamTable["biblio_items_style"] = "max_lines:1";

效果是,册记录信息表格只显示出第一行内容,更多的行会显示为一行“(此后略去 n 册 ...)”

host.ParamTable["biblio_items_style"] = "free_text,ignore_title_line";

效果是,册记录信息表格为自由文本风格,并且忽略表格标题行。

@DigitalPlatform
Copy link
Owner Author

册栏目中的脚本使用方法

环境变量

书目栏目的 javascript 脚本,可以使用环境在调用前准备好的下列变量:
item 册记录。类型为 XDoc。
result 预先取出的当前栏目内容。类型为 string。
host 宿主对象。类型为 ScriptHost。

脚本中可以创建一个名为 message 的 string 类型的变量,脚本返回后,宿主通过它可以得知脚本意图传递的错误信息。

脚本举例:

对宿主已经准备好的内容进行修改

脚本如下:

        result = "(" + result + ")";

(栏目名请使用 "item_barcode")

从册记录中获取字段内容

脚本如下:

        result = item.Root.Elements("barcode").FirstInnerText; 

效果是,从册记录 XML 的 barcode 元素中获取正文信息。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant