Linking 1-2-3: Making BibP Links in Three Easy Steps

BibP linking to published works is as easy as 1-2-3.

  1. Determine the USIN for the referenced work.
  2. Make the bibp:USIN hyperlink.
  3. Add the client side resolver to enable BibP service.

1. Determining USINs

USINs are formed as follows.

2. Making bibp:USIN Hyperlinks

Technically, "bibp" is a URI scheme just like "http", "ftp", "mailto", and so on. So a bibp link in HTML has the familiar structure.

<a href="bibp:USIN">citation</a>
Just replace USIN with the USIN as determined above and citation with the text that you want to use for your hypertext anchor.

3. Enabling BibP Service

Enabling BibP service is the final step. Simply copy-and-paste the following client-side resolver into the head element (i.e., somewhere between the "<head>" and "</head>" tags) of your HTML document.

<script type="text/javascript">
<!-- // bibres.js  version 1.1
     // (c) Robert D. Cameron and Serban Tatu, November 2000. 
     // GNU General Public License, Version 2 applies.
var BibP_BaseURL;
var BibP_nocitehost = typeof(BibP_citehost) == "undefined";
function BibP_SetBaseURL (server) {
  BibP_BaseURL = server + "bibp1.0/resolve?" +
  (BibP_nocitehost ? "usin=" : "citehost="+ BibP_citehost+ "&usin=")}
BibP_SetBaseURL(BibP_nocitehost ? "http://usin.org/" :BibP_citehost);
function BibP_onMouseOver () {
  window.status = "bibp:" + this.href.substring(BibP_BaseURL.length); 
  return true}
function BibP_onMouseOut () {window.status = "";  return true}
function BibP_ProcessLink(L, srchKey) {
  var spot = L.href.indexOf(srchKey);
  if (spot != -1) {
    L.href = BibP_BaseURL + L.href.substring(spot + srchKey.length);
    L.onmouseover = BibP_onMouseOver;
    L.onmouseout = BibP_onMouseOut}}
var BibP_Icon = new Image ();      // To test for local bibhost icon.
function BibP_onIcon () {
  if (BibP_Icon.height!=0) {
    var oldBase = BibP_BaseURL;
    BibP_SetBaseURL("http://bibhost/");
    for (var i = 0; i < document.links.length; i++) 
      BibP_ProcessLink(document.links[i], oldBase)}}
function BibP_onLoad () {
  for (var i = 0; i < document.links.length; i++)
    BibP_ProcessLink(document.links[i], "bibp:")
  BibP_Icon.onload = BibP_onIcon;  // Now test for bibhost.
  BibP_Icon.src = "http://bibhost/bibp1.0/bibpicon.jpg"}
if (typeof(navigator.bibpSupport) == "undefined") {
  window.onload = BibP_onLoad}
// -->
</script>

That's it! You now have bibp links that work world-wide on the vast majority of popular web clients.