dp2 icon indicating copy to clipboard operation
dp2 copied to clipboard

书目记录筛选

Open DigitalPlatform opened this issue 7 years ago • 2 comments

如题。

下面举例说明。 操作步骤:

  1. 在内务里面打开一个书目查询窗;
  2. 先检索命中一批要进行筛选的记录,进入书目查询窗的浏览列表;
  3. 在检索词中输入“中国”(表示选出内容中具有“中国”的那些记录),或者 xpath:field[@name='011']/subfield[@name='a'] (注:这是一个 XPath 式子,表示从记录中选出那些具有 011$a 子字段的记录)
  4. 在检索词右边的小工具条上,点开向下三角形的小菜单,使用里面的“筛选”命令。 然后软件会自动对选择范围的记录进行筛选。最后筛选命中的记录,会成为选择状态(蓝色底色),其他行变为未选择状态。有点类似一个人去复选了这些行的效果。后面只需要对这些记录进行进一步操作即可,比如导出到 MARC 文件等。

如果需要处理被筛选结果选中的记录以外的其他所有记录,用右鼠标键点出浏览列表的上下文菜单(注意不要用鼠标左键,一旦点一次左键会破坏刚才的筛选后选择状态),使用“反选”命令即可。

如果需要排除没有被选中的记录,可以用右鼠标键盘点出浏览列表的上下文菜单(注意不要用鼠标左键,一旦点一次左键会破坏刚才的筛选后选择状态),使用“装入其它检索窗/书目查询窗”命令,软件会把所有选中状态的浏览行装入一个新的书目查询窗。

观察实际使用的 XPath 式子

如果要观察筛选实际使用的 XPath 式子,可以在使用“筛选”菜单命令的时候按住 Ctrl 键,这样会弹出一个对话框显示 XPath 式子。

DigitalPlatform avatar Nov 16 '18 06:11 DigitalPlatform

检索式格式

筛选所用的检索式基本格式为: 检索词 位置

其中检索词部分可以为下列形态:

中国
中国|外国

注:检索词部分,可以是一个或者多个检索词,如果是多个检索词,它们之间用 '|' 字符连接

其中位置部分可以为空或者下列形态

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

DigitalPlatform avatar Sep 27 '22 03:09 DigitalPlatform

使用 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, '设计')]

筛选出任意子字段内容包含 '实验' 或者 '设计' 的那些书目记录

DigitalPlatform avatar Oct 26 '22 02:10 DigitalPlatform