书目记录筛选
如题。
下面举例说明。 操作步骤:
- 在内务里面打开一个书目查询窗;
- 先检索命中一批要进行筛选的记录,进入书目查询窗的浏览列表;
- 在检索词中输入“中国”(表示选出内容中具有“中国”的那些记录),或者
xpath:field[@name='011']/subfield[@name='a'](注:这是一个 XPath 式子,表示从记录中选出那些具有 011$a 子字段的记录) - 在检索词右边的小工具条上,点开向下三角形的小菜单,使用里面的“筛选”命令。 然后软件会自动对选择范围的记录进行筛选。最后筛选命中的记录,会成为选择状态(蓝色底色),其他行变为未选择状态。有点类似一个人去复选了这些行的效果。后面只需要对这些记录进行进一步操作即可,比如导出到 MARC 文件等。
如果需要处理被筛选结果选中的记录以外的其他所有记录,用右鼠标键点出浏览列表的上下文菜单(注意不要用鼠标左键,一旦点一次左键会破坏刚才的筛选后选择状态),使用“反选”命令即可。
如果需要排除没有被选中的记录,可以用右鼠标键盘点出浏览列表的上下文菜单(注意不要用鼠标左键,一旦点一次左键会破坏刚才的筛选后选择状态),使用“装入其它检索窗/书目查询窗”命令,软件会把所有选中状态的浏览行装入一个新的书目查询窗。
观察实际使用的 XPath 式子
如果要观察筛选实际使用的 XPath 式子,可以在使用“筛选”菜单命令的时候按住 Ctrl 键,这样会弹出一个对话框显示 XPath 式子。
检索式格式
筛选所用的检索式基本格式为:
检索词 位置
其中检索词部分可以为下列形态:
中国
中国|外国
注:检索词部分,可以是一个或者多个检索词,如果是多个检索词,它们之间用 '|' 字符连接
其中位置部分可以为空或者下列形态
200
200$a
100$a$(1,8)
a
a$(1,8)
(1,8)
200$a|300$a
注: 位置部分,可以是最多三个层次的位置表示,如果是多个层次,它们之间用 '$' 字符连接。每一个层次表达,三个字符的表示字段名,一个字符的表示子字段名,带有圆括号的表示字符位置片段。字符位置片段由一个数字或者两个数字间隔逗号构成,第一个数字表示起始位置(从 1 开始计算),第二个数字表示片段包含的字符数;如果第二个数字空缺,表示直到字符串末尾。
完整的检索式举例如下:
中国
中国 200
中国 200$a
19920605 100$a$(1,8)
中国|外国 200$a|300$a
使用 XPath 筛选
检索式可为 xpath:xxx 形态。其中 xxx 代表一个 XPath 式子。XPath 原本是 W3C 用来搜索 XML DOM 的标准,这里被 dp2 用作筛选 MARC 记录的一种语法。dp2 用到了一种名为 MarcQuery 的 MARC 数据处理函数库,支持 XPath 式子。
下面列举一些常见的 XPath 用法:
xpath:field/subfield[contains(@content, '111')]
筛选出任意子字段内容包含 '111' 的书目记录
xpath:field[@name='200']/subfield[@name='a' and contains(@content, '111')]
筛选出字段名为 200,子字段名为 a 并且子字段内容包含 '111' 的那些书目记录
xpath:field[@name='100']/subfield[@name='a' and substring(@content, 1, 8)='19920115']
筛选出 100$a 子字段开头 8 字符为 '19920115' 的书目记录
xpath:field/subfield[contains(@content, '实验')] | field/subfield[contains(@content, '设计')]
筛选出任意子字段内容包含 '实验' 或者 '设计' 的那些书目记录