SRW是一个基于XML 的用于Internet 的信息检索和获取协议,它利用现已得到广泛应用的技术如 SOAP、XPATH 来完成信息请求和响应。
SRW中定义了三个基本操作:SearchRetrieve、Scan和Explain;
1、SearchRetrieve
客户端发送searchRetrieveRequest参数到服务器,服务器完成检索后发送响应参数searchRetrieveResponse回客户端,服务器以XML格式记录响应内容。
其中searchRetrieveRequest包含以下参数:(*为必备项)
version:客户端能理解的SRW的最高版本*
query:符合CQL语法的检索表达式*
maximumRecords:客户端希望返回的最大记录数
startRecord:返回的第一条记录在匹配记录集中的位置
recordPacking:返回记录的格式 有 xml 和string 两种选择 如果 string 则表示要求服务
端对匹配记录进行转义处理
recordSchema:返回记录的XML Schema
resultSetTTL:客户端要求结果集在服务端保留的时间
sortKeys:返回记录的排序字段
stylesheet:客户端要求服务端插入到响应信息头部的XML 样式表地址
recordXPath:该参数允许返回记录中的满足指定XPath的部分内容
extracRequestData:与检索请求相关的附加信息
样例:
<searchRetrieveRequest> <version>1.1</version> <query>dc.title = "cad"</query> <maximumRecords>10</maximumRecords> <startRecord>1</startRecord> <recordSchema>dc</recordSchema> </searchRetrieveRequest>
2、searchRetrieveResponse
version:本响应遵循的SRW的版本
numberOfRecords:检索请求匹配到的记录总数
resultSetId:如果服务端支持resultSet 将在本项中返回resultSet的ID
resultSetIdleTime:如果服务端支持resultSet 将在本项中返回resultSet在服务端保持的时间
records:记录列表 每个记录都应该指定相关的XML Schema 并包括实际的记录内容
nextRecordPosition:返回的所有记录之后的下一条记录在匹配记录集中的位置
diagnostics:出错信息
extraResponseData:与本响应相关的附加信息
echoedSearchRetrieveRequest:与本响应相关的请求信息
样例:
<searchRetrieveResponse> <version>1.1</version> <numberOfRecords>10</numberOfRecords> <records> <record> <recordSchema>info:srw/schema/1/dc-v1.1</ recordSchema> <recordData> <dc:record> <dc:title>title</dc:title> <dc:creator> authors </dc:creator> </dc:record> </recordData> </record> </records> </searchRetrieveResponse>
目前采用基于该协议对万方数据库进行检索,在返回结果中已能获取总条目数(numberOfRecord)、版本(version)、下一页开始出(nextRecordPosition)但在对返回类型是stringOrXmlFragment的recordData进行解析时一直无法获取详细结果,期待有此开发经历的朋友前来留言,帮助,谢谢!