亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? doi.pm

?? 一個論文管理系統
?? PM
字號:
# $Id: DOI.pm,v 1.8 2005/09/12 11:44:45 martin Exp $## Copyright 2005 Nature Publishing Group# This program is free software; you can redistribute it and/or# modify it under the terms of the GNU General Public License# as published by the Free Software Foundation; either version 2# of the License, or (at your option) any later version.## The Bibliotech::CitationSource::DOI class recognises DOIs# in the URI-like doi: construction or as http://dx.doi.org/...# URLs and queries CrossRef for the metadata.## NOTE: This module relies on membership of CrossRef.  You must# have a CrossRef web services query account and permission to# use it for this purpose. More details via:# http://www.crossref.org/ package Bibliotech::CitationSource::DOI;use strict;use warnings;use Bibliotech::CitationSource;use base 'Bibliotech::CitationSource';use Bibliotech::CitationSource::Simple;use Data::Dumper;use XML::LibXML;use LWP::UserAgent;use HTML::Entities;use URI::Escape;use constant CR_URL => 'http://doi.crossref.org/servlet/query';sub api_version{  1;}sub name{  'DOI';}sub version{  '$Revision: 1.8 $';}sub understands{    my ($self, $uri) = @_;    #reset query result cache    $self->{'query_result'} = undef;    return 0 unless $self->crossref_account;    my $scheme = $uri->scheme;    return 1 if $scheme eq 'doi';    return 1 if $scheme eq 'http' and $uri->host eq 'dx.doi.org' && $uri->path =~ m!^/10\.\d{4}/.+!;    return 0;}sub filter{  my ($self, $uri) = @_;  my $doi = $self->get_doi($uri);  if($doi)  {    #Do the CrossRef query now    #This is so we can fail and return a nice error message if the DOI is not registered    if(!$self->resolved($doi))    {	$self->errstr("DOI $doi cannot be resolved.  It may not be in the CrossRef database, or you may have mis-entered it.  Please check it and try again.\n");	return '';    }    #in case doi contains a hash    $doi =~ s!#!%23!g;    return new URI('http://dx.doi.org/'.$doi)  }  else  {    return undef;  }}sub citations{     my ($self, $uri) = @_;     return undef unless($self->understands($uri));          my $doi = $self->get_doi($uri);     return undef unless $doi;     my $query_result = $self->query_result($doi);     return undef unless $query_result;     #check it's worth returning     unless($query_result->{'journal'} && $query_result->{'pubdate'})     {	$self->errstr('Insufficient metadata extracted for doi:' . $doi);	return undef;     }     return new Bibliotech::CitationSource::ResultList(Bibliotech::CitationSource::Result::Simple->new($query_result));}sub resolved{    my ($self, $doi) = @_;    my $query_result = $self->query_result($doi);    return 1 if $query_result->{'status'} && $query_result->{'status'} eq 'resolved';    return 0;}sub query_result{    my ($self, $doi) = @_;    return $self->{'query_result'}->{$doi} if $self->{'query_result'}->{$doi};    my $xml = $self->crossref_query_uri($doi);     my $query_result = $self->parse_crossref_xml($xml, $doi);    return undef unless $query_result;    $self->{'query_result'}->{$doi} = $query_result;    return $query_result;}sub parse_crossref_xml{    my ($self, $xml, $doi) = @_;    return undef unless $xml;    $xml =~ s/<crossref_result.*?>/<crossref_result>/;    my $parser = XML::LibXML->new();    my $tree = $parser->parse_string($xml);    unless ($tree) {		$self->errstr('XML parse failed');		return undef;    }    my $root = $tree->getDocumentElement;    unless ($root) {		$self->errstr("no root");    }    #sanity check    unless($root->findvalue('query_result/body/query/doi') eq $doi) {		$self->errstr("DOI mismatch\n");		return undef;    }    return { status => 'unresolved' } if $root->findvalue('query_result/body/query/@status') eq 'unresolved';	    #CrossRef XML has double-encoded entities, hence the decode_entities below    return {             status => 'resolved',	     pubdate => $self->get_QueryValue($root, 'year'),             journal => { name => decode_entities($self->get_QueryValue($root, 'journal_title')),                           issn => $self->get_QueryValue($root, 'issn[@type="print"]') 			}, 	     page => $self->get_QueryValue($root, 'first_page'),              volume => $self->get_QueryValue($root, 'volume'),             issue => $self->get_QueryValue($root, 'issue'),             pubdate => $self->get_QueryValue($root, 'year'),             title => decode_entities($self->get_QueryValue($root, 'article_title')),              doi => $doi        }; }sub get_QueryValue {  my ($self, $root, $key) = @_;    	  my $value;  $value = $root->findvalue('query_result/body/query/' . $key);   unless ($value) {    $self->errstr("No value for key $key\n");    return undef;  }  return $value;}sub get_doi {    my ($self, $uri) = @_;    my $doi;    if($uri->scheme eq 'doi') {	$doi = $uri;	$doi =~ s!^doi:!!;    }    elsif ( $uri->scheme eq 'http' && $uri->host eq 'dx.doi.org' && $uri->path =~ m!^/10\.\d{4}/.+! ) {        #DOI may contain a hash, so just manipulate raw string        $doi = $uri->as_string;        $doi =~ s!^http://dx\.doi\.org/!!i;	#$doi = $uri->path;	#$doi =~ s!^/!!;    }    #URI module escapes unsafe characters     return uri_unescape($doi);}sub crossref_query_uri {    my ($self, $doi) = @_;    my ($user, $passwd) = $self->crossref_account;	my $ua = new LWP::UserAgent;	my $req = new HTTP::Request(POST => CR_URL);	my $db = 'db=mddb';	my $content = "usr=" . $user . "&pwd=" . $passwd . "&$db&report=Brief&format=XSD_XML&qdata=";	$content .= uri_escape($self->build_query($doi));	$req->content_type('application/x-www-form-urlencoded');	$req->content($content);	#set timeout 	$ua->{timeout} = 900;	my $response = $ua->request($req);	my($headers) = $response->headers;	if($response->is_success) {			my($results) = $response->content;			#			# trap error message from crossref			#       where there are data errors			#       dump to browser			#			if($headers->title) {					$self->errstr($headers->title . "\n");					$self->errstr ($results);					return undef;			}			return($results);	}	$self->errstr("WARNING: " . $response->status_line . "\n");	return undef;}sub build_query {    my ($self, $doi) = @_;    $doi = encode_entities($doi);    my $q = q{<?xml version = "1.0" encoding="UTF-8"?><query_batch version="2.0" xmlns = "http://www.crossref.org/qschema/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">   <head>      <email_address>};    $q .= $self->bibliotech->siteemail;    $q .= q{</email_address>      <doi_batch_id>DOI-B1</doi_batch_id>                     </head>   <body>      <query key="MyKey1" enable-multiple-hits="false" expanded-results="true">           };  $q .= "<doi>\n    $doi\n    </doi>\n";  $q .= q{</query>         </body></query_batch>  };  return $q;}sub crossref_account {    my ($self) = shift;    my $user = $self->cfg('CR_USER');    my $password = $self->cfg('CR_PASSWORD');    ($user && $password) ? return ($user, $password) : return undef;}#true!1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久机这里只有精品| 91精品视频网| 日韩欧美精品在线视频| 亚洲欧洲性图库| 韩国女主播成人在线| 欧美日韩1区2区| 国产精品久久777777| 国产在线不卡一区| 欧美一区二区三区四区五区| 亚洲精品国久久99热| 成人国产精品免费观看视频| 精品久久久久99| 卡一卡二国产精品 | 日韩亚洲欧美中文三级| 亚洲毛片av在线| 不卡电影一区二区三区| 久久日一线二线三线suv| 免费观看在线色综合| 欧美日本一区二区三区四区| 一区二区三区精品| 色狠狠一区二区| 亚洲精品免费在线| 色婷婷综合久久久久中文一区二区 | 国产一区二区在线视频| 91精品视频网| 美女网站色91| 日韩欧美激情一区| 美女脱光内衣内裤视频久久影院| 91精品麻豆日日躁夜夜躁| 日韩av中文字幕一区二区三区| 欧美欧美午夜aⅴ在线观看| 午夜在线电影亚洲一区| 欧美日韩三级视频| 日韩影视精彩在线| 精品国产一区久久| 国产精品影视在线观看| 亚洲国产精品99久久久久久久久 | 日本v片在线高清不卡在线观看| 欧美另类videos死尸| 麻豆精品一区二区综合av| 精品久久久影院| 国产成人精品影视| 1024成人网| 欧美性生活影院| 久久国产精品免费| 国产日韩精品一区二区浪潮av| 国产一区二区视频在线| 国产精品欧美久久久久无广告| 91捆绑美女网站| 图片区小说区区亚洲影院| 欧美成人女星排名| 国产91精品精华液一区二区三区| 成人免费在线播放视频| 欧美妇女性影城| 国产精品一区二区久激情瑜伽| 中文字幕日韩一区| 91精品国产综合久久精品图片| 精品一区在线看| 亚洲女人的天堂| 欧美大片一区二区| 播五月开心婷婷综合| 无码av中文一区二区三区桃花岛| 日韩你懂的在线观看| 成人av免费在线| 日韩高清一区在线| 国产精品伦一区二区三级视频| 欧美群妇大交群中文字幕| 国产成+人+日韩+欧美+亚洲| 亚洲自拍欧美精品| 日本一区二区三区四区| 欧美日韩mp4| 99精品在线观看视频| 五月天一区二区三区| 国产精品久线观看视频| 日韩无一区二区| 色综合一区二区| 国产呦萝稀缺另类资源| 亚洲第一精品在线| 国产精品久久国产精麻豆99网站| 欧美一区二区人人喊爽| 95精品视频在线| 国产激情视频一区二区三区欧美| 五月天国产精品| 亚洲天堂精品在线观看| 国产欧美一区二区精品婷婷| 欧美精品久久久久久久久老牛影院| 国v精品久久久网| 美女视频网站久久| 亚洲成人激情av| 亚洲激情av在线| 国产精品久久二区二区| 国产欧美日韩三区| 久久综合久久综合久久| 717成人午夜免费福利电影| 日本韩国一区二区三区| 9久草视频在线视频精品| 韩国女主播一区二区三区| 日本亚洲一区二区| 午夜精品一区二区三区电影天堂| 中文字幕日本乱码精品影院| 欧美激情综合在线| 久久蜜桃av一区精品变态类天堂| 欧美一区二区免费| 欧美一二三区精品| 欧美一区二区三区四区视频| 欧美日韩电影在线播放| 欧美性生活久久| 欧美欧美欧美欧美| 欧美久久久久中文字幕| 91传媒视频在线播放| 在线观看亚洲a| 欧美日韩国产在线观看| 7777精品伊人久久久大香线蕉最新版| 欧美又粗又大又爽| 欧美日韩精品一区二区在线播放| 在线免费av一区| 欧美日韩国产成人在线91| 欧美久久久久中文字幕| 日韩一级免费观看| 久久综合九色综合欧美98| 久久蜜桃av一区精品变态类天堂 | 色网站国产精品| 欧美日韩国产小视频在线观看| 欧美日韩一区在线观看| 欧美一区二区三区四区五区| 精品蜜桃在线看| 国产精品沙发午睡系列990531| 国产精品美女久久久久久久久| 最近中文字幕一区二区三区| 亚洲啪啪综合av一区二区三区| 亚洲成人动漫av| 国产美女视频91| 成人毛片老司机大片| 91精品福利视频| 555www色欧美视频| 国产欧美精品国产国产专区| 综合av第一页| 日韩综合一区二区| 国产精品99久久久久久有的能看| 波多野结衣在线一区| 欧美亚洲国产怡红院影院| 欧美xxxx在线观看| 中文字幕一区二区三区在线不卡| 亚洲一区二区四区蜜桃| 日韩不卡一区二区三区 | 9191精品国产综合久久久久久| 精品免费视频一区二区| 中文字幕一区二区三区视频| 丝袜诱惑亚洲看片| 福利一区福利二区| 欧美精品xxxxbbbb| 国产欧美日韩精品a在线观看| 亚洲一区免费观看| 国产乱理伦片在线观看夜一区| 91蜜桃婷婷狠狠久久综合9色| 8x8x8国产精品| 亚洲欧美偷拍另类a∨色屁股| 免费成人av资源网| 91黄色免费观看| 欧美国产日韩一二三区| 五月激情六月综合| 99久久精品一区| 久久综合网色—综合色88| 亚洲一区二区三区四区在线 | 久久久久久久免费视频了| 亚洲妇女屁股眼交7| 成人h精品动漫一区二区三区| 欧美一级欧美一级在线播放| 亚洲免费观看高清在线观看| 国内精品久久久久影院色| 在线不卡一区二区| 亚洲精品视频在线观看网站| 国产综合色精品一区二区三区| 在线观看精品一区| 中文字幕视频一区| 国产成人免费av在线| 精品国产一区二区三区久久久蜜月| 亚洲影视资源网| 色综合久久88色综合天天6| 久久久亚洲综合| 国内精品国产三级国产a久久| 91精品国产91热久久久做人人| 一区二区在线观看免费| eeuss鲁片一区二区三区| 精品国产伦一区二区三区观看体验 | 欧美电视剧在线观看完整版| 亚洲午夜精品17c| 一本大道av一区二区在线播放| 久久精品夜色噜噜亚洲a∨| 精品一区二区三区香蕉蜜桃| 69p69国产精品| 日本欧洲一区二区| 在线不卡一区二区| 日韩精品一二区| 欧美一区二区三区成人| 日韩精品一区第一页| 日韩欧美国产电影| 免费xxxx性欧美18vr| 日韩欧美电影一区| 国产伦精一区二区三区|