内务 书目查询 窗口 - DigitalPlatform/dp2 GitHub Wiki

书目查询窗是用于检索和浏览书目库记录的一种窗口。

如何定制书目查询窗浏览列

书目查询窗的浏览列是由各个书目库的 browse 配置文件定义的。不同的书目库可以配置不同的 browse 文件内容,这样,它们之间的浏览列数量和内容都可以不同。dp2 系统并不要求不同书目库的浏览列定义相同。

不过,如果不同的书目库之间,浏览列定义不同,比如列数量不同,当这些书目库记录在同一个浏览框种显示的时候,每一行(代表一个记录)的列数可能都不同。那浏览框是如何处理这种情况的呢?首先,它是允许这些不同列的行并存显示的;其次,当选定某行的时候,浏览框的标题列会显示所选定的这一行对应的栏标题。但鼠标点击栏标题进行排序的时候,可能会让不同类型的列(相同列号)一起进行排序,这样排序的结果就不一定能符合操作者的意愿了,这是一个小小的遗憾。

下面介绍 browse 配置文件的格式和配置方法。

这是一个典型的中文图书库的 browse 配置文件内容:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <nstable>
    <item prefix="marc" url="http://dp2003.com/UNIMARC" />
  </nstable>
  <col title="书名">
    <title>
      <caption lang='zh-CN'>书名</caption>
      <caption lang='en'>Title</caption>
    </title>
    <xpath nstable="">//marc:record/marc:datafield[@tag='200']/marc:subfield[@code='a']</xpath>
  </col>
  <col title="作者">
    <title>
      <caption lang='zh-CN'>作者</caption>
      <caption lang='en'>Author</caption>
    </title>
    <xpath nstable="">//marc:record/marc:datafield[@tag='200']/marc:subfield[@code='f']</xpath>
  </col>

  <col title="出版者">
    <title>
      <caption lang='zh-CN'>出版者</caption>
      <caption lang='en'>Publisher</caption>
    </title>
    <xpath nstable="">//marc:record/marc:datafield[@tag='210']/marc:subfield[@code='c']</xpath>
  </col>
  <col title="出版时间">
    <title>
      <caption lang='zh-CN'>出版时间</caption>
      <caption lang='en'>Publish time</caption>
    </title>
    <xpath nstable="">//marc:record/marc:datafield[@tag='210']/marc:subfield[@code='d']</xpath>
  </col>
  <col title="中图法分类号">
    <title>
      <caption lang='zh-CN'>中图法分类号</caption>
      <caption lang='en'>CLC classification</caption>
    </title>
    <xpath nstable="">//marc:record/marc:datafield[@tag='690']/marc:subfield[@code='a']</xpath>
  </col>
  <col title="主题词">
    <title>
      <caption lang='zh-CN'>主题词</caption>
      <caption lang='en'>Subject</caption>
    </title>
    <xpath nstable="">//marc:record/marc:datafield[@tag='606']/marc:subfield[@code='a']</xpath>
  </col>
  <col title="关键词">
    <title>
      <caption lang='zh-CN'>关键词</caption>
      <caption lang='en'>Keyword</caption>
    </title>
    <xpath nstable="">//marc:record/marc:datafield[@tag='610']/marc:subfield[@code='a']</xpath>
  </col>
  <col title="ISBN">
    <title>
      <caption lang='zh-CN'>ISBN</caption>
      <caption lang='en'>ISBN</caption>
    </title>
    <xpath nstable="">//marc:record/marc:datafield[@tag='010']/marc:subfield[@code='a']</xpath>
  </col>

</root>

假如要为上述配置文件增加一个价格列,可以在 XML 结构的根元素下增加一个 col 元素,如下:

  <col title="价格" type="price">
    <title>
      <caption lang='zh-CN'>价格</caption>
      <caption lang='en'>price</caption>
    </title>
    <xpath nstable="">//marc:record/marc:datafield[@tag='010']/marc:subfield[@code='d']</xpath>
  </col>

其中 col 元素的 type 属性指明了这个列的数据类型。"price" 表示这是一个价格类型的字符串。有了 type 属性定义,当操作者在浏览框“价格”列标题上点击,进行排序的时候,软件就能按照价格字符串的规则来正确排序。

⚠️ **GitHub.com Fallback** ⚠️