1515 lines
50 KiB
JavaScript
1515 lines
50 KiB
JavaScript
{
|
||
"translatorID": "26ce1cb2-07ec-4d0e-9975-ce2ab35c8343",
|
||
"label": "Russian State Library",
|
||
"creator": "PChemGuy",
|
||
"target": "^https?://(search|favorites|aleph)\\.rsl\\.ru/",
|
||
"minVersion": "3.0",
|
||
"maxVersion": "",
|
||
"priority": 100,
|
||
"inRepository": true,
|
||
"translatorType": 4,
|
||
"browserSupport": "gcsibv",
|
||
"lastUpdated": "2021-06-14 20:16:14"
|
||
}
|
||
|
||
/*
|
||
***** BEGIN LICENSE BLOCK *****
|
||
|
||
Copyright © 2020-2021 PChemGuy
|
||
|
||
This file is part of Zotero.
|
||
|
||
Zotero is free software: you can redistribute it and/or modify
|
||
it under the terms of the GNU Affero General Public License as published by
|
||
the Free Software Foundation, either version 3 of the License, or
|
||
(at your option) any later version.
|
||
|
||
Zotero is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
GNU Affero General Public License for more details.
|
||
|
||
You should have received a copy of the GNU Affero General Public License
|
||
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
|
||
|
||
***** END LICENSE BLOCK *****
|
||
*/
|
||
|
||
/*
|
||
Testing/troubleshooting issues in Scaffold (valid as of April 2020):
|
||
Care must be taken when loading an additional translator as a preprocessor.
|
||
setTranslator:
|
||
- does not throw any errors when invalid translator id is supplied;
|
||
- does not provide any human readable feedback with translator name, so
|
||
even if a valid translator id for a wrong translator is supplied,
|
||
no immediate feedback is supplied.
|
||
In both cases "Translation successful" status is likely to be returned.
|
||
Working environment: Windows 7 x64
|
||
*/
|
||
|
||
/*
|
||
RSL has two primary catalog interfaces:
|
||
https://search.rsl.ru (sRSL)
|
||
http://aleph.rsl.ru (aRSL)
|
||
search.rsl.ru records can be accessed via search.rsl.ru/(ru|en)/record/<RID>
|
||
aleph.rsl.ru is a total mess, a very basic partial support for single record
|
||
saving is implemented.
|
||
|
||
search.rsl.ru/(ru|en)/download/marc21?id=<RID> interface provides access to
|
||
binary MARC21 records, but requires prior authentication, so they are not used.
|
||
|
||
Translator's logic for both catalogs involves parsing the web page into MARCXML,
|
||
loading MARCXML translator for initial processing, followed by postprocessing as
|
||
necessary.
|
||
|
||
Postprocessing for search.rsl.ru aslo involves parsing of the human readable
|
||
descriptioto harvest additional metadata.
|
||
|
||
TODO:
|
||
search.rsl.ru - some records contain expandable "Consists of" or "Periodicals"
|
||
reference with an arrow, when displayed as part of a search result, and "Contents"
|
||
tab on the record page, referring to related/constituent records. Such references
|
||
may potentially be processed via the "multiple" routine, but such processing
|
||
is not implemented.
|
||
*/
|
||
|
||
/*
|
||
Item type is adjusted based on the catalog information. Present implementation
|
||
assumes that each record belongs to a single catalog (it is not clear whether
|
||
this is correct or not.)
|
||
|
||
Russian style thesis abstracts are more like manuscripts, but they are assigned
|
||
the "thesis" type, with additional type note added to the "Extra" field.
|
||
|
||
At present, technical standards are commonly mapped to Zotero "report" due to
|
||
lack of a dedicated type. Such a type is expected to be implemented in the near
|
||
future, but for the time being a type note is added to the "Extra" field.
|
||
|
||
The following catalogs are supported. For items beloning to other catalogs no
|
||
type adjustment is made.
|
||
*/
|
||
const catalog2type = {
|
||
"Книги (изданные с 1831 г. по настоящее время)": "book",
|
||
"Старопечатные книги (изданные с 1450 по 1830 г.)": "book",
|
||
"Сериальные издания (кроме газет)": "journal",
|
||
"Авторефераты диссертаций": "thesisAutoreferat",
|
||
Диссертации: "thesis",
|
||
Стандарты: "standard"
|
||
};
|
||
|
||
/*
|
||
Filter strings used for extraction of metadata from
|
||
https://search.rsl.ru/(ru|en)/record/<RSLID>
|
||
https://search.rsl.ru/(ru|en)/search#
|
||
https://favorites.rsl.ru/(ru|en)/
|
||
*/
|
||
const sRSLFilters = {
|
||
libraryCatalog: "Российская Государственная Библиотека",
|
||
marcTableCSS: "div#marc-rec > table",
|
||
descTableCSS: "table.card-descr-table",
|
||
searchListCSS: "span.js-item-maininfo",
|
||
searchRecordRslidAttr: "data-id",
|
||
searchRecordTitle: /^[^:/[]*/,
|
||
searchPattern: "https://search.rsl.ru/ru/search#q=id:{@id@} AND title:({@title@})",
|
||
rslidPrefix: "https://search.rsl.ru/ru/record/",
|
||
thesisRelAttr: "href",
|
||
thesisRelPrefix: "/ru/transition/",
|
||
thesisRelCSS: 'a[href^="/ru/transition/"]',
|
||
favRslidCSS: "a.rsl-link",
|
||
favDescCSS: "div.rsl-fav-item-descr",
|
||
title: "Заглавие",
|
||
catalog: "Каталоги",
|
||
bbk: "BBK-код",
|
||
callNumber: "Места хранения",
|
||
eResource: "Электронный адрес"
|
||
};
|
||
|
||
/*
|
||
Filter strings for extraction of metadata from
|
||
aleph.rsl.ru
|
||
*/
|
||
const aRSLFilters = {
|
||
marcTableTagCSS: "td.td1[nowrap]",
|
||
marcTableValCSS: "td.td1:not([nowrap])",
|
||
marcTableSetCSS: 'a[title="Добавить в подборку"]',
|
||
recordMarcSignature: "&format=001",
|
||
recordStandardSignature: "&format=999",
|
||
recordFormatRegex: /&format=[0-9]{3}/,
|
||
urlPrefix: "http://aleph.rsl.ru/F/",
|
||
};
|
||
|
||
|
||
const baseEurl = 'https://dlib.rsl.ru/';
|
||
|
||
|
||
/**
|
||
* Adds link attachment to a Zotero item.
|
||
*
|
||
* @param {Object} item - Zotero item
|
||
* @param {String} title - Link name
|
||
* @param {String} url - Link url
|
||
*
|
||
* @return {None}
|
||
*/
|
||
function addLink(item, title, url) {
|
||
item.attachments.push({
|
||
title: title,
|
||
snapshot: false,
|
||
contentType: "text/html",
|
||
url: url
|
||
});
|
||
}
|
||
|
||
|
||
/*
|
||
Scaffold issue (valid as of April 2020):
|
||
When detectWeb is run via
|
||
- "Ctrl/Cmd-T", "doc" receives "object HTMLDocument";
|
||
- "Run test", "doc" receives JS object (not sure about details).
|
||
Both objects have doc.location.host defined.
|
||
|
||
When tester runs a web translator on a search results page, it fails to
|
||
present the search result selection dialog and throws an error:
|
||
"Error: Translator called select items with no items"
|
||
|
||
When tester is called on "https://search.rsl.ru/ru/search#q=math", the part
|
||
starting with the hashtag is lost and not passed to the processing function
|
||
(not available from either "url" or "doc").
|
||
|
||
Working environment: Windows 7 x64
|
||
*/
|
||
function detectWeb(doc, url) {
|
||
let domain = url.match(/^https?:\/\/([^/]*)/)[1];
|
||
let subdomain = domain.slice(0, -'.rsl.ru'.length);
|
||
let pathname = doc.location.pathname;
|
||
|
||
// Z.debug(subdomain);
|
||
switch (subdomain) {
|
||
case 'search':
|
||
if (pathname.includes('/search')) {
|
||
return 'multiple';
|
||
}
|
||
else if (pathname.includes('/record/')) {
|
||
let metadata = getRecordDescriptionsRSL(doc, url);
|
||
let itemType = metadata.itemType;
|
||
if (itemType == 'thesis') {
|
||
if (metadata.relatedURL['Autoreferat RSL record']
|
||
|| metadata.relatedURL['Thesis RSL record']) {
|
||
return 'multiple';
|
||
}
|
||
}
|
||
// Z.debug(metadata);
|
||
return itemType ? itemType : 'book';
|
||
}
|
||
else {
|
||
Z.debug('Catalog section not supported');
|
||
return false;
|
||
}
|
||
case 'favorites':
|
||
return 'multiple';
|
||
case 'aleph':
|
||
|
||
/*
|
||
There are other single record patterns, but the full repertoire
|
||
is unclear. Only this pattern is supported
|
||
*/
|
||
if (url.includes('func=full-set-set')) {
|
||
return 'book';
|
||
|
||
/*
|
||
There are other single record patterns, but the full repertoire
|
||
is unclear. Due to awful implementation, "multiple" is not supported.
|
||
*/
|
||
}
|
||
else if (url.match(/func=(find-[abcm]|basket-short|(history|short)-action)/)) {
|
||
Z.debug('Due to awful implementation, "multiple" is not supported.');
|
||
// return 'multiple';
|
||
return false;
|
||
}
|
||
else {
|
||
Z.debug('Catalog section not supported');
|
||
return false;
|
||
}
|
||
default:
|
||
Z.debug('Subdomain not supported: ' + subdomain);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
|
||
/*
|
||
Scaffold issue (date detected: April 2020):
|
||
When detectWeb is run via
|
||
"Ctrl/Cmd-T", "doc" receives "HTMLDocument object";
|
||
"Run test", "doc" receives JS object (not sure about details).
|
||
Working environment: Windows 7 x64
|
||
*/
|
||
function doWeb(doc, url) {
|
||
// Zotero.debug(doc);
|
||
// Z.debug(doc.toString());
|
||
let domain = url.match(/^https?:\/\/([^/]*)/)[1];
|
||
let subdomain = domain.slice(0, -'.rsl.ru'.length);
|
||
if (detectWeb(doc, url) != 'multiple') {
|
||
switch (subdomain) {
|
||
case 'search':
|
||
scrape(doc, url);
|
||
break;
|
||
case 'aleph':
|
||
if (url.includes(aRSLFilters.recordMarcSignature)) {
|
||
scrape(doc, url);
|
||
}
|
||
else {
|
||
let href = aRSLFilters.urlPrefix + '?'
|
||
+ url.split('?')[1].replace(aRSLFilters.recordFormatRegex,
|
||
aRSLFilters.recordMarcSignature);
|
||
ZU.processDocuments([href], scrape);
|
||
}
|
||
break;
|
||
default:
|
||
Z.debug('Subdomain not supported');
|
||
}
|
||
}
|
||
else {
|
||
let pathname = doc.location.pathname;
|
||
var records;
|
||
if (pathname.includes('/record/')) {
|
||
let metadata = getRecordDescriptionsRSL(doc, url);
|
||
let itemType = metadata.itemType;
|
||
records = {};
|
||
if (itemType == 'thesis' && metadata.relatedURL['Autoreferat RSL record']) {
|
||
records[url] = 'Thesis';
|
||
records[metadata.relatedURL['Autoreferat RSL record']] = 'Autoreferat';
|
||
}
|
||
else if (itemType == 'thesis' && metadata.relatedURL['Thesis RSL record']) {
|
||
records[metadata.relatedURL['Thesis RSL record']] = 'Thesis';
|
||
records[url] = 'Autoreferat';
|
||
}
|
||
else {
|
||
Z.debug('Unsupported case of related records');
|
||
}
|
||
}
|
||
else {
|
||
records = getSearchResults(doc, url);
|
||
}
|
||
|
||
Zotero.selectItems(records,
|
||
function (records) {
|
||
if (records) ZU.processDocuments(Object.keys(records), scrape);
|
||
}
|
||
);
|
||
}
|
||
}
|
||
|
||
|
||
function scrape(doc, url) {
|
||
// Convert HTML table of MARC record to MARCXML
|
||
let recordMarcxml;
|
||
let scrapeCallback;
|
||
let domain = url.match(/^https?:\/\/([^/]*)/)[1];
|
||
let subdomain = domain.slice(0, -'.rsl.ru'.length);
|
||
switch (subdomain) {
|
||
case 'search':
|
||
recordMarcxml = getMarcxmlsRSL(doc);
|
||
scrapeCallback = scrapeCallbacksRSL;
|
||
break;
|
||
case 'aleph':
|
||
recordMarcxml = getMarcxmlaRSL(doc);
|
||
scrapeCallback = scrapeCallbackaRSL;
|
||
break;
|
||
default:
|
||
Z.debug('Subdomain not supported');
|
||
return;
|
||
}
|
||
// Z.debug('\n' + recordMarcxml);
|
||
|
||
// call MARCXML translator
|
||
const MarcxmlTid = 'edd87d07-9194-42f8-b2ad-997c4c7deefd';
|
||
let trans = Zotero.loadTranslator('import');
|
||
trans.setTranslator(MarcxmlTid);
|
||
trans.setString(recordMarcxml);
|
||
trans.setHandler('itemDone', scrapeCallback(doc, url));
|
||
trans.translate();
|
||
}
|
||
|
||
|
||
/*
|
||
Additional processing after the MARCXML translator for search.rsl.ru
|
||
Adjust item type based on catalog information for supported catalogs. For
|
||
types not available in Zotero, "type" annotation is added to the "extra"
|
||
field. Add the following information:
|
||
RSL record ID,
|
||
call numbers (semicolon separated),
|
||
catalog/item type,
|
||
BBK codes (semicolon separated),
|
||
electronic url, if available.
|
||
*/
|
||
function scrapeCallbacksRSL(doc, url) {
|
||
function callback(obj, item) {
|
||
// Zotero.debug(item);
|
||
let metadata = getRecordDescriptionsRSL(doc, url);
|
||
// Z.debug(metadata);
|
||
if (metadata.itemType) {
|
||
item.itemType = metadata.itemType;
|
||
}
|
||
item.url = metadata.url;
|
||
item.libraryCatalog = sRSLFilters.libraryCatalog;
|
||
item.callNumber = metadata[sRSLFilters.callNumber];
|
||
item.archive = metadata[sRSLFilters.catalog];
|
||
let extra = [];
|
||
extra.push('RSLID: ' + metadata.rslid);
|
||
if (metadata.extraType) {
|
||
extra.push('Type: ' + metadata.extraType);
|
||
}
|
||
if (metadata[sRSLFilters.bbk]) {
|
||
extra.push('BBK: ' + metadata[sRSLFilters.bbk]);
|
||
}
|
||
if (item.extra) {
|
||
extra.push(item.extra);
|
||
}
|
||
item.extra = extra.join('\n');
|
||
|
||
// Z.debug(item.attachments[0]);
|
||
let rURLs = metadata.relatedURL;
|
||
Object.keys(rURLs).forEach(key => addLink(item, key, rURLs[key]));
|
||
|
||
// Z.debug(item);
|
||
item.complete();
|
||
}
|
||
return callback;
|
||
}
|
||
|
||
|
||
/*
|
||
Additional processing after the MARCXML translator for aleph.rsl.ru
|
||
*/
|
||
function scrapeCallbackaRSL(doc, url) {
|
||
function callback(obj, item) {
|
||
// RSLID
|
||
let add2set = attr(doc, aRSLFilters.marcTableSetCSS, 'href');
|
||
let RSLID = add2set.match(/&doc_library=RSL([0-9]{2})/)[1]
|
||
+ add2set.match(/&doc_number=([0-9]{9})/)[1];
|
||
let extra = ['RSLID: ' + RSLID];
|
||
if (item.extra) {
|
||
extra.push(item.extra);
|
||
}
|
||
item.extra = extra.join('\n');
|
||
|
||
item.url = aRSLFilters.urlPrefix + '?'
|
||
+ url.split('?')[1].replace(aRSLFilters.recordFormatRegex,
|
||
aRSLFilters.recordStandardSignature);
|
||
|
||
let metadata = {};
|
||
metadata.relatedURL = {};
|
||
let href = sRSLFilters.rslidPrefix + RSLID;
|
||
metadata.relatedURL['search.rsl.ru'] = href;
|
||
|
||
let rURLs = metadata.relatedURL;
|
||
Object.keys(rURLs).forEach(key => addLink(item, key, rURLs[key]));
|
||
|
||
// Z.debug(item);
|
||
item.complete();
|
||
}
|
||
return callback;
|
||
}
|
||
|
||
|
||
function getSearchResults(doc, url) {
|
||
let domain = url.match(/^https?:\/\/([^/]*)/)[1];
|
||
let subdomain = domain.slice(0, -'.rsl.ru'.length);
|
||
let records = {};
|
||
|
||
if (subdomain == 'search') {
|
||
let rows = doc.querySelectorAll(sRSLFilters.searchListCSS);
|
||
|
||
// ZU.processDocuments(url, function (doc, url) { Z.debug(doc); });
|
||
// ZU.doGet(url, function (responseText, response, url) { Z.debug(response); });
|
||
|
||
for (let row of rows) {
|
||
let href = sRSLFilters.rslidPrefix
|
||
+ row.getAttribute(sRSLFilters.searchRecordRslidAttr);
|
||
records[href] = row.innerText.match(sRSLFilters.searchRecordTitle)[0];
|
||
}
|
||
}
|
||
else if (subdomain == 'favorites') {
|
||
let rows = doc.querySelectorAll(sRSLFilters.favRslidCSS);
|
||
for (let row of rows) {
|
||
let href = row.href;
|
||
records[href] = row.parentNode.parentNode.querySelector(sRSLFilters.favDescCSS).innerText.match(sRSLFilters.searchRecordTitle)[0];
|
||
}
|
||
}
|
||
|
||
return records;
|
||
}
|
||
|
||
|
||
/**
|
||
* Parses record table with MARC data https://search.rsl.ru/(ru|en)/record/<RSLID>.
|
||
* Returned MARCXML string can be processed using the MARCXML import translator.
|
||
*
|
||
* @return {String} - MARCXML record
|
||
*/
|
||
function getMarcxmlsRSL(doc) {
|
||
let irow = 0;
|
||
|
||
let marc21TableRows = doc.querySelector(sRSLFilters.marcTableCSS).rows;
|
||
let marcxmlLines = [];
|
||
|
||
marcxmlLines.push(
|
||
'<?xml version="1.0" encoding="UTF-8"?>',
|
||
'<record xmlns="http://www.loc.gov/MARC21/slim" type="Bibliographic">',
|
||
' <leader>' + marc21TableRows[0].cells[1].innerText.replace(/#/g, ' ') + '</leader>'
|
||
);
|
||
irow++;
|
||
|
||
// Control fields
|
||
for (irow; irow < marc21TableRows.length; irow++) {
|
||
let curCells = marc21TableRows[irow].cells;
|
||
let fieldTag = curCells[0].innerText;
|
||
let fieldVal = curCells[1].innerText;
|
||
if (Number(fieldTag) > 8) {
|
||
break;
|
||
}
|
||
marcxmlLines.push(
|
||
' <controlfield tag="' + fieldTag + '">' + fieldVal.replace(/#/g, ' ') + '</controlfield>'
|
||
);
|
||
}
|
||
|
||
// Data fields
|
||
for (irow; irow < marc21TableRows.length; irow++) {
|
||
let curCells = marc21TableRows[irow].cells;
|
||
let fieldTag = curCells[0].innerText;
|
||
|
||
/*
|
||
Subfield separator is '$'. Subfield separator always comes right after a tag,
|
||
so triple all '$' that follow immediately after '>' before stripping HTML tags
|
||
to prevent collisions with potential occurences of '$' as part of subfield contets.
|
||
*/
|
||
curCells[1].innerHTML = curCells[1].innerHTML.replace(/>\$/g, '>$$$$$$');
|
||
let fieldVal = curCells[1].innerText;
|
||
let subfields = fieldVal.split('$$$');
|
||
curCells[1].innerHTML = curCells[1].innerHTML.replace(/\$\$\$/g, '$$');
|
||
let inds = subfields[0].replace(/#/g, ' ');
|
||
|
||
// Data field tag and indicators
|
||
marcxmlLines.push(
|
||
' <datafield tag="' + fieldTag + '" ind1="' + inds[0] + '" ind2="' + inds[1] + '">'
|
||
);
|
||
|
||
// Subfields
|
||
for (let isubfield = 1; isubfield < subfields.length; isubfield++) {
|
||
// Split on first <space> character to extract the subfield code and its contents
|
||
let subfield = subfields[isubfield].replace(/\s/, '\x01').split('\x01');
|
||
marcxmlLines.push(
|
||
' <subfield code="' + subfield[0] + '">' + subfield[1] + '</subfield>'
|
||
);
|
||
}
|
||
|
||
marcxmlLines.push(
|
||
' </datafield>'
|
||
);
|
||
}
|
||
|
||
marcxmlLines.push(
|
||
'</record>'
|
||
);
|
||
|
||
return marcxmlLines.join('\n');
|
||
}
|
||
|
||
|
||
/**
|
||
* Parses record table with human readable bibliographic description on
|
||
* https://search.rsl.ru/(ru|en)/record/<RSLID> and constructs metadata object.
|
||
* Returned metadata object can be used for additional processing of the output
|
||
* produced by the MARCXML import translator.
|
||
*
|
||
* @return {Object} - extracted metadata.
|
||
*/
|
||
function getRecordDescriptionsRSL(doc, url) {
|
||
let irow;
|
||
let metadata = {};
|
||
let propertyName = '';
|
||
let propertyValue = '';
|
||
let descTableRows = doc.querySelector(sRSLFilters.descTableCSS).rows;
|
||
|
||
// Parse description table
|
||
for (irow = 0; irow < descTableRows.length; irow++) {
|
||
let curCells = descTableRows[irow].cells;
|
||
let buffer = curCells[0].innerText;
|
||
if (buffer) {
|
||
metadata[propertyName] = propertyValue;
|
||
propertyName = buffer;
|
||
propertyValue = curCells[1].innerText;
|
||
}
|
||
else {
|
||
propertyValue = propertyValue + '; ' + curCells[1].innerText;
|
||
}
|
||
}
|
||
metadata[propertyName] = propertyValue;
|
||
delete metadata[''];
|
||
|
||
// Record type
|
||
let type = catalog2type[metadata[sRSLFilters.catalog]];
|
||
if (type) {
|
||
metadata.type = type;
|
||
metadata.itemType = type;
|
||
}
|
||
|
||
// Record ID
|
||
metadata.rslid = url.slice(sRSLFilters.rslidPrefix.length);
|
||
|
||
// URL
|
||
metadata.url = url;
|
||
|
||
// Array of link attachments: {title: title, url: url}
|
||
metadata.relatedURL = {};
|
||
|
||
/*
|
||
Some metadata is only included with the record when displayed as part
|
||
of search result. Here a search query is constructed combining (AND)
|
||
record title and system record id, which is RSL ID without the two
|
||
most significant digits.
|
||
*/
|
||
let href = sRSLFilters.searchPattern
|
||
.replace(/\{@title@\}/, metadata[sRSLFilters.title])
|
||
.replace(/\{@id@\}/, metadata.rslid.slice(2));
|
||
metadata.relatedURL['via search'] = href;
|
||
|
||
// E-resource
|
||
if (metadata[sRSLFilters.eResource]) {
|
||
let eurl = baseEurl + metadata.rslid;
|
||
metadata.relatedURL['E-resource'] = eurl;
|
||
}
|
||
|
||
// Workaround until implementation of a "technical standard" type
|
||
if (type == 'standard') {
|
||
metadata.itemType = 'report';
|
||
metadata.extraType = type;
|
||
}
|
||
|
||
if (type == 'journal') {
|
||
metadata.itemType = 'book';
|
||
metadata.extraType = type;
|
||
}
|
||
|
||
// Complementary thesis/autoreferat record if availabless
|
||
if (type == 'thesis') {
|
||
let aurl = attr(doc, sRSLFilters.thesisRelCSS, sRSLFilters.thesisRelAttr);
|
||
if (aurl) {
|
||
aurl = sRSLFilters.rslidPrefix
|
||
+ aurl.slice(sRSLFilters.thesisRelPrefix.length
|
||
+ metadata.rslid.length + '/'.length);
|
||
metadata.relatedURL['Autoreferat RSL record'] = aurl;
|
||
}
|
||
}
|
||
if (type == 'thesisAutoreferat') {
|
||
// From citation point of view, the "manuscript" type might be more suitable
|
||
// On the other hand, the thesis should be cited rather then this paper anyway.
|
||
metadata.itemType = 'thesis';
|
||
let turl = attr(doc, sRSLFilters.thesisRelCSS, sRSLFilters.thesisRelAttr);
|
||
if (turl) {
|
||
turl = sRSLFilters.rslidPrefix
|
||
+ turl.slice(sRSLFilters.thesisRelPrefix.length
|
||
+ metadata.rslid.length + '/'.length);
|
||
metadata.relatedURL['Thesis RSL record'] = turl;
|
||
}
|
||
metadata.extraType = type;
|
||
}
|
||
|
||
return metadata;
|
||
}
|
||
|
||
|
||
/**
|
||
* Parses record table with MARC data from aleph.rsl.ru.
|
||
* Returned MARCXML string can be processed using the MARCXML import translator.
|
||
*
|
||
* @return {String} - MARCXML record
|
||
*/
|
||
function getMarcxmlaRSL(doc) {
|
||
// -------------- Parse MARC table into a MARC array object -------------- //
|
||
let marcTags = doc.querySelectorAll(aRSLFilters.marcTableTagCSS);
|
||
let marcVals = doc.querySelectorAll(aRSLFilters.marcTableValCSS);
|
||
let marc = [];
|
||
|
||
if (marcTags.length < 1) {
|
||
return '';
|
||
}
|
||
|
||
// Leader
|
||
marc.push([marcTags[1].innerText.padEnd(5, ' '), marcVals[1].innerText]);
|
||
|
||
for (let fieldCount = 2; fieldCount < marcTags.length; fieldCount++) {
|
||
let tag = marcTags[fieldCount].innerText;
|
||
if (Number(tag)) {
|
||
tag = tag.padEnd(5, ' ');
|
||
marc.push([tag, marcVals[fieldCount].innerText]);
|
||
}
|
||
}
|
||
|
||
if (marc.length < 5) {
|
||
return '';
|
||
}
|
||
|
||
// ---------- Format MARCXML from the prepared MARC array object --------- //
|
||
let irow = 0;
|
||
let marcxmlLines = [];
|
||
|
||
marcxmlLines.push(
|
||
'<?xml version="1.0" encoding="UTF-8"?>',
|
||
'<record xmlns="http://www.loc.gov/MARC21/slim" type="Bibliographic">',
|
||
' <leader>' + marc[1][1] + '</leader>'
|
||
);
|
||
irow++;
|
||
|
||
// Control fields
|
||
for (irow; irow < marc.length; irow++) {
|
||
let fieldTag = marc[irow][0].slice(0, 3);
|
||
let fieldVal = marc[irow][1];
|
||
if (Number(fieldTag) > 8) {
|
||
break;
|
||
}
|
||
marcxmlLines.push(
|
||
' <controlfield tag="' + fieldTag + '">' + fieldVal + '</controlfield>'
|
||
);
|
||
}
|
||
|
||
// Data fields
|
||
for (irow; irow < marc.length; irow++) {
|
||
let fieldTag = marc[irow][0].slice(0, 3);
|
||
let fieldInd = marc[irow][0].slice(3);
|
||
let fieldVal = marc[irow][1];
|
||
|
||
// Data field tag and indicators
|
||
marcxmlLines.push(' <datafield tag="' + fieldTag
|
||
+ '" ind1="' + fieldInd[0]
|
||
+ '" ind2="' + fieldInd[1] + '">');
|
||
|
||
// Subfields
|
||
let subfields = fieldVal.split('|');
|
||
for (let isubfield = 1; isubfield < subfields.length; isubfield++) {
|
||
// Split on first <space> character to extract the subfield code and its contents
|
||
let subfield = subfields[isubfield].replace(/\s/, '\x01').split('\x01');
|
||
marcxmlLines.push(
|
||
' <subfield code="' + subfield[0] + '">' + subfield[1] + '</subfield>'
|
||
);
|
||
}
|
||
|
||
marcxmlLines.push(
|
||
' </datafield>'
|
||
);
|
||
}
|
||
|
||
marcxmlLines.push(
|
||
'</record>'
|
||
);
|
||
|
||
return marcxmlLines.join('\n');
|
||
}
|
||
|
||
|
||
/** BEGIN TEST CASES **/
|
||
var testCases = [
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/01002457709",
|
||
"items": [
|
||
{
|
||
"itemType": "book",
|
||
"title": "Study of the ⁴He+²⁰⁹Bi fusion reaction",
|
||
"creators": [
|
||
{
|
||
"firstName": "A. A.",
|
||
"lastName": "Hassan",
|
||
"creatorType": "editor"
|
||
}
|
||
],
|
||
"date": "2003",
|
||
"archive": "Книги (изданные с 1831 г. по настоящее время)",
|
||
"callNumber": "FB 3 04-32/701",
|
||
"extra": "RSLID: 01002457709\nBBK: В383.5,09",
|
||
"language": "eng",
|
||
"libraryCatalog": "Российская Государственная Библиотека",
|
||
"numPages": "11",
|
||
"place": "Дубна",
|
||
"publisher": "Объед. ин-т ядер. исслед",
|
||
"series": "Объединенный ин-т ядерных исследований, Дубна",
|
||
"seriesNumber": "E15-2003-186",
|
||
"url": "https://search.rsl.ru/ru/record/01002457709",
|
||
"attachments": [
|
||
{
|
||
"title": "via search",
|
||
"snapshot": false,
|
||
"contentType": "text/html"
|
||
}
|
||
],
|
||
"tags": [
|
||
{
|
||
"tag": "Физико-математические науки -- Физика -- Физика атомного ядра -- Ядерные реакции"
|
||
}
|
||
],
|
||
"notes": [],
|
||
"seeAlso": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/01007721928",
|
||
"items": "multiple"
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/01009512194",
|
||
"items": "multiple"
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/01000580022",
|
||
"items": [
|
||
{
|
||
"itemType": "book",
|
||
"title": "Труды Международной конференции \"Математика в индустрии\", 29 июня - 3 июля 1998 года",
|
||
"creators": [],
|
||
"date": "1998",
|
||
"ISBN": "9785879761405",
|
||
"archive": "Книги (изданные с 1831 г. по настоящее время)",
|
||
"callNumber": "FB 2 98-27/128; FB 2 98-27/129",
|
||
"extra": "RSLID: 01000580022\nBBK: Ж.с11я431(0)",
|
||
"language": "rus",
|
||
"libraryCatalog": "Российская Государственная Библиотека",
|
||
"numPages": "352",
|
||
"place": "Таганрог",
|
||
"publisher": "Изд-во Таганрог. гос. пед. ин-та",
|
||
"url": "https://search.rsl.ru/ru/record/01000580022",
|
||
"attachments": [
|
||
{
|
||
"title": "via search",
|
||
"snapshot": false,
|
||
"contentType": "text/html"
|
||
}
|
||
],
|
||
"tags": [
|
||
{
|
||
"tag": "Техника и технические науки -- Применение математических методов -- Материалы конференции"
|
||
}
|
||
],
|
||
"notes": [
|
||
{
|
||
"note": "В надзаг.: М-во общ. и проф. образования РФ. Таганрог. гос. пед. ин-т На обл. в подзаг.: ICIM - 98 Текст рус., англ Посвящается 300-летию основания г. Таганрога"
|
||
}
|
||
],
|
||
"seeAlso": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/01004044482",
|
||
"items": [
|
||
{
|
||
"itemType": "book",
|
||
"title": "Химия. Неорганическая химия: учебник для 8 класса общеобразовательных учреждений",
|
||
"creators": [
|
||
{
|
||
"firstName": "Гунтис Екабович",
|
||
"lastName": "Рудзитис",
|
||
"creatorType": "author"
|
||
},
|
||
{
|
||
"firstName": "Фриц Генрихович",
|
||
"lastName": "Фельдман",
|
||
"creatorType": "author"
|
||
}
|
||
],
|
||
"date": "2008",
|
||
"ISBN": "9785090198592",
|
||
"archive": "Книги (изданные с 1831 г. по настоящее время)",
|
||
"callNumber": "FB 3 08-13/261",
|
||
"edition": "12-е изд., испр",
|
||
"extra": "RSLID: 01004044482\nBBK: Г1я721-1",
|
||
"language": "rus",
|
||
"libraryCatalog": "Российская Государственная Библиотека",
|
||
"numPages": "175",
|
||
"place": "Москва",
|
||
"publisher": "Просвещение",
|
||
"shortTitle": "Химия. Неорганическая химия",
|
||
"url": "https://search.rsl.ru/ru/record/01004044482",
|
||
"attachments": [
|
||
{
|
||
"title": "via search",
|
||
"snapshot": false,
|
||
"contentType": "text/html"
|
||
}
|
||
],
|
||
"tags": [
|
||
{
|
||
"tag": "Химические науки -- Общая и неорганическая химия -- Учебник для средней общеобразовательной школы"
|
||
}
|
||
],
|
||
"notes": [],
|
||
"seeAlso": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/01008704042",
|
||
"items": "multiple"
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/01010006646",
|
||
"items": "multiple"
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/01008942252",
|
||
"items": [
|
||
{
|
||
"itemType": "report",
|
||
"title": "Товары бытовой химии. Метод определения щелочных компонентов: Goods of household chemistry. Method for determination of alkaline components: государственный стандарт Российской Федерации: издание официальное: утвержден и введен в действие Постановлением Госстандарта России от 29 января 1997 г. № 26: введен впервые: введен 1998-01-01",
|
||
"creators": [],
|
||
"date": "1997",
|
||
"archive": "Стандарты",
|
||
"callNumber": "SVT ГОСТ Р 51021-97",
|
||
"extra": "RSLID: 01008942252\nType: standard",
|
||
"institution": "Изд-во стандартов",
|
||
"language": "rus",
|
||
"libraryCatalog": "Российская Государственная Библиотека",
|
||
"place": "Москва",
|
||
"shortTitle": "Товары бытовой химии. Метод определения щелочных компонентов",
|
||
"url": "https://search.rsl.ru/ru/record/01008942252",
|
||
"attachments": [
|
||
{
|
||
"title": "via search",
|
||
"snapshot": false,
|
||
"contentType": "text/html"
|
||
},
|
||
{
|
||
"title": "E-resource",
|
||
"snapshot": false,
|
||
"contentType": "text/html"
|
||
}
|
||
],
|
||
"tags": [],
|
||
"notes": [],
|
||
"seeAlso": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/01007057068",
|
||
"items": [
|
||
{
|
||
"itemType": "book",
|
||
"title": "Химия и реставрация",
|
||
"creators": [],
|
||
"date": "1970",
|
||
"archive": "Книги (изданные с 1831 г. по настоящее время)",
|
||
"callNumber": "FB Бр 130/952; FB Бр 130/953; FB Арх",
|
||
"extra": "RSLID: 01007057068",
|
||
"language": "rus",
|
||
"libraryCatalog": "Российская Государственная Библиотека",
|
||
"numPages": "10",
|
||
"place": "Москва",
|
||
"publisher": "б. и.",
|
||
"series": "Химия/ М-во культуры СССР",
|
||
"seriesNumber": "70",
|
||
"url": "https://search.rsl.ru/ru/record/01007057068",
|
||
"attachments": [
|
||
{
|
||
"title": "via search",
|
||
"snapshot": false,
|
||
"contentType": "text/html"
|
||
}
|
||
],
|
||
"tags": [],
|
||
"notes": [],
|
||
"seeAlso": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/01000681096",
|
||
"items": [
|
||
{
|
||
"itemType": "book",
|
||
"title": "Тезисы докладов Межрегиональной научной конференции \"Химия на пути в XXI век\", Ухта, 13-14 марта 2000 г",
|
||
"creators": [],
|
||
"date": "2000",
|
||
"ISBN": "9785881792152",
|
||
"archive": "Книги (изданные с 1831 г. по настоящее время)",
|
||
"callNumber": "FB 2 00-8/1758-0; FB 2 00-8/1759-9",
|
||
"extra": "RSLID: 01000681096\nBBK: Г.я431(2)",
|
||
"language": "rus",
|
||
"libraryCatalog": "Российская Государственная Библиотека",
|
||
"numPages": "46",
|
||
"place": "Ухта",
|
||
"publisher": "Ухт. гос. техн. ун-т",
|
||
"url": "https://search.rsl.ru/ru/record/01000681096",
|
||
"attachments": [
|
||
{
|
||
"title": "via search",
|
||
"snapshot": false,
|
||
"contentType": "text/html"
|
||
}
|
||
],
|
||
"tags": [
|
||
{
|
||
"tag": "Химия -- Материалы конференции"
|
||
}
|
||
],
|
||
"notes": [
|
||
{
|
||
"note": "В надзаг.: В надзаг.: М-во образования Рос. Федерации. Ухт. гос. техн. ун-т. Каф. химии"
|
||
}
|
||
],
|
||
"seeAlso": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/01002792532",
|
||
"items": [
|
||
{
|
||
"itemType": "book",
|
||
"title": "Физическая химия",
|
||
"creators": [],
|
||
"date": "2005",
|
||
"ISBN": "9785812208066",
|
||
"abstractNote": "Учебное пособие предназначено для студентов, аспирантов, научных и инженерно-технических работников, преподавателей ВУЗов и техникумов",
|
||
"archive": "Книги (изданные с 1831 г. по настоящее время)",
|
||
"callNumber": "FB 12 05-8/83",
|
||
"extra": "RSLID: 01002792532\nBBK: Г5я732-1; Г6я732-1",
|
||
"language": "rus",
|
||
"libraryCatalog": "Российская Государственная Библиотека",
|
||
"numPages": "282",
|
||
"place": "М.",
|
||
"publisher": "Моск. гос. ун-т печати",
|
||
"url": "https://search.rsl.ru/ru/record/01002792532",
|
||
"attachments": [
|
||
{
|
||
"title": "via search",
|
||
"snapshot": false,
|
||
"contentType": "text/html"
|
||
}
|
||
],
|
||
"tags": [],
|
||
"notes": [],
|
||
"seeAlso": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/01004080147",
|
||
"items": [
|
||
{
|
||
"itemType": "book",
|
||
"title": "Физическая химия: учебное пособие",
|
||
"creators": [
|
||
{
|
||
"firstName": "Константин Григорьевич",
|
||
"lastName": "Боголицын",
|
||
"creatorType": "editor"
|
||
}
|
||
],
|
||
"date": "2008",
|
||
"ISBN": "9785261003861",
|
||
"archive": "Книги (изданные с 1831 г. по настоящее время)",
|
||
"callNumber": "FB 3 08-25/12",
|
||
"extra": "RSLID: 01004080147\nBBK: Г5я738-1",
|
||
"language": "rus",
|
||
"libraryCatalog": "Российская Государственная Библиотека",
|
||
"numPages": "111",
|
||
"place": "Архангельск",
|
||
"publisher": "Архангельский гос. технический ун-т",
|
||
"shortTitle": "Физическая химия",
|
||
"url": "https://search.rsl.ru/ru/record/01004080147",
|
||
"attachments": [
|
||
{
|
||
"title": "via search",
|
||
"snapshot": false,
|
||
"contentType": "text/html"
|
||
},
|
||
{
|
||
"title": "E-resource",
|
||
"snapshot": false,
|
||
"contentType": "text/html"
|
||
}
|
||
],
|
||
"tags": [
|
||
{
|
||
"tag": "Химические науки -- Физическая химия. Химическая физика -- Учебник для высшей школы -- Заочное обучение"
|
||
}
|
||
],
|
||
"notes": [],
|
||
"seeAlso": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/01002386114",
|
||
"items": [
|
||
{
|
||
"itemType": "book",
|
||
"title": "Журнал физической химии",
|
||
"creators": [
|
||
{
|
||
"lastName": "АН СССР",
|
||
"creatorType": "editor",
|
||
"fieldMode": true
|
||
},
|
||
{
|
||
"lastName": "СССР",
|
||
"creatorType": "editor",
|
||
"fieldMode": true
|
||
},
|
||
{
|
||
"lastName": "РСФСР",
|
||
"creatorType": "editor",
|
||
"fieldMode": true
|
||
},
|
||
{
|
||
"lastName": "СССР",
|
||
"creatorType": "editor",
|
||
"fieldMode": true
|
||
},
|
||
{
|
||
"lastName": "Российская академия наук",
|
||
"creatorType": "editor",
|
||
"fieldMode": true
|
||
}
|
||
],
|
||
"date": "1930",
|
||
"archive": "Сериальные издания (кроме газет)",
|
||
"extra": "RSLID: 01002386114\nType: journal\nBBK: Г5я5",
|
||
"language": "rus",
|
||
"libraryCatalog": "Российская Государственная Библиотека",
|
||
"place": "Москва",
|
||
"publisher": "Российская академия наук",
|
||
"url": "https://search.rsl.ru/ru/record/01002386114",
|
||
"attachments": [
|
||
{
|
||
"title": "via search",
|
||
"snapshot": false,
|
||
"contentType": "text/html"
|
||
}
|
||
],
|
||
"tags": [
|
||
{
|
||
"tag": "Химические науки -- Физическая химия. Химическая физика -- Общий раздел -- Периодические и продолжающиеся издания"
|
||
}
|
||
],
|
||
"notes": [
|
||
{
|
||
"note": "Основан Бюро физ.-хим. конф. при НТУ ВСНХ СССР в 1930 г Журнал издается под руководством Отделения химии и наук о материалах РАН 1931-1934 (Т. 5 Вып. 1-3) является \"Серией В Химического журнала\" Изд-во: Т. 1 Гос. изд-во; Т. 2 Гос. науч.-техн. изд-во ; Т. 3-5 (Вып. 1-7) Гос. техн.-теорет. изд-во ; Т. 5 (Вып. 8-12) - 11 (Вып. 1-3) ОНТИ НКТП СССР; Т. 11 (Вып. 4-6) - 38 не указано; Т. 39-66 Наука ; Т. 67-72 МАИК \"Наука\"; Т. 73- Наука: МАИК \"Наука\"/Интерпериодика ; Т. 82- Наука Место изд.: 1930, т. 1, 29- М.; 1931. т. 2-28 М.; Л Изд-во: 2017- Федеральное государственное унитарное предприятие Академический научно-издательский, производственно-полиграфический и книгораспространительский центр \"Наука\" ; 2018- Российская академия наук"
|
||
}
|
||
],
|
||
"seeAlso": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/07000380351",
|
||
"items": [
|
||
{
|
||
"itemType": "book",
|
||
"title": "Журнал физической химии",
|
||
"creators": [
|
||
{
|
||
"lastName": "АН СССР",
|
||
"creatorType": "editor",
|
||
"fieldMode": true
|
||
},
|
||
{
|
||
"lastName": "СССР",
|
||
"creatorType": "editor",
|
||
"fieldMode": true
|
||
},
|
||
{
|
||
"lastName": "РСФСР",
|
||
"creatorType": "editor",
|
||
"fieldMode": true
|
||
},
|
||
{
|
||
"lastName": "СССР",
|
||
"creatorType": "editor",
|
||
"fieldMode": true
|
||
},
|
||
{
|
||
"lastName": "Российская академия наук",
|
||
"creatorType": "editor",
|
||
"fieldMode": true
|
||
}
|
||
],
|
||
"date": "1930",
|
||
"archive": "Сериальные издания (кроме газет)",
|
||
"extra": "RSLID: 07000380351\nType: journal",
|
||
"language": "rus",
|
||
"libraryCatalog": "Российская Государственная Библиотека",
|
||
"place": "Москва",
|
||
"publisher": "Российская академия наук",
|
||
"url": "https://search.rsl.ru/ru/record/07000380351",
|
||
"attachments": [
|
||
{
|
||
"title": "via search",
|
||
"snapshot": false,
|
||
"contentType": "text/html"
|
||
}
|
||
],
|
||
"tags": [],
|
||
"notes": [
|
||
{
|
||
"note": "Основан Бюро физ.-хим. конф. при НТУ ВСНХ СССР в 1930 г Журнал издается под руководством Отделения химии и наук о материалах РАН 1931-1934 (Т. 5 Вып. 1-3) является \"Серией В Химического журнала\" Изд-во: Т. 1 Гос. изд-во; Т. 2 Гос. науч.-техн. изд-во; Т. 3-5 (Вып. 1-7) Гос. техн.-теорет. изд-во; Т. 5 (Вып. 8-12) - 11 (Вып. 1-3) ОНТИ НКТП СССР; Т. 11 (Вып. 4-6) - 38 не указано; Т. 39-66 Наука; Т. 67-72 МАИК \"Наука\"; Т. 73- Наука: МАИК \"Наука\"/Интерпериодика ; Т. 82- Наука Место изд.: 1930, т. 1, 29- М.; 1931. т. 2-28 М.; Л Изд-во: 2017- Федеральное государственное унитарное предприятие Академический научно-издательский, производственно-полиграфический и книгораспространительский центр \"Наука\" ; 2018- Российская академия наук"
|
||
}
|
||
],
|
||
"seeAlso": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/01010153224",
|
||
"items": [
|
||
{
|
||
"itemType": "report",
|
||
"title": "Стабильные жидкие углеводороды. Определение ванадия, никеля, алюминия, мышьяка, меди, железа, натрия и свинца спектральными методами: стандарт организации: издание официальное: введен впервые: дата введения 2018-12-01",
|
||
"creators": [
|
||
{
|
||
"lastName": "\"Газпром\", российское акционерное общество",
|
||
"creatorType": "editor",
|
||
"fieldMode": true
|
||
}
|
||
],
|
||
"date": "2019",
|
||
"archive": "Стандарты",
|
||
"callNumber": "SVT СТО Газпром 5.78-2018",
|
||
"extra": "RSLID: 01010153224\nType: standard\nBBK: Л54-101с344я861(2Р); Д453.1-43,0; И36-1я861",
|
||
"institution": "Газпром экспо",
|
||
"language": "rus",
|
||
"libraryCatalog": "Российская Государственная Библиотека",
|
||
"place": "Санкт-Петербург",
|
||
"shortTitle": "Стабильные жидкие углеводороды. Определение ванадия, никеля, алюминия, мышьяка, меди, железа, натрия и свинца спектральными методами",
|
||
"url": "https://search.rsl.ru/ru/record/01010153224",
|
||
"attachments": [
|
||
{
|
||
"title": "via search",
|
||
"snapshot": false,
|
||
"contentType": "text/html"
|
||
}
|
||
],
|
||
"tags": [
|
||
{
|
||
"tag": "Горное дело -- Разработка нефтяных и газовых месторождений -- Исследование -- Стандарты"
|
||
},
|
||
{
|
||
"tag": "Науки о Земле -- Геологические науки -- Полезные ископаемые -- Горючие полезные ископаемые. Битумы -- Нефть -- Химический состав -- Стандарты"
|
||
}
|
||
],
|
||
"notes": [],
|
||
"seeAlso": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/01008033518",
|
||
"items": [
|
||
{
|
||
"itemType": "report",
|
||
"title": "ГОСТ IEC 61010-1-2014. Безопасность электрических контрольно-измерительных приборов и лабораторного оборудования =: Safety requirements for electrical equipment for measurement, control, and laboratory use. Part 1. General requirements: межгосударственный стандарт. Ч. 1: Общие требования",
|
||
"creators": [
|
||
{
|
||
"lastName": "Межгосударственный совет по стандартизации, метрологии и сертификации",
|
||
"creatorType": "editor",
|
||
"fieldMode": true
|
||
}
|
||
],
|
||
"date": "2015",
|
||
"archive": "Стандарты",
|
||
"callNumber": "SVT ГОСТ IEC 61010-1-2014",
|
||
"extra": "RSLID: 01008033518\nType: standard",
|
||
"institution": "Стандартинформ",
|
||
"libraryCatalog": "Российская Государственная Библиотека",
|
||
"place": "Москва",
|
||
"shortTitle": "ГОСТ IEC 61010-1-2014. Безопасность электрических контрольно-измерительных приборов и лабораторного оборудования =",
|
||
"url": "https://search.rsl.ru/ru/record/01008033518",
|
||
"attachments": [
|
||
{
|
||
"title": "via search",
|
||
"snapshot": false,
|
||
"contentType": "text/html"
|
||
}
|
||
],
|
||
"tags": [
|
||
{
|
||
"tag": "аналитическая химия"
|
||
},
|
||
{
|
||
"tag": "измерительные приборы"
|
||
},
|
||
{
|
||
"tag": "лабораторное оборудование"
|
||
},
|
||
{
|
||
"tag": "средства автоматизации и вычислительной техники"
|
||
},
|
||
{
|
||
"tag": "техника безопасности"
|
||
},
|
||
{
|
||
"tag": "химическая промышленность"
|
||
},
|
||
{
|
||
"tag": "электрические и электронные испытания"
|
||
}
|
||
],
|
||
"notes": [
|
||
{
|
||
"note": "Настоящий стандарт идентичен международному стандарту IEC 61010-1:2010 Safety requirements for electrical equipment for measurement, control, and laboratory use - Part 1: General requirements (Безопасность контрольно-измерительных приборов и лабораторного оборудования. Часть 1. Общие требования)"
|
||
}
|
||
],
|
||
"seeAlso": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/01010285501",
|
||
"items": [
|
||
{
|
||
"itemType": "book",
|
||
"title": "Индия: путеводитель + карта: 12+",
|
||
"creators": [
|
||
{
|
||
"firstName": "Дмитрий Евгеньевич",
|
||
"lastName": "Кульков",
|
||
"creatorType": "author"
|
||
}
|
||
],
|
||
"date": "2020",
|
||
"ISBN": "9785041079505",
|
||
"archive": "Карты",
|
||
"callNumber": "FB Гр Ч518; KGR Ко 169-20/IX-21",
|
||
"edition": "2-е изд., испр. и доп.",
|
||
"extra": "RSLID: 01010285501\nBBK: Я23(5Ид)",
|
||
"language": "rus",
|
||
"libraryCatalog": "Российская Государственная Библиотека",
|
||
"numPages": "413",
|
||
"place": "Москва",
|
||
"publisher": "Эксмо, Бомбора™",
|
||
"series": "Orangевый гид",
|
||
"shortTitle": "Индия",
|
||
"url": "https://search.rsl.ru/ru/record/01010285501",
|
||
"attachments": [
|
||
{
|
||
"title": "via search",
|
||
"snapshot": false,
|
||
"contentType": "text/html"
|
||
}
|
||
],
|
||
"tags": [
|
||
{
|
||
"tag": "Литература универсального содержания -- Справочные издания -- Страноведческие справочники. Путеводители. Адресные книги. Адрес-календари -- Отдельные зарубежные страны -- Азия -- Индия"
|
||
},
|
||
{
|
||
"tag": "Республика Индия, государство"
|
||
}
|
||
],
|
||
"notes": [
|
||
{
|
||
"note": "Авт. указан перед вып. дан Указ. в конце кн"
|
||
}
|
||
],
|
||
"seeAlso": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/01008937943",
|
||
"items": [
|
||
{
|
||
"itemType": "thesis",
|
||
"title": "Реакция Дильса-Альдера при деформации органических веществ под давлением: диссертация ... кандидата химических наук: 02.00.03",
|
||
"creators": [
|
||
{
|
||
"firstName": "Валентин Сергеевич",
|
||
"lastName": "Абрамов",
|
||
"creatorType": "author"
|
||
}
|
||
],
|
||
"date": "1980",
|
||
"archive": "Диссертации",
|
||
"callNumber": "OD Дк 81-2/93",
|
||
"extra": "RSLID: 01008937943\nBBK: Г591,0; Г222.6Дл,0",
|
||
"language": "rus",
|
||
"libraryCatalog": "Российская Государственная Библиотека",
|
||
"numPages": "118",
|
||
"place": "Москва",
|
||
"shortTitle": "Реакция Дильса-Альдера при деформации органических веществ под давлением",
|
||
"url": "https://search.rsl.ru/ru/record/01008937943",
|
||
"attachments": [
|
||
{
|
||
"title": "via search",
|
||
"snapshot": false,
|
||
"contentType": "text/html"
|
||
}
|
||
],
|
||
"tags": [
|
||
{
|
||
"tag": "Органическая химия"
|
||
}
|
||
],
|
||
"notes": [],
|
||
"seeAlso": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/01000287561",
|
||
"items": "multiple"
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/01002444380",
|
||
"items": [
|
||
{
|
||
"itemType": "book",
|
||
"title": "Основы общей химии: В 2 т.",
|
||
"creators": [
|
||
{
|
||
"firstName": "Борис Владимирович",
|
||
"lastName": "Некрасов",
|
||
"creatorType": "author"
|
||
}
|
||
],
|
||
"date": "2003",
|
||
"ISBN": "9785811405008",
|
||
"abstractNote": "Книга является первым томом двухтомной монографии, суммирующей основные особенности химии всех химических элементов. Монография предназначена для широкого круга научных работников, инженеров, студентов химических специальностей",
|
||
"archive": "Книги (изданные с 1831 г. по настоящее время)",
|
||
"edition": "4. изд., стер",
|
||
"extra": "RSLID: 01002444380\nBBK: Г1я731-1",
|
||
"language": "rus",
|
||
"libraryCatalog": "Российская Государственная Библиотека",
|
||
"place": "СПб. [и др.]",
|
||
"publisher": "Лань",
|
||
"shortTitle": "Основы общей химии",
|
||
"url": "https://search.rsl.ru/ru/record/01002444380",
|
||
"attachments": [
|
||
{
|
||
"title": "via search",
|
||
"snapshot": false,
|
||
"contentType": "text/html"
|
||
}
|
||
],
|
||
"tags": [
|
||
{
|
||
"tag": "Химические науки -- Общая и неорганическая химия -- Учебник для высшей школы"
|
||
}
|
||
],
|
||
"notes": [],
|
||
"seeAlso": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/01002386114",
|
||
"items": [
|
||
{
|
||
"itemType": "book",
|
||
"title": "Журнал физической химии",
|
||
"creators": [
|
||
{
|
||
"lastName": "АН СССР",
|
||
"creatorType": "editor",
|
||
"fieldMode": true
|
||
},
|
||
{
|
||
"lastName": "СССР",
|
||
"creatorType": "editor",
|
||
"fieldMode": true
|
||
},
|
||
{
|
||
"lastName": "РСФСР",
|
||
"creatorType": "editor",
|
||
"fieldMode": true
|
||
},
|
||
{
|
||
"lastName": "СССР",
|
||
"creatorType": "editor",
|
||
"fieldMode": true
|
||
},
|
||
{
|
||
"lastName": "Российская академия наук",
|
||
"creatorType": "editor",
|
||
"fieldMode": true
|
||
}
|
||
],
|
||
"date": "1930",
|
||
"archive": "Сериальные издания (кроме газет)",
|
||
"extra": "RSLID: 01002386114\nType: journal\nBBK: Г5я5",
|
||
"language": "rus",
|
||
"libraryCatalog": "Российская Государственная Библиотека",
|
||
"place": "Москва",
|
||
"publisher": "Российская академия наук",
|
||
"url": "https://search.rsl.ru/ru/record/01002386114",
|
||
"attachments": [
|
||
{
|
||
"title": "via search",
|
||
"snapshot": false,
|
||
"contentType": "text/html"
|
||
}
|
||
],
|
||
"tags": [
|
||
{
|
||
"tag": "Химические науки -- Физическая химия. Химическая физика -- Общий раздел -- Периодические и продолжающиеся издания"
|
||
}
|
||
],
|
||
"notes": [
|
||
{
|
||
"note": "Основан Бюро физ.-хим. конф. при НТУ ВСНХ СССР в 1930 г Журнал издается под руководством Отделения химии и наук о материалах РАН 1931-1934 (Т. 5 Вып. 1-3) является \"Серией В Химического журнала\" Изд-во: Т. 1 Гос. изд-во; Т. 2 Гос. науч.-техн. изд-во ; Т. 3-5 (Вып. 1-7) Гос. техн.-теорет. изд-во ; Т. 5 (Вып. 8-12) - 11 (Вып. 1-3) ОНТИ НКТП СССР; Т. 11 (Вып. 4-6) - 38 не указано; Т. 39-66 Наука ; Т. 67-72 МАИК \"Наука\"; Т. 73- Наука: МАИК \"Наука\"/Интерпериодика ; Т. 82- Наука Место изд.: 1930, т. 1, 29- М.; 1931. т. 2-28 М.; Л Изд-во: 2017- Федеральное государственное унитарное предприятие Академический научно-издательский, производственно-полиграфический и книгораспространительский центр \"Наука\" ; 2018- Российская академия наук"
|
||
}
|
||
],
|
||
"seeAlso": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "web",
|
||
"url": "https://search.rsl.ru/ru/record/07000380352",
|
||
"items": [
|
||
{
|
||
"itemType": "book",
|
||
"title": "Журнал физической химии. 2019",
|
||
"creators": [],
|
||
"archive": "Книги (изданные с 1831 г. по настоящее время)",
|
||
"extra": "RSLID: 07000380352",
|
||
"language": "rus",
|
||
"libraryCatalog": "Российская Государственная Библиотека",
|
||
"url": "https://search.rsl.ru/ru/record/07000380352",
|
||
"attachments": [
|
||
{
|
||
"title": "via search",
|
||
"snapshot": false,
|
||
"contentType": "text/html"
|
||
}
|
||
],
|
||
"tags": [],
|
||
"notes": [],
|
||
"seeAlso": []
|
||
}
|
||
]
|
||
}
|
||
]
|
||
/** END TEST CASES **/
|