New, downloaded from LC
authormike <mike>
Tue, 19 Jun 2007 08:47:25 +0000 (08:47 +0000)
committermike <mike>
Tue, 19 Jun 2007 08:47:25 +0000 (08:47 +0000)
spec/cql_files/s61224011715843.gif [new file with mode: 0644]
spec/cql_files/s6955176837255.gif [new file with mode: 0644]
spec/cql_files/s_code.js [new file with mode: 0644]
spec/cql_files/sru-title.gif [new file with mode: 0644]
spec/cql_files/sru.css [new file with mode: 0644]
spec/cql_files/stdLauncher.js [new file with mode: 0644]
spec/cql_files/triggerParams.js [new file with mode: 0644]
spec/version-1.1.html [new file with mode: 0644]
spec/version-1.2.html [new file with mode: 0644]

diff --git a/spec/cql_files/s61224011715843.gif b/spec/cql_files/s61224011715843.gif
new file mode 100644 (file)
index 0000000..f4a2493
Binary files /dev/null and b/spec/cql_files/s61224011715843.gif differ
diff --git a/spec/cql_files/s6955176837255.gif b/spec/cql_files/s6955176837255.gif
new file mode 100644 (file)
index 0000000..f4a2493
Binary files /dev/null and b/spec/cql_files/s6955176837255.gif differ
diff --git a/spec/cql_files/s_code.js b/spec/cql_files/s_code.js
new file mode 100644 (file)
index 0000000..1cef32d
--- /dev/null
@@ -0,0 +1,339 @@
+/* SiteCatalyst code version: H.2.
+Copyright 1997-2005 Omniture, Inc. 
+More info available at http://www.omniture.com */
+/* Specify the Report Suite ID(s) to track here */
+var s_account="locgovprod"
+var s=s_gi(s_account)
+
+/************************** CONFIG SECTION **************************/
+
+/* You may add or alter any code config here. */
+s.cookieDomainPeriods="2"
+s.cookieLifetime="Session"
+s.currencyCode="USD"
+
+/* Link Tracking Config */
+s.trackDownloadLinks=true
+s.trackExternalLinks=true
+s.trackInlineStats=true
+//s.linkDownloadFileTypes="exe,zip,wav,mp3,mov,mpg,avi,wmv,doc,pdf,xls"
+s.linkDownloadFileTypes="exe,zip,wav,mp3,mov,mpg,avi,wmv,doc,pdf,xls,xml,sgm,sgml,brf,txt,jpg,jpeg,jp2,gif,tif,tiff,pcx,sid,ram,ra,mpeg,ppt" 
+s.linkInternalFilters="javascript:,loc.gov,americaslibrary.kids.us, americaslibrary.gov,copyright.gov,digitalpreservation.gov,americaslibrary.com,glin.gov,americasstory.com,crs.gov,classificationweb.net,worlddigitallibrary.gov,jewishheritagemonth.gov"
+s.linkLeaveQueryString=false
+s.linkTrackVars="None"
+s.linkTrackEvents="None"
+
+/* WARNING: Changing the visitor namespace will cause drastic changes
+to how your visitor data is collected.  Changes should only be made
+when instructed to do so by your account manager.*/
+s.visitorNamespace="thelibraryofcongress"
+
+s.usePlugins=true
+function s_doPlugins(s) {
+       s.campaign=s.getQueryParam('source');
+
+       if (window.omn_SearchTerm){s.prop4=omn_SearchTerm}
+       if (!s.prop2) {s.prop2=s.getQueryParam('qt');}
+        if(s.prop4){s.prop4=s.prop4.toLowerCase()} 
+
+       s.server=document.domain
+       s.prop1=document.title  
+
+        s.prop8=s.getQueryParam('cclquery')
+        s.prop9=s.getQueryParam('queryText')
+
+}
+s.doPlugins=s_doPlugins
+/*s.prop5=s.getQueryParam('cclquery');
+s.prop6=s.getQueryParam('queryText');*/
+
+/************************** PLUGINS SECTION *************************/
+/* You may insert any plugins you wish to use here.                 */
+
+/* Plugin: getQueryParam 1.1 - Return query string parameter values */
+s.getQueryParam=new Function("qp","d",""
++"var s=this,v='',d=d?d:'',i,t;while(qp){i=qp.indexOf(',');i=i<0?qp.l"
++"ength:i;t=s.gcgi(qp.substring(0,i));if(t)v+=v?d+t:t;qp=qp.substring"
++"(i==qp.length?i:i+1)}return v");
+s.gcgi=new Function("k",""
++"var v='',s=this;if(k&&s.wd.location.search){var q=s.wd.location.sea"
++"rch.toLowerCase(),qq=q.indexOf('?');q=qq<0?q:q.substring(qq+1);v=s."
++"pt(q,'&','cgif',k.toLowerCase())}return v");
+s.cgif=new Function("t","k",""
++"if(t){var s=this,i=t.indexOf('='),sk=i<0?t:t.substring(0,i),sv=i<0?"
++"'True':t.substring(i+1);if(sk.toLowerCase()==k)return s.epa(sv)}ret"
++"urn ''");
+
+/* Plugin: getAndPersistValue 0.1 - get a value on every page */
+s.getAndPersistValue=new Function("v","c","e",""
++"var s=this,a=new Date;"
++"a.setTime(a.getTime()+e*86400000);"
++"if(v)s.c_w(c,v,e?a:0);"
++"return s.c_r(c);");
+
+/* Plugin: getValOnce 0.1 - get a value once per session or number of days */
+s.getValOnce=new Function("v","c","e",""
++"var s=this,k=s.c_r(c),a=new Date;"
++"if(v){"
++"a.setTime(a.getTime()+e*86400000);"
++"s.c_w(c,v,e?a:0);"
++"}"
++"return v==k?'':v");
+
+/* Function - read combined cookies v 0.1 */
+s.c_rr=s.c_r;
+s.c_r=new Function("k",""
++"var s=this,d=new Date,v=s.c_rr(k),c=s.c_rr('s_pers'),i,m,e;if(v)ret"
++"urn v;k=s.ape(k);i=c.indexOf(' '+k+'=');c=i<0?s.c_rr('s_sess'):c;i="
++"c.indexOf(' '+k+'=');m=i<0?i:c.indexOf('|',i);e=i<0?i:c.indexOf(';'"
++",i);m=m>0?m:e;v=i<0?'':s.epa(c.substring(i+2+k.length,m<0?c.length:"
++"m));if(m>0&&m!=e)if(parseInt(c.substring(m+1,e<0?c.length:e))<d.get"
++"Time()){d.setTime(d.getTime()-60000);s.c_w(s.epa(k),'',d);v='';}ret"
++"urn v;");
+
+/* Function - write combined cookies v 0.1 */
+s.c_wr=s.c_w;
+s.c_w=new Function("k","v","e",""
++"var s=this,d=new Date,ht=0,pn='s_pers',sn='s_sess',pc=0,sc=0,pv,sv,"
++"c,i,t;d.setTime(d.getTime()-60000);if(s.c_rr(k)) s.c_wr(k,'',d);k=s"
++".ape(k);pv=s.c_rr(pn);i=pv.indexOf(' '+k+'=');if(i>-1){pv=pv.substr"
++"ing(0,i)+pv.substring(pv.indexOf(';',i)+1);pc=1;}sv=s.c_rr(sn);i=sv"
++".indexOf(' '+k+'=');if(i>-1){sv=sv.substring(0,i)+sv.substring(sv.i"
++"ndexOf(';',i)+1);sc=1;}d=new Date;if(e){if(e.getTime()>d.getTime())"
++"{pv+=' '+k+'='+s.ape(v)+'|'+e.getTime()+';';pc=1;}}else{sv+=' '+k+'"
++"='+s.ape(v)+';';sc=1;}if(sc) s.c_wr(sn,sv,0);if(pc){t=pv;while(t){v"
++"ar t1=parseInt(t.substring(t.indexOf('|')+1,t.indexOf(';')));t=t.su"
++"bstring(t.indexOf(';')+1);ht=ht<t1?t1:ht;}d.setTime(ht);s.c_wr(pn,p"
++"v,d);}return v==s.c_r(s.epa(k));");
+
+/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
+var s_objectID;function s_c2fe(f){var x='',s=0,e,a,b,c;while(1){e=
+f.indexOf('"',s);b=f.indexOf('\\',s);c=f.indexOf("\n",s);if(e<0||(b>=
+0&&b<e))e=b;if(e<0||(c>=0&&c<e))e=c;if(e>=0){x+=(e>s?f.substring(s,e):
+'')+(e==c?'\\n':'\\'+f.substring(e,e+1));s=e+1}else return x
++f.substring(s)}return f}function s_c2fa(f){var s=f.indexOf('(')+1,e=
+f.indexOf(')'),a='',c;while(s>=0&&s<e){c=f.substring(s,s+1);if(c==',')
+a+='","';else if(("\n\r\t ").indexOf(c)<0)a+=c;s++}return a?'"'+a+'"':
+a}function s_c2f(cc){cc=''+cc;var fc='var f=new Function(',s=
+cc.indexOf(';',cc.indexOf('{')),e=cc.lastIndexOf('}'),o,a,d,q,c,f,h,x
+fc+=s_c2fa(cc)+',"var s=new Object;';c=cc.substring(s+1,e);s=
+c.indexOf('function');while(s>=0){d=1;q='';x=0;f=c.substring(s);a=
+s_c2fa(f);e=o=c.indexOf('{',s);e++;while(d>0){h=c.substring(e,e+1);if(
+q){if(h==q&&!x)q='';if(h=='\\')x=x?0:1;else x=0}else{if(h=='"'||h=="'"
+)q=h;if(h=='{')d++;if(h=='}')d--}if(d>0)e++}c=c.substring(0,s)
++'new Function('+(a?a+',':'')+'"'+s_c2fe(c.substring(o+1,e))+'")'
++c.substring(e+1);s=c.indexOf('function')}fc+=s_c2fe(c)+';return s");'
+eval(fc);return f}function s_gi(un,pg,ss){var c="function s_c(un,pg,s"
++"s){var s=this;s.wd=window;if(!s.wd.s_c_in){s.wd.s_c_il=new Array;s."
++"wd.s_c_in=0;}s._il=s.wd.s_c_il;s._in=s.wd.s_c_in;s._il[s._in]=s;s.w"
++"d.s_c_in++;s.m=function(m){return (''+m).indexOf('{')<0};s.fl=funct"
++"ion(x,l){return x?(''+x).substring(0,l):x};s.co=function(o){if(!o)r"
++"eturn o;var n=new Object,x;for(x in o)if(x.indexOf('select')<0&&x.i"
++"ndexOf('filter')<0)n[x]=o[x];return n};s.num=function(x){x=''+x;for"
++"(var p=0;p<x.length;p++)if(('0123456789').indexOf(x.substring(p,p+1"
++"))<0)return 0;return 1};s.rep=function(x,o,n){var i=x.indexOf(o),l="
++"n.length>0?n.length:1;while(x&&i>=0){x=x.substring(0,i)+n+x.substri"
++"ng(i+o.length);i=x.indexOf(o,i+l)}return x};s.ape=function(x){var s"
++"=this,i;x=x?s.rep(escape(''+x),'+','%2B'):x;if(x&&s.charSet&&s.em=="
++"1&&x.indexOf('%u')<0&&x.indexOf('%U')<0){i=x.indexOf('%');while(i>="
++"0){i++;if(('89ABCDEFabcdef').indexOf(x.substring(i,i+1))>=0)return "
++"x.substring(0,i)+'u00'+x.substring(i);i=x.indexOf('%',i)}}return x}"
++";s.epa=function(x){var s=this;return x?unescape(s.rep(''+x,'+',' ')"
++"):x};s.pt=function(x,d,f,a){var s=this,t=x,z=0,y,r;while(t){y=t.ind"
++"exOf(d);y=y<0?t.length:y;t=t.substring(0,y);r=s.m(f)?s[f](t,a):f(t,"
++"a);if(r)return r;z+=y+d.length;t=x.substring(z,x.length);t=z<x.leng"
++"th?t:''}return ''};s.isf=function(t,a){var c=a.indexOf(':');if(c>=0"
++")a=a.substring(0,c);if(t.substring(0,2)=='s_')t=t.substring(2);retu"
++"rn (t!=''&&t==a)};s.fsf=function(t,a){var s=this;if(s.pt(a,',','isf"
++"',t))s.fsg+=(s.fsg!=''?',':'')+t;return 0};s.fs=function(x,f){var s"
++"=this;s.fsg='';s.pt(x,',','fsf',f);return s.fsg};s.c_d='';s.c_gdf=f"
++"unction(t,a){var s=this;if(!s.num(t))return 1;return 0};s.c_gd=func"
++"tion(){var s=this,d=s.wd.location.hostname,n=s.cookieDomainPeriods,"
++"p;if(d&&!s.c_d){n=n?parseInt(n):2;n=n>2?n:2;p=d.lastIndexOf('.');wh"
++"ile(p>=0&&n>1){p=d.lastIndexOf('.',p-1);n--}s.c_d=p>0&&s.pt(d,'.','"
++"c_gdf',0)?d.substring(p):''}return s.c_d};s.c_r=function(k){var s=t"
++"his;k=s.ape(k);var c=' '+s.d.cookie,i=c.indexOf(' '+k+'='),e=i<0?i:"
++"c.indexOf(';',i),v=i<0?'':s.epa(c.substring(i+2+k.length,e<0?c.leng"
++"th:e));return v!='[[B]]'?v:''};s.c_w=function(k,v,e){var s=this,d=s"
++".c_gd(),l=s.cookieLifetime,t;v=''+v;l=l?(''+l).toUpperCase():'';if("
++"e&&l!='SESSION'&&l!='NONE'){t=(v!=''?parseInt(l?l:0):-60);if(t){e=n"
++"ew Date;e.setTime(e.getTime()+(t*1000))}}if(k&&l!='NONE'){s.d.cooki"
++"e=k+'='+s.ape(v!=''?v:'[[B]]')+'; path=/;'+(e&&l!='SESSION'?' expir"
++"es='+e.toGMTString()+';':'')+(d?' domain='+d+';':'');return s.c_r(k"
++")==v}return 0};s.eh=function(o,e,r,f){var s=this,b='s_'+e+'_'+s._in"
++",n=-1,l,i,x;if(!s.ehl)s.ehl=new Array;l=s.ehl;for(i=0;i<l.length&&n"
++"<0;i++){if(l[i].o==o&&l[i].e==e)n=i}if(n<0){n=i;l[n]=new Object}x=l"
++"[n];x.o=o;x.e=e;f=r?x.b:f;if(r||f){x.b=r?0:o[e];x.o[e]=f}if(x.b){x."
++"o[b]=x.b;return b}return 0};s.cet=function(f,a,t,o,b){var s=this,r;"
++"if(s.isie&&a.apv>=5)eval('try{r=s.m(f)?s[f](a):f(a)}catch(e){r=s.m("
++"t)?s[t](e):t(e)}');else{if(s.ismac&&s.u.indexOf('MSIE 4')>=0)r=s.m("
++"b)?s[b](a):b(a);else{s.eh(s.wd,'onerror',0,o);r=s.m(f)?s[f](a):f(a)"
++";s.eh(s.wd,'onerror',1)}}return r};s.gtfset=function(e){var s=this;"
++"return s.tfs};s.gtfsoe=new Function('e','var s=s_c_il['+s._in+'];s."
++"eh(window,\"onerror\",1);s.etfs=1;var c=s.t();if(c)s.d.write(c);s.e"
++"tfs=0;return true');s.gtfsfb=function(a){return window};s.gtfsf=fun"
++"ction(w){var s=this,p=w.parent,l=w.location;s.tfs=w;if(p&&p.locatio"
++"n!=l&&p.location.host==l.host){s.tfs=p;return s.gtfsf(s.tfs)}return"
++" s.tfs};s.gtfs=function(){var s=this;if(!s.tfs){s.tfs=s.wd;if(!s.et"
++"fs)s.tfs=s.cet('gtfsf',s.tfs,'gtfset',s.gtfsoe,'gtfsfb')}return s.t"
++"fs};s.ca=function(){var s=this,imn='s_i_'+s.fun;if(s.d.images&&s.ap"
++"v>=3&&!s.isopera&&(s.ns6<0||s.apv>=6.1)){s.ios=1;if(!s.d.images[imn"
++"]&&(!s.isns||(s.apv<4||s.apv>=5))){s.d.write('<im'+'g name=\"'+imn+"
++"'\" height=1 width=1 border=0 alt=\"\">');if(!s.d.images[imn])s.ios"
++"=0}}};s.mr=function(sess,q,ta){var s=this,ns=s.visitorNamespace,unc"
++"=s.rep(s.fun,'_','-'),imn='s_i_'+s.fun,im,b,e,rs='http'+(s.ssl?'s':"
++"'')+'://'+(ns?ns:(s.ssl?'102':unc))+'.122.2O7.net/b/ss/'+s.un+'/1/H"
++".2-pdv-2/'+sess+'?[AQB]&ndh=1'+(q?q:'')+(s.q?s.q:'')+'&[AQE]';if(s."
++"isie&&!s.ismac){if(s.apv>5.5)rs=s.fl(rs,4095);else rs=s.fl(rs,2047)"
++"}if(s.ios){im=s.wd[imn]?s.wd[imn]:s.d.images[imn];if(!im)im=s.wd[im"
++"n]=new Image;im.src=rs;if(rs.indexOf('&pe=')>=0&&(!ta||ta=='_self'|"
++"|ta=='_top'||(s.wd.name&&ta==s.wd.name))){b=e=new Date;while(e.getT"
++"ime()-b.getTime()<500)e=new Date}return ''}return '<im'+'g sr'+'c="
++"\"'+rs+'\" width=1 height=1 border=0 alt=\"\">'};s.gg=function(v){v"
++"ar s=this;return s.wd['s_'+v]};s.glf=function(t,a){if(t.substring(0"
++",2)=='s_')t=t.substring(2);var s=this,v=s.gg(t);if(v)s[t]=v};s.gl=f"
++"unction(v){var s=this;s.pt(v,',','glf',0)};s.gv=function(v){var s=t"
++"his;return s['vpm_'+v]?s['vpv_'+v]:s[v]};s.havf=function(t,a){var s"
++"=this,b=t.substring(0,4),x=t.substring(4),n=parseInt(x),k='g_'+t,m="
++"'vpm_'+t,q=t,v=s.linkTrackVars,e=s.linkTrackEvents;s[k]=s.gv(t);if("
++"s.lnk||s.eo){v=v?v+','+s.vl_l:'';if(v&&!s.pt(v,',','isf',t))s[k]=''"
++";if(t=='events'&&e)s[k]=s.fs(s[k],e)}s[m]=0;if(t=='pageURL')q='g';e"
++"lse if(t=='referrer')q='r';else if(t=='vmk')q='vmt';else if(t=='cha"
++"rSet'){q='ce';if(s[k]&&s.em==2)s[k]='UTF-8'}else if(t=='visitorName"
++"space')q='ns';else if(t=='cookieDomainPeriods')q='cdp';else if(t=='"
++"cookieLifetime')q='cl';else if(t=='visitVariableProvider')q='vvp';e"
++"lse if(t=='currencyCode')q='cc';else if(t=='channel')q='ch';else if"
++"(t=='campaign')q='v0';else if(s.num(x)) {if(b=='prop')q='c'+n;else "
++"if(b=='eVar')q='v'+n;else if(b=='hier'){q='h'+n;s[k]=s.fl(s[k],255)"
++"}}if(s[k]&&t!='linkName'&&t!='linkType')s.qav+='&'+q+'='+s.ape(s[k]"
++");return ''};s.hav=function(){var s=this;s.qav='';s.pt(s.vl_t,',','"
++"havf',0);return s.qav};s.lnf=function(t,h){t=t?t.toLowerCase():'';h"
++"=h?h.toLowerCase():'';var te=t.indexOf('=');if(t&&te>0&&h.indexOf(t"
++".substring(te+1))>=0)return t.substring(0,te);return ''};s.ln=funct"
++"ion(h){var s=this,n=s.linkNames;if(n)return s.pt(n,',','lnf',h);ret"
++"urn ''};s.ltdf=function(t,h){t=t?t.toLowerCase():'';h=h?h.toLowerCa"
++"se():'';var qi=h.indexOf('?');h=qi>=0?h.substring(0,qi):h;if(t&&h.s"
++"ubstring(h.length-(t.length+1))=='.'+t)return 1;return 0};s.ltef=fu"
++"nction(t,h){t=t?t.toLowerCase():'';h=h?h.toLowerCase():'';if(t&&h.i"
++"ndexOf(t)>=0)return 1;return 0};s.lt=function(h){var s=this,lft=s.l"
++"inkDownloadFileTypes,lef=s.linkExternalFilters,lif=s.linkInternalFi"
++"lters;lif=lif?lif:s.wd.location.hostname;h=h.toLowerCase();if(s.tra"
++"ckDownloadLinks&&lft&&s.pt(lft,',','ltdf',h))return 'd';if(s.trackE"
++"xternalLinks&&(lef||lif)&&(!lef||s.pt(lef,',','ltef',h))&&(!lif||!s"
++".pt(lif,',','ltef',h)))return 'e';return ''};s.lc=new Function('e',"
++"'var s=s_c_il['+s._in+'],b=s.eh(this,\"onclick\");s.lnk=s.co(this);"
++"s.t();s.lnk=0;if(b)return this[b](e);return true');s.bc=new Functio"
++"n('e','var s=s_c_il['+s._in+'];if(s.d&&s.d.all&&s.d.all.cppXYctnr)r"
++"eturn;s.eo=e.srcElement?e.srcElement:e.target;s.t();s.eo=0');s.ot=f"
++"unction(o){var a=o.type,b=o.tagName;return (a&&a.toUpperCase?a:b&&b"
++".toUpperCase?b:o.href?'A':'').toUpperCase()};s.oid=function(o){var "
++"s=this,t=s.ot(o),p=o.protocol,c=o.onclick,n='',x=0;if(!o.s_oid){if("
++"o.href&&(t=='A'||t=='AREA')&&(!c||!p||p.toLowerCase().indexOf('java"
++"script')<0))n=o.href;else if(c){n=s.rep(s.rep(s.rep(s.rep(''+c,\"\\"
++"r\",''),\"\\n\",''),\"\\t\",''),' ','');x=2}else if(o.value&&(t=='I"
++"NPUT'||t=='SUBMIT')){n=o.value;x=3}else if(o.src&&t=='IMAGE')n=o.sr"
++"c;if(n){o.s_oid=s.fl(n,100);o.s_oidt=x}}return o.s_oid};s.rqf=funct"
++"ion(t,un){var s=this,e=t.indexOf('='),u=e>=0?','+t.substring(0,e)+'"
++",':'';return u&&u.indexOf(','+un+',')>=0?s.epa(t.substring(e+1)):''"
++"};s.rq=function(un){var s=this,c=un.indexOf(','),v=s.c_r('s_sq'),q="
++"'';if(c<0)return s.pt(v,'&','rqf',un);return s.pt(un,',','rq',0)};s"
++".sqp=function(t,a){var s=this,e=t.indexOf('='),q=e<0?'':s.epa(t.sub"
++"string(e+1));s.sqq[q]='';if(e>=0)s.pt(t.substring(0,e),',','sqs',q)"
++";return 0};s.sqs=function(un,q){var s=this;s.squ[un]=q;return 0};s."
++"sq=function(q){var s=this,k='s_sq',v=s.c_r(k),x,c=0;s.sqq=new Objec"
++"t;s.squ=new Object;s.sqq[q]='';s.pt(v,'&','sqp',0);s.pt(s.un,',','s"
++"qs',q);v='';for(x in s.squ)s.sqq[s.squ[x]]+=(s.sqq[s.squ[x]]?',':''"
++")+x;for(x in s.sqq)if(x&&s.sqq[x]&&(x==q||c<2)){v+=(v?'&':'')+s.sqq"
++"[x]+'='+s.ape(x);c++}return s.c_w(k,v,0)};s.wdl=new Function('e','v"
++"ar s=s_c_il['+s._in+'],r=true,b=s.eh(s.wd,\"onload\"),i,o,oc;if(b)r"
++"=this[b](e);for(i=0;i<s.d.links.length;i++){o=s.d.links[i];oc=o.onc"
++"lick?\"\"+o.onclick:\"\";if((oc.indexOf(\"s_gs(\")<0||oc.indexOf(\""
++".s_oc(\")>=0)&&oc.indexOf(\".tl(\")<0)s.eh(o,\"onclick\",0,s.lc);}r"
++"eturn r');s.wds=function(){var s=this;if(s.apv>3&&(!s.isie||!s.isma"
++"c||s.apv>=5)){if(s.b&&s.b.attachEvent)s.b.attachEvent('onclick',s.b"
++"c);else if(s.b&&s.b.addEventListener)s.b.addEventListener('click',s"
++".bc,false);else s.eh(s.wd,'onload',0,s.wdl)}};s.vs=function(x){var "
++"s=this,v=s.visitorSampling,g=s.visitorSamplingGroup,k='s_vsn_'+s.un"
++"+(g?'_'+g:''),n=s.c_r(k),e=new Date,y=e.getYear();e.setYear(y+10+(y"
++"<1900?1900:0));if(v){v*=100;if(!n){if(!s.c_w(k,x,e))return 0;n=x}if"
++"(n%10000>v)return 0}return 1};s.dyasmf=function(t,m){if(t&&m&&m.ind"
++"exOf(t)>=0)return 1;return 0};s.dyasf=function(t,m){var s=this,i=t?"
++"t.indexOf('='):-1,n,x;if(i>=0&&m){var n=t.substring(0,i),x=t.substr"
++"ing(i+1);if(s.pt(x,',','dyasmf',m))return n}return 0};s.uns=functio"
++"n(){var s=this,x=s.dynamicAccountSelection,l=s.dynamicAccountList,m"
++"=s.dynamicAccountMatch,n,i;s.un.toLowerCase();if(x&&l){if(!m)m=s.wd"
++".location.host;if(!m.toLowerCase)m=''+m;l=l.toLowerCase();m=m.toLow"
++"erCase();n=s.pt(l,';','dyasf',m);if(n)s.un=n}i=s.un.indexOf(',');s."
++"fun=i<0?s.un:s.un.substring(0,i)};s.t=function(){var s=this,trk=1,t"
++"m=new Date,sed=Math&&Math.random?Math.floor(Math.random()*100000000"
++"00000):tm.getTime(),sess='s'+Math.floor(tm.getTime()/10800000)%10+s"
++"ed,yr=tm.getYear(),vt=tm.getDate()+'/'+tm.getMonth()+'/'+(yr<1900?y"
++"r+1900:yr)+' '+tm.getHours()+':'+tm.getMinutes()+':'+tm.getSeconds("
++")+' '+tm.getDay()+' '+tm.getTimezoneOffset(),tfs=s.gtfs(),ta='',q='"
++"',qs='';s.uns();if(!s.q){var tl=tfs.location,x='',c='',v='',p='',bw"
++"='',bh='',j='1.0',k=s.c_w('s_cc','true',0)?'Y':'N',hp='',ct='',pn=0"
++",ps;if(s.apv>=4)x=screen.width+'x'+screen.height;if(s.isns||s.isope"
++"ra){if(s.apv>=3){j='1.1';v=s.n.javaEnabled()?'Y':'N';if(s.apv>=4){j"
++"='1.2';c=screen.pixelDepth;bw=s.wd.innerWidth;bh=s.wd.innerHeight;i"
++"f(s.apv>=4.06)j='1.3'}}s.pl=s.n.plugins}else if(s.isie){if(s.apv>=4"
++"){v=s.n.javaEnabled()?'Y':'N';j='1.2';c=screen.colorDepth;if(s.apv>"
++"=5){bw=s.d.documentElement.offsetWidth;bh=s.d.documentElement.offse"
++"tHeight;j='1.3';if(!s.ismac&&s.b){s.b.addBehavior('#default#homePag"
++"e');hp=s.b.isHomePage(tl)?\"Y\":\"N\";s.b.addBehavior('#default#cli"
++"entCaps');ct=s.b.connectionType}}}else r=''}if(s.pl)while(pn<s.pl.l"
++"ength&&pn<30){ps=s.fl(s.pl[pn].name,100)+';';if(p.indexOf(ps)<0)p+="
++"ps;pn++}s.q=(x?'&s='+s.ape(x):'')+(c?'&c='+s.ape(c):'')+(j?'&j='+j:"
++"'')+(v?'&v='+v:'')+(k?'&k='+k:'')+(bw?'&bw='+bw:'')+(bh?'&bh='+bh:'"
++"')+(ct?'&ct='+s.ape(ct):'')+(hp?'&hp='+hp:'')+(p?'&p='+s.ape(p):'')"
++"}if(s.usePlugins)s.doPlugins(s);var l=s.wd.location,r=tfs.document."
++"referrer;if(!s.pageURL)s.pageURL=s.fl(l?l:'',255);if(!s.referrer)s."
++"referrer=s.fl(r?r:'',255);if(s.lnk||s.eo){var o=s.eo?s.eo:s.lnk;if("
++"!o)return '';var p=s.gv('pageName'),w=1,t=s.ot(o),n=s.oid(o),x=o.s_"
++"oidt,h,l,i,oc;if(s.eo&&o==s.eo){while(o&&!n&&t!='BODY'){o=o.parentE"
++"lement?o.parentElement:o.parentNode;if(!o)return '';t=s.ot(o);n=s.o"
++"id(o);x=o.s_oidt}oc=o.onclick?''+o.onclick:'';if((oc.indexOf(\"s_gs"
++"(\")>=0&&oc.indexOf(\".s_oc(\")<0)||oc.indexOf(\".tl(\")>=0)return "
++"''}ta=o.target;h=o.href?o.href:'';i=h.indexOf('?');h=s.linkLeaveQue"
++"ryString||i<0?h:h.substring(0,i);l=s.linkName?s.linkName:s.ln(h);t="
++"s.linkType?s.linkType.toLowerCase():s.lt(h);if(t&&(h||l))q+='&pe=ln"
++"k_'+(t=='d'||t=='e'?s.ape(t):'o')+(h?'&pev1='+s.ape(h):'')+(l?'&pev"
++"2='+s.ape(l):'');else trk=0;if(s.trackInlineStats){if(!p){p=s.gv('p"
++"ageURL');w=0}t=s.ot(o);i=o.sourceIndex;if(s.gg('objectID')){n=s.gg("
++"'objectID');x=1;i=1}if(p&&n&&t)qs='&pid='+s.ape(s.fl(p,255))+(w?'&p"
++"idt='+w:'')+'&oid='+s.ape(s.fl(n,100))+(x?'&oidt='+x:'')+'&ot='+s.a"
++"pe(t)+(i?'&oi='+i:'')}}if(!trk&&!qs)return '';var code='';if(trk&&s"
++".vs(sed))code=s.mr(sess,(vt?'&t='+s.ape(vt):'')+s.hav()+q+(qs?qs:s."
++"rq(s.un)),ta);s.sq(trk?'':qs);s.lnk=s.eo=s.linkName=s.linkType=s.wd"
++".s_objectID='';return code};s.tl=function(o,t,n){var s=this;s.lnk=s"
++".co(o);s.linkType=t;s.linkName=n;s.t()};s.ssl=(s.wd.location.protoc"
++"ol.toLowerCase().indexOf('https')>=0);s.d=document;s.b=s.d.body;s.n"
++"=navigator;s.u=s.n.userAgent;s.ns6=s.u.indexOf('Netscape6/');var ap"
++"n=s.n.appName,v=s.n.appVersion,ie=v.indexOf('MSIE '),i;if(v.indexOf"
++"('Opera')>=0||s.u.indexOf('Opera')>=0)apn='Opera';s.isie=(apn=='Mic"
++"rosoft Internet Explorer');s.isns=(apn=='Netscape');s.isopera=(apn="
++"='Opera');s.ismac=(s.u.indexOf('Mac')>=0);if(ie>0){s.apv=parseInt(i"
++"=v.substring(ie+5));if(s.apv>3)s.apv=parseFloat(i)}else if(s.ns6>0)"
++"s.apv=parseFloat(s.u.substring(s.ns6+10));else s.apv=parseFloat(v);"
++"s.em=0;if(String.fromCharCode){i=escape(String.fromCharCode(256)).t"
++"oUpperCase();s.em=(i=='%C4%80'?2:(i=='%U0100'?1:0))}s.un=un;s.uns()"
++";s.vl_l='vmk,charSet,visitorNamespace,cookieDomainPeriods,cookieLif"
++"etime,visitVariableProvider,pageName,pageURL,referrer,currencyCode,"
++"purchaseID';s.vl_t=s.vl_l+',channel,server,pageType,campaign,state,"
++"zip,events,products,linkName,linkType';for(var n=1;n<51;n++)s.vl_t+"
++"=',prop'+n+',eVar'+n+',hier'+n;s.vl_g=s.vl_t+',trackDownloadLinks,t"
++"rackExternalLinks,trackInlineStats,linkLeaveQueryString,linkDownloa"
++"dFileTypes,linkExternalFilters,linkInternalFilters,linkNames';if(pg"
++")s.gl(s.vl_g);if(!ss){s.wds();s.ca()}}",
+l=window.s_c_il,n=navigator,u=n.userAgent,v=n.appVersion,e=v.indexOf(
+'MSIE '),m=u.indexOf('Netscape6/'),a,i,s;if(l)for(i=0;i<l.length;i++){
+s=l[i];s.uns();if(s.un==un)return s;else if(s.pt(s.un,',','isf',un)){
+s=s.co(s);s.un=un;s.uns();return s}}if(e>0){a=parseInt(i=v.substring(e
++5));if(a>3)a=parseFloat(i)}else if(m>0)a=parseFloat(u.substring(m+10)
+);else a=parseFloat(v);if(a>=5&&v.indexOf('Opera')<0&&u.indexOf(
+'Opera')<0){eval(c);return new s_c(un,pg,ss)}else s=s_c2f(c);return s(
+un,pg,ss)}
+/* Set any SiteCatalyst variables here */
+/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
+var s_code=s.t();if(s_code)document.write(s_code)
+
+
diff --git a/spec/cql_files/sru-title.gif b/spec/cql_files/sru-title.gif
new file mode 100644 (file)
index 0000000..a1deafb
Binary files /dev/null and b/spec/cql_files/sru-title.gif differ
diff --git a/spec/cql_files/sru.css b/spec/cql_files/sru.css
new file mode 100644 (file)
index 0000000..17f7a60
--- /dev/null
@@ -0,0 +1,288 @@
+body {
+       text-align: center;
+       background-color: #eeeeee;
+       font: 11pt Verdana, Arial, Helvetica, sans-serif;
+       margin: 0;
+       padding: 0;
+       border: 0;
+}
+a#skip {
+       position: absolute;
+       top:-100px;
+}
+#container {
+       text-align: left;
+       width: 740px;
+       background-color: #ffffff;
+       border: 1px solid #000000;
+       margin-right: auto;
+       margin-left: auto;
+}
+#header {
+       width: 740px;
+       height: 100px;
+}
+#highlevel {
+       width: 740px;
+       height: 30px;
+       background-color: #333333;
+}
+#top-left {
+       margin-left: 8px;
+       margin-top: 5px;
+       margin-bottom: 0px;
+       float: left;
+       font: 8pt/14pt Verdana, Arial, Helvetica, sans-serif;
+}
+a.white {
+       color: #EEEEEE;
+       text-decoration: none;
+}
+a.white:hover {
+       color: #FFFFFF;
+       text-decoration: underline;
+}
+.white-text {
+       color: #EEEEEE;
+}
+#top-right {
+       margin-top: 3px;
+       float: right;
+}
+.drop-box {
+       font-size: 8pt;
+       background: #FEFBF2;
+}
+form {
+       margin-bottom: 0;
+}
+form input.button {
+       margin-right: 5px;
+       background-color: #ffffff;
+       font: bold 8pt Verdana, Arial, Helvetica, sans-serif;
+       color: #de5901;
+       border: 1px solid #F8E7B1;
+}
+h1.graphic {
+       valign: top;
+       width: 740px;
+       height: 60px;
+       margin: 0px;
+       padding: 0px;
+       border: 0px;
+}
+#body {
+       clear: both;
+       padding-left: 5px;
+       padding-right: 5px;
+       margin-left: 5px;
+       margin-right: 5px;
+       padding-top: 0px;
+       padding-bottom: 10px;
+       margin-top: 5px;
+}
+.box {
+       clear: both;
+       border: 1px dotted #333333;
+       align: center;
+       margin: 2px;
+       padding: 8px;
+       font-family: Verdana, Arial, Helvetica, sans-serif;
+       font-size: 9pt;
+       line-height: 20px;
+       background-color: #f9f4f3;
+}
+.box2 {
+       clear: both;
+       border: thin dashed #333333;
+       align: left;
+       width: 600px;
+       padding: 8px;
+       font-family: Verdana, Arial, Helvetica, sans-serif;
+       font-size: 9pt;
+       line-height: 20px;
+       background-color: #fbf0e8;
+}
+.box3 {
+       border: 1px dotted #de5901;
+       float: right;
+       width: 220px;
+       padding: 8px;
+       margin: 5px;
+       background-color: #FFF9E5;
+       font-size: 9pt;
+}
+ul {
+       margin-top: 2px;
+       margin-bottom: 23px;
+       list-style-image: url(images/arrow-bullet.gif);
+       margin-left: 25px;
+       padding-left: 0px;
+}
+ul li {
+       padding-left: -20px;
+       font: 10pt/17pt Verdana, Arial, Helvetica, sans-serif;
+}
+ol li {
+       padding-left: -20px;
+       font: 10pt/17pt Verdana, Arial, Helvetica, sans-serif;
+}
+
+ul.news li {
+       padding-left: -20px;
+       font: 9pt/15pt verdana, helvetica, sans-serif;
+}
+ul li ul {
+       margin-top: 0px;
+       margin-bottom: 0px;
+       list-style-image: url(images/arrow-bullet2.gif);
+       margin-left: 25px;
+       padding-left: 0px;
+}
+ul li ul li {
+       padding-left: -20px;
+       font: 10pt/170% Verdana, Helvetica, sans-serif;
+}
+h1 {
+       color: #4f241a;
+       margin-top: 15px;
+       margin-bottom: 10px;
+       padding: 0px;
+       font-family: Georgia, "Times New Roman", Times, serif;
+       font-size: 16pt;
+       font-weight: 600;
+       font-variant: small-caps;
+
+}
+h1.homepage {
+       margin: 0px;
+       padding: 0px;
+}
+h2.news {
+       color: #56483f;
+       font-size: 14pt;
+       font-family: "Times New Roman", Times, serif;
+       margin-top: 0px;
+       margin-right: 0px;
+       margin-bottom: 5px;
+       margin-left: 0px;
+       padding-top: 0px;
+       padding-right: 0px;
+       padding-bottom: 0px;
+       padding-left: 0px;
+       font-variant: small-caps;
+}
+h2 {
+       color: #fb7e2b;
+       font-size: 14pt;
+       font-family: Arial, Helvetica, sans-serif;
+       margin-top: 5px;
+       margin-right: 0px;
+       margin-bottom: 10px;
+       margin-left: 0px;
+       padding-top: 5px;
+       padding-right: 0px;
+       padding-bottom: 0px;
+       padding-left: 0px;
+       font-weight: 400;
+       font-variant: normal;
+
+}
+h3 {
+       color: #69391a;
+       font-size: 12pt;
+       font-family: Arial, Helvetica, sans-serif;
+       margin-top: 5px;
+       margin-right: 0px;
+       margin-bottom: 10px;
+       margin-left: 0px;
+       padding-top: 5px;
+       padding-right: 0px;
+       padding-bottom: 0px;
+       padding-left: 0px;
+       font-weight: 600;
+       font-style: italic;
+
+
+}
+h3.homepage {
+       margin: 0px;
+       padding: 0px;
+}
+h4 {
+       color: #666666;
+       font-size: 11pt;
+       font-family: Verdana, Arial, Helvetica, sans-serif;
+       margin-top: 5px;
+       margin-right: 0px;
+       margin-bottom: 10px;
+       margin-left: 0px;
+       padding-top: 5px;
+       padding-right: 0px;
+       padding-bottom: 0px;
+       padding-left: 0px;
+}
+#footer {
+       width: 740px;
+       height: 45px;
+       background-color: #333333;
+}
+#bottom-left {
+       margin-left: 8px;
+       margin-top: 6px;
+       margin-bottom: 0px;
+       float: left;
+       font: 8pt/14pt Verdana, Arial, Helvetica, sans-serif;
+}
+#contactus {
+       margin-top: 6px;
+       margin-right: 5px;
+       float: right;
+       text-align: right;
+       font: 8pt verdana, helvetica, sans-serif;
+}
+#top-bread {
+       margin-left: 10px;
+       margin-top: -6px;
+       font: 8pt verdana, helvetica, sans-serif;
+}
+#bottom-bread {
+       margin-left: 0px;
+       margin-bottom: 0px;
+       margin-top: 20px;
+       font: 8pt verdana, helvetica, sans-serif;
+}
+.selected {
+       color: #69391a; 
+       font-weight: bold;
+}
+p {
+       font: 10pt/18pt verdana, helvetica, sans-serif;
+       margin-top: 5px;
+       margin-bottom: 10px;
+}
+.progdesc {
+       color: #FFFFEE;
+       font-weight: bold;
+}
+pre {
+       font-family: "Courier New", Courier, mono;
+       font-size: 9pt;
+}
+.navigation {
+       font-size: 8pt;
+       line-height: 14pt;
+}
+.small {
+       font-size: 9pt;
+       color: #666666;
+       line-height: 13pt;
+}
+.pdf {
+       font-family: Verdana, Arial, Helvetica, sans-serif;
+       font-size: 8pt;
+       color: #666666;
+}
+.orange
+
+{color:#FF8000;}
\ No newline at end of file
diff --git a/spec/cql_files/stdLauncher.js b/spec/cql_files/stdLauncher.js
new file mode 100644 (file)
index 0000000..88f4db4
--- /dev/null
@@ -0,0 +1,258 @@
+// Customer: Library of Congress
+// Version : DHTML Trigger 2.1
+var popUpURL = "//www.foreseeresults.com/survey/display"; // base URL to the survey
+var ckAlreadyShown = triggerParms["ascookie"]; // name of the persistent/session cookie
+var ckLoyaltyCount = triggerParms["lfcookie"]; // name of the loyalty count cookie
+var fullURL=null;
+var oldURL=null;
+var fsr_browser =null;
+var winOptions = "width= 1,height= 1,top= 4000,left= 4000,resizable=yes,scrollbars=yes";
+var persistentExpires = new Date(); // persistent cookie expiration
+persistentExpires.setTime(persistentExpires.getTime() + (triggerParms["rw"]*60*1000));
+function ForeCStdGetCookie (name) {
+       var arg = name + "=";
+       var alen = arg.length;
+       var clen = document.cookie.length;
+       var i = 0;
+       while (i < clen) {
+               var j = i + alen;
+               if (document.cookie.substring(i, j) == arg) {
+                       return ForeCStdGetCookieVal (j);
+               }
+               i = document.cookie.indexOf(" ", i) + 1;
+               if (i == 0) {
+                       break;
+               }
+       }
+       return null;
+}
+function fsr_IEshowWindow() {
+       if (eval("document.all.fsr_window").filters.revealTrans.status == 0) {
+               eval("document.all.fsr_window").filters.revealTrans.transition = 23 ;
+               eval("document.all.fsr_window").filters.revealTrans.Apply();
+               eval("document.all.fsr_window").style.visibility = 'visible';
+               eval("document.all.fsr_window").filters.revealTrans.Play();
+       } else {
+               eval("document.all.fsr_window").style.visibility = 'visible';
+       }
+}
+function fsr_hideWindow() {
+               if (fsr_browser=="fsr_ie"){
+                       if (eval("document.all.fsr_window").filters.revealTrans.status == 0)  {
+                               eval("document.all.fsr_window").filters.revealTrans.transition = 23;
+                               eval("document.all.fsr_window").filters.revealTrans.Apply();
+                               eval("document.all.fsr_window").style.visibility = 'hidden';
+                               eval("document.all.fsr_window").filters.revealTrans.Play();
+                       } else {
+                               eval("document.all.fsr_window").style.visibility = 'hidden';
+                       }
+               } else {
+                       document.getElementById("fsr_window").style.visibility = 'hidden';
+               }
+}
+function fsr_showWindow() {
+       document.getElementById("fsr_window").style.visibility = 'visible';
+}
+function ForeCStdSetCookie (name, value) {
+       var argv = ForeCStdSetCookie.arguments;
+       var argc = ForeCStdSetCookie.arguments.length;
+       var expires = (argc > 2) ? argv[2] : null;
+       var path = (argc > 3) ? argv[3] : null;
+       var domain = (argc > 4) ? argv[4] : null;
+       var secure = (argc > 5) ? argv[5] : false;
+       document.cookie = name + "=" + escape (value) +
+       ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
+       ((path == null) ? "" : ("; path=" + path)) +
+       ((domain == null) ? "" : ("; domain=" + domain)) +
+       ((secure == true) ? "; secure" : "");
+}
+function ForeCStdGetCookieVal(offset) {
+       var endstr = document.cookie.indexOf (";", offset);
+       if (endstr == -1) {
+               endstr = document.cookie.length;
+       }
+       return unescape(document.cookie.substring(offset, endstr));
+}
+function specialEscape(str) {
+       var translated = "";
+       var i;
+       var found = 0;
+       for(i = 0; (found = str.indexOf('+', found)) != -1; ) {
+               translated += str.substring(i, found) + "%2B";
+               i = found + 1;
+               found++;
+       }
+       translated += str.substring(i, str.length);
+       return translated;
+}
+function Pop(){
+       var myPopUp = window.open(fullURL, 'survey',winOptions);
+       if (  myPopUp && myPopUp.open && !myPopUp.closed) {
+               if (triggerParms["pu"] == 1){
+                       self.focus();
+               } else {
+                       myPopUp.focus();
+               }
+       }
+}
+function checkMAC(){
+       if(navigator.platform.indexOf("Win32") >= 0){
+               return false;
+       } else {
+               return true;
+       }
+}
+function currentLocationExcluded() {
+       var parentURLPath = window.location.pathname;//location path
+       for(key in excludeList) {
+               if(parentURLPath.indexOf(excludeList[key]) != -1) {
+                       return true;
+               }
+       }
+       return false;
+}
+function Poll() {
+       //sme
+       if(triggerParms["dt"] == 1) {
+               return;
+       }
+       if(currentLocationExcluded()) {
+               return;
+       }
+       var stickyCounter = ForeCStdGetCookie(ckLoyaltyCount); // check counter cookie
+       var alreadyShown = ForeCStdGetCookie(ckAlreadyShown); // check if we already have shown survey
+       var pageCount;
+       var randNum = Math.random();
+       randNum *= 100;
+       if (stickyCounter == null) {
+               pageCount = 1;
+               ForeCStdSetCookie(ckLoyaltyCount, pageCount, null,'/',triggerParms["domain"]);
+               stickyCounter = ForeCStdGetCookie(ckLoyaltyCount);
+       }
+       if (stickyCounter != null) {
+               pageCount = stickyCounter;
+               if(pageCount >= triggerParms["lf"]) {
+                       if(alreadyShown == null) {
+                               if (triggerParms["rso"] == 1 && triggerParms["aro"] == 1) {
+                                       triggerParms["sp"] = 100.0; // Update Ssample percentage
+                               }
+                               if(randNum <= triggerParms["sp"]) {
+                                       var fsr_mac= checkMAC();
+                                       fsr_browser="fsr_nn6";
+                                       if(document.all){
+                                               fsr_browser = "fsr_ie";
+                                       }
+                                       if(document.layers) {
+                                               fsr_browser = "fsr_nn";
+                                       }
+                                       fullURL = popUpURL + "?" + "width=" + triggerParms["width"] +
+                                       "&height=" + triggerParms["height"] +
+                                       "&cid=" + specialEscape(escape(triggerParms["cid"])) + "&mid=" + specialEscape(escape(triggerParms["mid"]));
+                                       if ((triggerParms["omb"] ) != null) {
+                                               fullURL += "&omb=" + escape(triggerParms["omb"]);
+                                       }
+                                       if ((triggerParms["cmetrics"] ) != null) {
+                                               fullURL += "&cmetrics=" + escape(triggerParms["cmetrics"]);
+                                       }
+                                       if (triggerParms["olpu"] == 1) {
+                                               fullURL += "&olpu=1";
+                                       }
+                                       if (triggerParms["rso"] == 1) {
+                                               fullURL += "&rso=1&rct=" + triggerParms["rct"] + "&rds=" + triggerParms["rds"] + "&mrd=" + triggerParms["mrd"] + "&rws=" + triggerParms["rw"];
+                                       }
+                                       if (triggerParms["capturePageView"] == 1) {
+                                               triggerParms["cpp_3"] = "PageView:"+ pageCount; // customer parameter 3 - Page View
+                                       }
+                                       if ((triggerParms["midexp"] ) != null) {
+                                               fullURL += "&ndc=1&fsexp=5256000&midexp=" + triggerParms["midexp"];
+                                       }
+                                       var customerParams = "";
+                                       for(paramKey in triggerParms) {
+                                               if(paramKey.substring(0,3) == "cpp"){
+                                                       fullURL += "&" + paramKey + "=" + escape(triggerParms[paramKey]);
+                                               }
+                                       }
+                                       oldURL=fullURL;
+                                       fullURL+= "&cpp_4=" + escape("popupStats:window=normal browser="+fsr_browser+" mac="+ fsr_mac);
+                                       if (triggerParms["rso"] != 1) {
+                                               if(triggerParms["npc"] == 1) {
+                                                       ForeCStdSetCookie(ckAlreadyShown, 'true',null,'/',triggerParms["domain"]);
+                                               } else {
+                                                       ForeCStdSetCookie(ckAlreadyShown, 'true', persistentExpires,'/',triggerParms["domain"]);
+                                               }
+                                       }
+                                       var myPopUp = window.open(fullURL, 'survey',winOptions);
+                                       if (  myPopUp && myPopUp.open && !myPopUp.closed) {
+                                               if (triggerParms["pu"] == 1){
+                                                       self.focus();
+                                               } else {
+                                                       myPopUp.focus(); //focusing on survey window
+                                               }
+                                       } else {
+                                               if (fsr_mac==false && (fsr_browser != "fsr_nn") && (triggerParms["dhtml"] == 1)) {
+                                                       fullURL=oldURL;
+                                                       fullURL+= "&cpp_4=" + escape("popupStats:window=dhtml browser="+fsr_browser+" mac="+ fsr_mac);
+                                                       fsr_sw = screen.width;
+                                                       fsr_sh = screen.height;
+                                                       fsr_left = (fsr_sw -triggerParms["dhtmlWidth"])/2;
+                                                       fsr_top =Math.min((fsr_sh - triggerParms["dhtmlHeight"])/2,150);
+                                                       document.write( "<div id=\"fsr_window\" style=\"position:absolute; width:1px; height:1px; z-index:1; left:"+fsr_left+"px; top:"+fsr_top+"px; visibility: hidden; filter:revealTrans(Duration=0.5, Transition=23);\" >"
+                                                       +"<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#CCCCCC\"><tr><td>"
+                                                       +"<iframe id=\"cframe\" src="+"\""+triggerParms["dhtmlURL"]+"?fullURL="+fullURL+"\" width="+triggerParms["dhtmlWidth"]+" height="+triggerParms["dhtmlHeight"]+"></iframe>"
+                                                       +"</td></tr></table>"
+                                                       +"</td></tr></table></div>");
+                                                       if (fsr_browser == "fsr_ie") {
+                                                               fsr_IEshowWindow();
+                                                       } else {
+                                                               fsr_showWindow();
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               }
+               pageCount++;
+               ForeCStdSetCookie(ckLoyaltyCount, pageCount, null,'/',triggerParms["domain"]);
+       }
+}
+function callpoll(){
+        if ( ValidIP()== 0 )
+        {
+               Poll();
+        }
+
+}
+
+function ValidIP() {
+               var arrRegExp = new Array(2);
+
+               arrRegExp[0] = /^10\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/
+               arrRegExp[1] = /^140\.147\.131\.[0-9]{1,3}$/
+               //arrRegExp[2] = /^172\.16\.[0-9]{1,3}\.[0-9]{1,3}$/
+               //arrRegExp[3] = /^172\.16\.[0-9]{1,3}\.[0-9]{1,3}$/
+               //arrRegExp[4] = /^172\.17\.[0-9]{1,3}\.[0-9]{1,3}$/
+               //arrRegExp[5] = /^172\.18\.[0-9]{1,3}\.[0-9]{1,3}$/
+               //arrRegExp[6] = /^172\.19\.[0-9]{1,3}\.[0-9]{1,3}$/
+               //arrRegExp[7] = /^172\.20\.[0-9]{1,3}\.[0-9]{1,3}$/
+               //arrRegExp[8] = /^172\.21\.[0-9]{1,3}\.[0-9]{1,3}$/
+               //arrRegExp[9] = /^172\.22\.[0-9]{1,3}\.[0-9]{1,3}$/
+               //arrRegExp[10] = /^172\.23\.[0-9]{1,3}\.[0-9]{1,3}$/
+               //arrRegExp[11] = /^172\.24\.[0-9]{1,3}\.[0-9]{1,3}$/
+               //arrRegExp[12] = /^172\.25\.[0-9]{1,3}\.[0-9]{1,3}$/
+               //arrRegExp[13] = /^172\.26\.[0-9]{1,3}\.[0-9]{1,3}$/
+               //arrRegExp[14] = /^172\.27\.[0-9]{1,3}\.[0-9]{1,3}$/
+               //arrRegExp[15] = /^172\.28\.[0-9]{1,3}\.[0-9]{1,3}$/
+               //arrRegExp[16] = /^172\.29\.[0-9]{1,3}\.[0-9]{1,3}$/
+               //arrRegExp[17] = /^172\.30\.[0-9]{1,3}\.[0-9]{1,3}$/
+               //arrRegExp[18] = /^172\.31\.[0-9]{1,3}\.[0-9]{1,3}$/
+
+               var intMatch = 0;
+               for(var i = 0; i < arrRegExp.length; i++){
+                       if(arrRegExp[i].test(strIP)){
+                               intMatch = 1;
+                               break;
+                       }
+               }
+
+               return intMatch;
+}
\ No newline at end of file
diff --git a/spec/cql_files/triggerParams.js b/spec/cql_files/triggerParams.js
new file mode 100644 (file)
index 0000000..fe71a11
--- /dev/null
@@ -0,0 +1,48 @@
+// Customer: Library of Congress
+// Version : DHTML Trigger 2.1
+
+function cppUrlPatch(s) {
+       var translated = "";
+       var i;
+       var found = 0;
+       for(i = 0; (found = s.indexOf(':', found)) != -1; ) {
+               translated += s.substring(i, found) + "|";
+               i = found + 1;
+               found++;
+       }
+       translated += s.substring(i, s.length);
+       return translated;
+}
+var triggerParms = new Array();
+var excludeList = new Array();
+triggerParms["dt"] = 0; // disable trigger if 1
+triggerParms["mid"] = "MsF0ld0M1ZVEEYgQ0YBV5g=="; // model instance id
+triggerParms["cid"] = "Zg8xEcQ4h9p0s15J1kVshg=="; // customer id
+triggerParms["lf"] = 7; // loyalty factor
+triggerParms["sp"] = 2; // sample percentage
+triggerParms["npc"] = 1; // no persistent cookies if 1
+triggerParms["rw"] = 129600; // resample wait (value in minutes)
+triggerParms["pu"] = 0; // pop-under control
+triggerParms["olpu"] = 1; // On Load pop-under control
+triggerParms["lfcookie"] = "ForeseeLoyalty_MID_MsF0ld0M1Z";
+triggerParms["ascookie"] = "ForeseeSurveyShown_MsF0ld0M1Z";
+triggerParms["width"] = 420; // survey width
+triggerParms["height"] = 500; // survey height
+triggerParms["domain"] = ".loc.gov"; // domain name
+triggerParms["omb"] = "1505-0186"; // OMB number
+//triggerParms["cmetrics"] = "90010257"; // coremetrics client id
+triggerParms["cpp_1"] = "userURL:" + cppUrlPatch (window.location.href);
+triggerParms["cpp_2"] = "Browser:"+ cppUrlPatch (navigator.userAgent); // customer parameter 2 - Browser
+triggerParms["capturePageView"] = 1;
+//excludeList[0] = "/exclude/"; //trigger script will not work under this path
+//triggerParms["midexp"] = 129600; // model instance expiry value
+triggerParms["rso"]= 0; //user has chosen to use Retry Survey Option
+triggerParms["aro"]= 0; //user has chosen to use Auto Retry Option, with SP=100
+//triggerParms["rct"]= 1; //The maximum number of times allowed to serve a survey to a user
+//triggerParms["rds"]= 1; //The minimum number of days to wait to serve a survey repeatedly
+//triggerParms["mrd"]= 1; //The total number of days that a user can be re-served a survey
+//DHTML Parameter
+triggerParms["dhtml"]= 0;// disable dhtml trigger if dhtml=0
+triggerParms["dhtmlWidth"] = 400; // welcome page width
+triggerParms["dhtmlHeight"] = 290; // welcome page height
+triggerParms["dhtmlURL"]= "http://memory.loc.gov/ammem/scripts/FSRInvite.html";
diff --git a/spec/version-1.1.html b/spec/version-1.1.html
new file mode 100644 (file)
index 0000000..2597b7b
--- /dev/null
@@ -0,0 +1,873 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><!-- InstanceBegin template="/Templates/sru-template.dwt" codeOutsideHTMLIsLocked="false" --><!-- InstanceBeginEditable name="doctitle" --><title>Common Query Language (SRU: Search and Retrieve via URL - Standards, Library of Congress)</title><!-- InstanceEndEditable --><!-- InstanceBeginEditable name="head" -->
+
+
+
+
+
+<meta name="keywords" content="sru srw protocol search retrieve via url search retrieve web services standards library of congress common query language cql">
+<meta name="description" content="Common Query Language: SRU (Search/Retrieve via URL) is a standard search protocol for Internet search queries, utilizing CQL (Common Query Language), a standard query syntax for representing queries. SRW (Search Retrieve Web Service) is a companion protocol to SRU."><!-- InstanceEndEditable -->
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<link href="cql_files/sru.css" rel="stylesheet" type="text/css">
+<script type="text/javascript" src="cql_files/triggerParams.js"></script><script type="text/javascript" src="cql_files/stdLauncher.js"></script><script type="text/javascript">Poll();</script></head><body alink="#660000" link="#663300" text="#333333" vlink="#996633">
+<div id="container">
+  <div id="header">
+    <div id="highlevel">
+      <div id="top-left"><a href="http://www.loc.gov/" class="white">The Library
+          of Congress</a><span class="white-text">&nbsp;»&nbsp;</span><a href="http://www.loc.gov/library/" class="white">Librarians,
+          Archivists</a><span class="white-text">&nbsp;»</span> <a href="http://www.loc.gov/standards/" class="white">Standards</a></div>
+      <div id="top-right">
+        <form action="http://search.loc.gov:8765/query.html" accept-charset="utf-8" name="seek1" method="get">
+          <input name="col" value="loc" type="hidden">
+          <input name="sc" value="0" type="hidden">
+          <input name="ws" value="0" type="hidden">
+          <input name="la" value="en" type="hidden">
+          <input name="qm" value="0" type="hidden">
+          <input name="st" value="1" type="hidden">
+          <input name="nh" value="10" type="hidden">
+          <input name="lk" value="1" type="hidden">
+          <input name="rf" value="0" type="hidden">
+          <input name="oq" value="" type="hidden">
+          <input name="si" value="0" type="hidden">
+          <input name="rq" value="0" type="hidden">
+          <input name="qc" value="" type="hidden">
+          <select name="qp" tabindex="1" class="drop-box">
+            <option value="url:/standards/sru/" selected="selected">SRU Pages</option>
+            <option value="url:/standards/">All Standards Pages</option>
+            <option value="">All Library Pages</option>
+          </select>
+          <input name="qt" id="keyword" size="16" value="" tabindex="2" class="drop-box" type="text">
+          <input class="button" id="search_button" name="search_button" value="SEARCH" tabindex="3" type="submit">
+        </form>
+      </div>
+    </div>
+    <h1 class="graphic"><img src="cql_files/sru-title.gif" alt="SRU: Search/Retrieve via URL - SRU Version 1.1 - 13th February 2004" height="60" width="740"></h1>
+  </div>
+  <div id="top-bread"> <a href="http://www.loc.gov/standards/sru/index.html">Home</a> &gt;&gt; <!-- InstanceBeginEditable name="topbreadcrumb" --><span class="selected">CQL</span><!-- InstanceEndEditable --></div>
+  <div id="body"> <!-- InstanceBeginEditable name="content" -->
+    <h1>Common Query Language</h1>
+    <p><strong>CQL <a href="http://www.loc.gov/standards/sru/version.html">Version</a> 1.1</strong> <em>13th February
+    2004</em></p>
+    <p class="box"><a href="#sample">Sample Queries</a> - <a href="#bnf">BNF</a> - <a href="#rules"> Rules</a> - <a href="#features"> Features</a> - <a href="#conformance">Conformance</a>
+- <a href="#context"> Context Sets</a> - <a href="http://www.loc.gov/standards/sru/cql/cql-context-set.html"> the
+              CQL Context Set</a> - <a href="#relations">Relations</a> <a href="#relmodifiers">Modifiers</a> - <a href="#masking">Masking</a> - <a href="#resultset">Result
+    Sets</a> - <a href="#proximity">Proximity</a> - Tutorial (temporarily unavailable)</p>
+    <p>CQL is a formal language for representing queries to information retrieval
+      systems such as web indexes, bibliographic catalogs and museum collection
+      information. The design objective is that queries be human readable and
+      writable, and that the language be intuitive while maintaining the expressiveness
+      of more complex languages.</p>
+    <p>Traditionally, query languages have fallen into two camps: Powerful, expressive
+      languages, not easily readable nor writable by non-experts (e.g. SQL, PQF,
+      and XQuery);or simple and intuitive languages not powerful enough to express
+      complex concepts (e.g. CCL and google). CQL tries to combine simplicity
+      and intuitiveness of expression  for simple, every
+      day queries, with the richness of more expressive languages to accommodate
+      complex concepts when necessary.</p>
+    <hr>
+    <h3><a name="sample"></a> Sample Queries</h3>
+    <p>Following are examples of simple CQL queries. These are all self-explanatory: </p>
+    <p class="box2">dinosaur<br>
+"complete dinosaur"<br>
+  title = "complete dinosaur"<br>
+  title exact "the complete dinosaur"<br>
+  dinosaur or bird<br>
+  dinosaur and "ice age"<br>
+  dinosaur not reptile <br>
+  dinosaur and bird or dinobird <br>
+  (bird or dinosaur) and (feathers or scales)<br>
+"feathered dinosaur" and (yixian or jehol) <br>
+  publicationYear &lt; 1980 <br>
+  lengthOfFemur &gt; 2.4<br>
+  bioMass &gt;= 100 </p>
+    <p>The following are a bit more complicated:</p>
+    <table align="center" border="1" cellpadding="5" cellspacing="0" width="95%">
+      <tbody><tr>
+        <th scope="col" bgcolor="#fff9e5" width="50%">Example</th>
+        <th scope="col" bgcolor="#fff9e5" width="50%">Explanation</th>
+      </tr>
+      <tr>
+        <td scope="row"><p>title all "complete dinosaur"</p></td>
+        <td><p>Title contains all of the words: "complete", and "dinosaur"</p></td>
+      </tr>
+      <tr>
+        <td scope="row"><p><br>
+        title any "dinosaur bird reptile"</p></td>
+        <td><p>Title contains any of the words: "dinosaur", "bird",
+          or "reptile"</p></td>
+      </tr>
+      <tr>
+        <td scope="row"><p>(caudal or dorsal) prox vertebra</p></td>
+        <td><p><em>A proximity query: either "caudal" or "dorsal" near
+              'vertebra"</em></p>
+        </td>
+      </tr>
+      <tr>
+        <td scope="row">
+          <p>ribs prox/distance&lt;=5 chevrons </p>
+        </td>
+        <td><p><em>A more specific proximity query: "ribs" within
+              5 words of "chevrons"</em></p>
+        </td>
+      </tr>
+      <tr>
+        <td scope="row"><p>ribs prox/unit=sentence chevrons</p>
+        </td>
+        <td>
+          <p><em>"ribs" in the same sentence as "chevrons"</em></p>
+        </td>
+      </tr>
+      <tr>
+        <td scope="row">
+          <p>ribs prox/distance&gt;0/unit=paragraph chevrons </p>
+        </td>
+        <td><p><em>"ribs" and "chevrons" occuring
+              in the same document in different paragraphs</em></p>
+        </td>
+      </tr>
+      <tr>
+        <td scope="row"><p>subject any/relevant "fish frog"</p>
+        </td>
+        <td><p><em>find documents that would seem relevant
+              either to "fish" or "frog"</em></p>
+        </td>
+      </tr>
+      <tr>
+        <td scope="row"><p>subject any/rel.lr "fish frog"</p>
+        </td>
+        <td><p><em>Same as previous, but use a specific relevance
+              algorithm (linear regression)</em></p>
+        </td>
+      </tr>
+    </tbody></table>
+    <hr>
+    <h2><a name="bnf"></a>Formal Definition: CQL BNF</h2>
+    <p>Following is the Backus Naur Form (BNF)  definition for CQL. ["::=" represents
+    "is defined as"]</p>
+    <table border="0" cellpadding="5" cellspacing="0" width="95%">
+      <tbody>
+        <tr>
+          <td scope="row" align="right" width="24%">
+              <p>cqlQuery</p>
+          </td>
+          <td width="1%"><p>::=</p>
+          </td>
+          <td width="75%"><p>prefixAssignment cqlQuery | scopedClause </p>
+          </td>
+        </tr>
+        <tr>
+        <td scope="row" align="right">
+              <p>prefixAssignment</p>
+          </td>
+          <td><p>::=</p>
+          </td>
+          <td><p>'&gt;' prefix '=' uri | '&gt;' uri</p>
+          </td>
+        </tr>
+        <tr>
+        <td scope="row" align="right">
+              <p>scopedClause</p>
+          </td>
+          <td><p>::=</p>
+          </td>
+          <td><p>scopedClause booleanGroup searchClause | searchClause</p>
+          </td>
+        </tr>
+        <tr>
+        <td scope="row" align="right">
+              <p>booleanGroup</p>
+          </td>
+          <td><p>::=</p>
+          </td>
+          <td><p>boolean [modifierList]</p>
+          </td>
+        </tr>
+        <tr>
+          <td scope="row" align="right" valign="top">
+              <p>boolean</p>
+          </td>
+          <td valign="top"><p>::=</p>
+          </td>
+          <td><p>'and' | 'or' | 'not' | 'prox'</p>
+          </td>
+        </tr>
+        <tr>
+          <td scope="row" align="right" valign="top">
+              <p>searchClause</p>
+          </td>
+          <td valign="top"><p>::=</p>
+          </td>
+          <td>
+            <p>'(' cqlQuery ')'<br>
+          | index relation searchTerm<br>
+          | searchTerm</p>
+          </td>
+        </tr>
+        <tr>
+        <td scope="row" align="right">
+              <p>relation</p>
+          </td>
+          <td><p>::=</p>
+          </td>
+          <td><p>comparitor [modifierList]</p>
+          </td>
+        </tr>
+        <tr>
+        <td scope="row" align="right">
+              <p>comparitor</p>
+          </td>
+          <td><p>::=</p>
+          </td>
+          <td><p>comparitorSymbol | namedComparitor</p>
+          </td>
+        </tr>
+        <tr>
+        <td scope="row" align="right">
+              <p>comparitorSymbol</p>
+          </td>
+          <td><p>::=</p>
+          </td>
+          <td><p>'=' | '&gt;' | '&lt;' | '&gt;=' | '&lt;=' | '&lt;&gt;'</p>
+          </td>
+        </tr>
+        <tr>
+        <td scope="row" align="right">
+              <p>namedComparitor</p>
+          </td>
+          <td><p>::=</p>
+          </td>
+          <td><p>identifier</p>
+          </td>
+        </tr>
+        <tr>
+        <td scope="row" align="right">
+              <p>modifierList</p>
+          </td>
+          <td><p>::=</p>
+          </td>
+          <td><p>modifierList modifier<strong> | </strong>modifier</p>
+          </td>
+        </tr>
+        <tr>
+        <td scope="row" align="right">
+              <p>modifier</p>
+          </td>
+          <td><p>::=</p>
+          </td>
+          <td><p>'/' modifierName [comparitorSymbol          modifierValue] </p>
+          </td>
+        </tr>
+        <tr>
+        <td scope="row" align="right"><p align="right">prefix, uri, modifierName, modifierValue, searchTerm,
+              index</p>
+          </td>
+          <td valign="top"><p>::=</p>
+          </td>
+          <td valign="top"><p>term</p>
+          </td>
+        </tr>
+        <tr>
+        <td scope="row" align="right">
+              <p>term</p>
+          </td>
+          <td><p>::=</p>
+          </td>
+          <td><p>identifier | 'and' | 'or' | 'not' | 'prox'</p>
+          </td>
+        </tr>
+        <tr>
+          <td scope="row" align="right" valign="top">
+              <p>identifier</p>
+          </td>
+          <td valign="top"><p>::=</p>
+          </td>
+          <td><p>charString1 | charString2</p>
+          </td>
+        </tr>
+        <tr>
+          <td scope="row" align="right" valign="top">
+              <p><em>charString1</em></p>
+          </td>
+          <td valign="top"><p>:=</p>
+          </td>
+          <td><p><em>Any sequence of characters that does not include any of
+                the following:</em> </p>
+              <blockquote><em>whitespace<br>
+              </em><em>( (open parenthesis )</em><br>
+              <em>) (close parenthesis)</em><br>
+              <em>=<br>
+              </em><em>&lt;<br>
+              </em><em>&gt;</em><br>
+              <em>'"' (double quote)<br>
+              </em><em>/</em></blockquote>              <p><em> If the final sequence is a reserved word, that token is
+                  returned instead. Note that '.' (period) may be included, and
+                  a sequence of digits is also permitted. Reserved words are
+                  'and', 'or', 'not', and 'prox' (case insensitive). When a reserved
+                  word is used in a search term, case is preserved. </em> </p>
+          </td>
+        </tr>
+        <tr>
+          <td scope="row" align="right" valign="top">
+              <p><em>charString2</em></p>
+          </td>
+          <td valign="top"><p>:=</p>
+          </td>
+          <td><p><em>Double quotes enclosing a sequence of any characters except
+                double quote (unless preceded by backslash (\)). Backslash escapes
+                the character following it. The resultant value includes all
+                backslash characters except those releasing a double quote (this
+                allows other systems to interpret the backslash character). The
+                surrounding double quotes are not included. </em></p>
+          </td>
+        </tr>
+      </tbody>
+    </table>
+    <hr>
+    <h2><a name="rules"></a>General Rules</h2>
+    <ol>
+      <li>
+        <p><strong>CQL Query<br>
+          </strong>A CQL query is essentially a search clause, or multiple search
+          clauses connected by boolean operators.&nbsp;(In addition it may include
+          prefix assignments which assign short names to known contexts. See <a href="#context">context
+          sets</a>.)</p>
+      </li>
+      <li>
+        <p><strong>Search Clause</strong><br>
+      A search clause consists of an index, relation, and search term, or a search
+        term alone. Thus every search clause has a search term, but both the
+        index and relation may be omitted -&nbsp; the clause must include either
+        both or neither of the index and relation. (Note that the use of the "index" concept
+        in CQL is not intended to have any implementation implications; it does
+        not imply the presence of a physical index.)</p>
+        <p> Examples: &nbsp; <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Index/relation/search term:&nbsp; <strong>title
+= cat</strong><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Search term only:&nbsp;&nbsp; <strong>cat</strong>     
+      
+      </p></li><li>
+        <p><strong>Search Term</strong><br>
+      Search terms <em>may</em> be enclosed in double quotes. Search terms <em>must</em> be
+      enclosed in double quotes if they contain any of the following characters: &lt; &gt; =
+      / ( ) and whitespace. The search term may be empty, but must be present
+      in a search clause. An empty search term is expressed as "" and has no
+      defined semantics. </p>
+      </li>
+      <li>
+        <p><strong>Index</strong> <strong>Name</strong><br>
+      An index name always includes a base name and may also include a prefix,
+        which provides a context for the index name, the name of the <a href="#context">context
+        set</a> of which the index is a part. If the context is not supplied,
+        it is determined by the server.&nbsp; If the index is not supplied it
+        is determined by the server. (Note that the index may be omitted only
+        when the relation is also omitted. Either both must be supplied, or both
+        omitted.)</p>
+        <p> Examples:<br>
+&nbsp;&nbsp;&nbsp; title = cat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em>context determined
+by the server</em><br>
+&nbsp;&nbsp;&nbsp; dc.title = cat&nbsp;&nbsp;&nbsp; <em>index context is dc<br>
+&nbsp; &nbsp;&nbsp;</em>cat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em>context and
+index determined by the server</em></p>
+      </li>
+      <li>
+        <p><strong>Relation<br>
+          </strong>The relation in a search clause specifies the relationship
+          between the index and search term.&nbsp; It also always includes a
+          base name and may also include a prefix providing a context for the
+          relation. If a relation is supplied with no accompanying context, the
+          context is 'cql'&nbsp; (the <a href="http://www.loc.gov/standards/sru/cql/cql-context-set.html">cql context
+          set</a>).&nbsp; If no relation is supplied, then cql.scr (server choice)
+          is assumed, which means that the relation is determined by the server.
+          (Note that the relation may be omitted only when the index is also
+          omitted. Either both must be supplied, or both
+        omitted.)</p>
+        <p></p>
+        <p> Examples:<br>
+&nbsp;&nbsp; title = cat&nbsp; <em> context for relation is 'cql' ; fully qualified
+relation is cql.=<br>
+&nbsp;&nbsp; </em>title cql.any cat&nbsp;&nbsp;&nbsp; <em>relation is 'any';
+relation context is 'cql'.&nbsp; Equivalent to: </em>title any cat<em><br>
+&nbsp;&nbsp; cat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; index and relation are determined
+by the server (formally the relation is 'cql.scr')</em></p>
+      </li>
+      <li><a name="relmods"></a>
+        <strong>Relation Modifiers</strong><br>
+      Relation modifiers may accompany a relation. These also may be accompanied
+        by a context.&nbsp; If a context is not supplied for a modifier, the
+        default is the <a href="http://www.loc.gov/standards/sru/cql/cql-context-set.html">cql context set</a>. Relation
+        modifiers are separated from each other and from the relation by slashes
+        ( /). Whitespace may be present on either side of a / character, but
+        the relation plus modifiers group may not end in a /. 
+          <p> Examples:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dc.title any/relevant/rel.CORI "cat fish" <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em>&nbsp;the relation 'any'
+is modified by (1) 'relevant' whose context is 'cql' and (2) 'CORI' whose context
+is 'rel'.</em><br>
+&nbsp; &nbsp;&nbsp;&nbsp; dc.author exact/stem "smith, j."&nbsp;&nbsp;&nbsp; <em>the
+relation 'exact' is modified by 'stem' whose context is 'cql'</em>.<em><br>
+&nbsp;&nbsp;</em></p>
+      </li>
+      <li>
+        <p><strong>Boolean Operators</strong><br>
+      Search clauses may be linked by boolean operators. These are: <strong>and</strong>, <strong>or</strong>, <strong>not</strong> and <strong>prox</strong>.
+      (Note that&nbsp; <strong>not</strong> is really and-not, that is, it may
+       not be used as a unary operator.) Boolean operators all have the same
+      precedence; they are evaluated left-to-right. Parentheses
+      may
+      be used
+      to
+      overide left-to-right
+      evaluation.</p>
+      </li>
+      <li>
+        <p><strong>Boolean Modifiers</strong><br>
+      As a relation may have  modifiers, similiarly, a
+        boolean operator may have modifiers, separated by '/' characters. Boolean
+        modifiers may come from
+        any context
+        set. If
+        not supplied, the context is the <a href="http://www.loc.gov/standards/sru/cql/cql-context-set.html">CQL
+        context set</a>. (Note that Boolean operators themselves 
+        are limited to the built-in set of four.)</p>
+        <p> Example:&nbsp; dc.title=cat and/rel.sum dc.title=dog</p></li>
+      <li>
+        <p><strong>Case Insensitive</strong> <br>
+      All parts of CQL are case insensitive apart from user supplied search terms,
+        which may or may not be case sensitive. 'OR','or', 'Or' and 'oR' are
+        all the same boolean operator, just as 'dc.title', 'DC.Title' and 'dC.TiTLe'
+        are all the same context set plus index name. </p>
+    </li></ol>
+    <hr>
+    <h2><a name="features"></a>Additional CQL Features</h2>
+    <p>The following are all formally defined by the CQL context set but described
+      here for convenience.</p>
+    <h3><a name="relations"></a>Relations </h3>
+    <p><strong>For ordered (e.g. numeric) terms: </strong><strong><br>
+&lt;</strong>, <strong>&gt;</strong>, <strong>&lt;=</strong>, <strong>&gt;=</strong>,
+and <strong>&lt;&gt;</strong> mean "less than", "greater than", "less
+or equal", "greater or equal", and "not equal". </p>
+    <p></p>
+    <p><strong>when the term is a list of words</strong>: </p>
+    <ul>
+      <li>
+        <p><strong>&nbsp; '='</strong> is used for word adjacency -- the words
+          appear in that order with no others intervening.&nbsp; (Note the dual
+          use of '=', it is used for numeric equality as described above.) </p></li>
+      <li>
+        <p>&nbsp; <strong>'any</strong>' means "any of these words" </p></li>
+      <li>
+        <p>&nbsp; '<strong>all</strong>' means "all of these words"</p>
+    </li></ul>
+    <p><strong>When the term is a character string:<br>
+    </strong><strong>'</strong><strong>exact</strong>' is used for exact string
+    matching.
+    </p>
+    <p><strong>When the term has multiple dimensions:<br>
+    </strong><strong>'within</strong>' may be used to search for values that
+    fall within the range, area or volume described by the search
+    term.</p>
+    <p>
+      <strong>When the index's data has multiple dimensions:<br>
+      </strong><strong>'encloses</strong>' may be used to search for values of
+      the database's term fully encloses the search term. 
+    </p>
+    &nbsp;   
+    
+     Examples: 
+    <table border="1" cellpadding="5" cellspacing="0" width="95%">
+      <tbody><tr bgcolor="#fff9e5">
+        <th scope="col" width="28%"><em>This query </em></th>
+        <th scope="col" width="35%"><em>Would match this </em></th>
+        <th scope="col" width="37%"><em>but not this</em></th>
+      </tr>
+      <tr>
+        <td scope="row"><p><strong>title =&nbsp; "cat in the hat"</strong></p>
+        </td>
+        <td><p>&nbsp;"a day in the life of the cat in the hat"</p>
+        </td>
+        <td><p>"hat in the cat" or "cat in the green hat"</p>
+        </td>
+      </tr>
+      <tr>
+        <td scope="row"><p><strong>title all "cat hat"</strong></p>
+        </td>
+        <td><p>"hat in the cat"</p>
+        </td>
+        <td><p>"cat in the grass"</p>
+        </td>
+      </tr>
+      <tr>
+        <td scope="row"><p><strong>title any "cat hat"</strong></p>
+        </td>
+        <td><p>"cat in the grass"</p>
+        </td>
+        <td><p>"dog in the grass"</p>
+        </td>
+      </tr>
+      <tr>
+        <td scope="row"><p><strong>title exact "cat in the hat"</strong></p>
+        </td>
+        <td><p>"cat in the hat"</p>
+        </td>
+        <td><p>"a day in the life of the cat in the hat"</p>
+        </td>
+      </tr>
+      <tr>
+        <td scope="row"><p><strong>date within "2002 2005"</strong></p></td>
+        <td><p>2004</p></td>
+        <td><p>2006</p></td>
+      </tr>
+      <tr>
+        <td scope="row"><p><strong>dateRange encloses 2003</strong></p></td>
+        <td><p>"2002 2005"</p></td>
+        <td><p>"2004 2005"</p></td>
+      </tr>
+    </tbody></table>
+    <h3><br>
+    <a name="relmodifiers"></a>Relation Modifiers <strong>- Term Functions</strong></h3>
+    <p>These relation modifiers request that the server perform some algorithm
+      on the term before processing. </p>
+    <ul>
+      <li>
+        <p><strong>stem</strong><br>
+      The server should apply a stemming algorithm to the words within the term.
+        for example, walked, walking, walker <i>etc.</i> would all be represented
+        by the stem word walk. This allows a search like title =/stem "these
+        completed dinosaurs" to match&nbsp; <i>The Complete Dinosaur</i>. </p></li>
+      <li>
+        <p><strong>relevant</strong><br>
+      The server should use a relevancy algorithm for determining matches and
+        the order of the result set. </p>
+        <p> Example: <em>subject any/relevant "fish frog"</em><br>
+          would find records relevant to "fish" or "frog" and order
+      the result set by relevance to fish or frog.<i><br>
+        <br>
+                  </i></p>
+    </li></ul>
+    <h3><strong>Relation Modifiers - Qualifiers</strong></h3>
+    <p> These modifiers qualify the relation to more precisely determine its
+      semantics. </p>
+    <ul>
+      <li>
+        <p><strong>word</strong><br>
+      The term consists of words (rather than      being an opaque string). </p>
+      </li>
+      <li>
+        <p><strong>string</strong><br>
+      The term is a single item, and should not be broken up. </p></li>
+      <li>
+        <p><strong>isoDate</strong><br>
+      Each item within the term conforms to the ISO 8601 specification for expressing
+        dates. </p></li>
+      <li>
+        <p><strong>number</strong><br>
+      Each item within the term is a number. </p></li>
+      <li>
+        <p><strong>uri</strong><br>
+      Each item within the term is a URI. </p></li>
+      <li>
+        <p><strong>masked</strong><br>
+       This means that the masking rules (see next) apply. Masking is assumed
+       even if not specified, unless 'unmasked' is specified (so there is never
+         any reason to include 'masked').</p>      
+      </li><li><strong>unmasked </strong><br>
+      Do not apply masking rules.
+    </li></ul>
+    <h3><a name="masking"></a>Masking Rules</h3>
+    <ul>
+      <li>
+        <p>A single asterisk (*) is used to mask zero or more characters. </p></li>
+      <li>
+        <p>A single question mark (?) is used to mask a single character, thus
+          N consecutive question-marks means mask N characters. </p></li>
+      <li>
+        <p>Carat/hat (^) is used as an anchor character for terms that are word
+          lists, that is, where the relation is 'all' or 'any', or '=' when used
+          for word adjacency. It may not be used to anchor a string, that is,
+          when relation is 'exact' (string matches are, by definition, anchored).
+          It may occur at the beginning or end of a word (with no intervening
+          space) to mean right or left anchored."^" has no special meaning when
+          it occurs within a word (not at the beginning or end) or string but
+          must be escaped nevertheless. </p>
+      </li>
+      <li>
+        <p> Backslash (\) is used to escape '*', '?', quote (") and '^' , as
+          well as itself. The use of a backslash not followed immediately by
+          one of these characters is reserved for future definition.</p>
+      </li>
+    </ul>
+    <p>Masking examples: </p>
+    <ul>
+      <li>
+        <p>dc.title = c*t <i>(matches cat and coast etc.)</i></p></li>
+      <li>
+        <p>dc.title = c?t <i>(matches cat and cot, not coast or ct)</i><br>
+" ?" <i>(matches any single character)</i> </p></li>
+      <li>
+        <p>dc.title = "^cat in the hat" <i>(matches 'cat in the hat' where it
+        is at the beginning of the field)</i></p>
+      </li>
+      <li>
+        <p>dc.title any "^cat  eats rat" <i>(matches  'cat eats rat', 'cat eats
+            dog', 'cat', but not 'rat eats cat')</i> </p>
+      </li>
+      <li>
+        <p>
+          dc.title any "^cat ^dog eats rat" <i>(matches 'cat eats rat',  'dog
+          eats cat', 'cat
+          loves bat', but not 'bat loves cat')</i> </p>
+      </li>
+      <li>
+        <p>dc.title = "\"Of Couse\" she said"</p>
+      </li>
+    </ul>
+    <h3><strong><a name="resultset"></a>Result Set Name Used in Query</strong></h3>
+    <p>A search clause may be a result set name. This is a special case, employing
+      the context set '<a href="http://www.loc.gov/z3950/agency/zing/cql/context-sets/cql.html">cql</a>'.
+      The index and relation are expressed as "cql.resultSetId =" and
+      the term is a result set name that has been returned by the server in the
+      'resultSetName' parameter of the response. It may be used by itself in
+      a query to refer to an existing result set from which records are desired.
+      It may also be used in conjunction with other resultSetName clauses or
+      other indexes, combined by boolean operators. The semantics of resultSetId
+      with relations other than "=" is undefined. </p>
+    <p> Example: cql.resultSetId = "resultA" and cql.resultSetId = "resultB" </p>
+    <h3><strong><a name="proximity"></a>Proximity</strong></h3>
+    <p>The proximity boolean boolean operator is expressed in terms of distance,
+      unit, and ordering.</p>
+    <p>Examples:</p>
+    <ul>
+      <li> dc.title = "cat" prox/distance=1/unit=word dc.title
+      = "in"</li>
+      <li>"cat" prox/distance&gt;2/ordered "hat" </li>
+    </ul>
+    <p><strong>distance</strong> takes the form:<br>
+&nbsp;&nbsp;&nbsp;&nbsp; distance [relation] [value] <br>
+where relation is one of: "&lt;", "&gt;" ,"&lt;=" ,"&gt;=" ,"=" , "&lt;&gt;"; <i>default "&lt;="</i><br>
+and value is a non-negative integer; <i>default: 1 for word, zero otherwise</i></p>
+    <p><strong>unit</strong> takes the form<br>
+      &nbsp;&nbsp;&nbsp;&nbsp; unit=[value] <br>
+    where value is one of "word", "sentence", "paragraph", or "element"<i>(default "word"</i>),</p>
+    <p><strong>ordering</strong> is "ordered" or "unordered"; <i>default "unordered"</i></p>
+    <p>&nbsp; </p>
+    <hr>
+    <h2><a name="context"></a>CQL Context Sets</h2>
+    <p>Context sets permit CQL users to create their own indexes, relations,
+      relation modifiers and boolean modiers without fear of chosing the same
+      name as someone else and thereby having an ambiguous query. All of these
+      four aspects of CQL must come from a context set, however there are rules
+      for determining the prevailing default if one is not supplied. Context
+      sets allow CQL to be used by communities in ways which the designers could
+      not have foreseen, while still maintaining the same rules for parsing which
+      allow interoperability.</p>
+    <p>When defining a new context set, it is necessary to provide a description
+      of the semantics of each item within it. While context sets may contain
+      indexes, relations, relation modifiers and boolean modifiers, there is
+      no requirement that all should be present; in fact it is expected that
+    most context sets will only define indexes.</p>
+    <p>Each context set has a unique identifier, a URI. When sending the context
+      set in a query, a short form is used. These short names may be sent as
+      a mapping within the query itself (see next), or be published by the recipient
+      of the query in some protocol dependent fashion. The prefix 'cql' is reserved
+      for the CQL context set, but authors may wish to recommend a short name
+    for use with their set. </p>
+    <p> An index, relation, or modifier qualified by a context is represented
+      in the form <i>prefix</i>.<i>value</i>, where <i>prefix</i> is a short
+      name for a unique context set identifier. </p>
+    <p><strong>Binding Short Name to URI<br>
+    </strong>The binding of short name to
+        URI is defined either within the query or by the server. A prefix map
+      may occur at any place in the query and applies to anything which follows.
+    Example: </p>
+    <p class="box2">&gt;dc="http://www.dublincore.org/" dc.title = "cat"</p>
+    <p>
+    </p><p>In the following query: 
+    </p><p>
+
+    </p><p class="box2">&gt;a="http:/x.com/y" a.title=cat and (&gt;a="http:/f.com/g" a.title=hat)
+    and a.title=rat</p>
+    <p>    
+    </p><p>both the "a" in "a.title=cat"&nbsp;and in "a.title=rat" refer
+      to http:/x.com/y, while the "a" in "a.title=rat" refers
+    to http:/f.com/g.</p>
+    <p> <strong>Default Context</strong><br>
+      When no context is attached to a relation, relation modifier,
+      or boolean modifier, the context is the cql context set.&nbsp; When no
+      context is attached to an index the context is determined by the server.</p>
+    <p><strong>Known Context Sets</strong><br>
+      The following context sets have been defined and made
+      public. If you wish to have your context set listed here, please provide
+      the information
+      to
+    the <a href="mailto:z950@loc.gov">SRU Maintenance Agency</a>.</p>
+    <table align="center" border="1" cellpadding="5" cellspacing="0" width="95%">
+      <tbody>
+        <tr>
+          <th scope="col" bgcolor="#fff9e5" width="15%">Short Name</th>
+          <th scope="col" bgcolor="#fff9e5" width="60%">Identifier</th>
+          <th scope="col" bgcolor="#fff9e5" width="25%">Reference</th>
+        </tr>
+        <tr>
+        <td scope="row"><p><strong>cql</strong></p>
+          </td>
+          <td><p>info:srw/cql-context-set/1/cql-v1.1</p>
+          </td>
+          <td><p><a href="http://www.loc.gov/standards/sru/cql/cql-context-set.html">CQL context set</a></p>
+          </td>
+        </tr>
+        <tr>
+        <td scope="row"><p>dc</p>
+          </td>
+          <td><p>info:srw/cql-context-set/1/dc-v1.1</p>
+          </td>
+          <td><p><a href="http://www.loc.gov/standards/sru/cql/dc-context-set.html">Dublin Core Context Set</a></p>
+          </td>
+        </tr>
+        <tr>
+        <td scope="row"><p>bath</p>
+          </td>
+          <td>
+            <p>http://zing.z3950.org/cql/bath/2.0/</p>
+          </td>
+          <td><p><a href="http://zing.z3950.org/srw/bath/2.0/#2">Bath Context
+                Set</a></p>
+          </td>
+        </tr>
+        <tr>
+        <td scope="row"><p>zthes</p>
+          </td>
+          <td><p>http://zthes.z3950.org/cql/1.0/</p>
+          </td>
+          <td><p><a href="http://zthes.z3950.org/cql/">ZThes thesaurus context
+                set</a>, v1.0.</p>
+          </td>
+        </tr>
+        <tr>
+        <td scope="row"><p>ccg</p>
+          </td>
+          <td><p>http://srw.cheshire3.org/contextSets/ccg/1.1/</p>
+          </td>
+          <td><p><a href="http://srw.cheshire3.org/contextSets/ccg/">Collectable
+                card games</a> </p>
+          </td>
+        </tr>
+        <tr>
+        <td scope="row"><p>rec</p>
+          </td>
+          <td><p>info:srw/cql-context-set/2/rec-1.1</p>
+          </td>
+          <td><p><a href="http://srw.cheshire3.org/contextSets/rec/1.1/">Record metadata</a></p>
+          </td>
+        </tr>
+        <tr>
+        <td scope="row"><p>net</p>
+          </td>
+          <td><p>info:srw/cql-context-set/2/net-1.0</p>
+          </td>
+          <td><p><a href="http://srw.cheshire3.org/contextSets/net/">Network
+                resource information</a></p>
+          </td>
+        </tr>
+        <tr>
+        <td scope="row"><p>music</p>
+          </td>
+          <td><p>info:srw/cql-context-set/3/music-1.0 </p>
+          </td>
+          <td><p><a href="http://www.ceridwen.com/srw/music-contextset.html">Music
+                Context Set</a></p>
+          </td>
+        </tr>
+        <tr>
+        <td scope="row"><p>rel</p>
+          </td>
+          <td><p>info:srw/cql-context-set/2/relevance-1.0</p>
+          </td>
+          <td><p><a href="http://srw.cheshire3.org/contextSets/rel/">Relevance
+                Ranking</a></p>
+          </td>
+        </tr>
+        <tr>
+        <td scope="row"><p>zeerex</p>
+          </td>
+          <td>
+            <p>info:srw/cql-context-set/2/zeerex-1.1</p>
+          </td>
+          <td><p><a href="http://srw.cheshire3.org/contextSets/ZeeRex/">ZeeRex
+                Context Set</a></p>
+          </td>
+        </tr>
+        <tr>
+          <td scope="row"><p>marc</p>
+          </td>
+          <td><p>info:srw/cql-context-set/1/marc-1.0</p></td>
+          <td><p><a href="http://www.loc.gov/standards/sru/cql/marc-context-set.html">MARC Context Set</a></p></td>
+        </tr>
+      </tbody>
+    </table>
+    <p>
+    </p><hr>
+    <h2><a name="conformance"></a>Conformance</h2>
+    <p>In order to claim conformance to CQL a server must support one of the
+      following three levels:</p>
+    <p><strong>Level 0</strong></p>
+    <ol>
+      <li>
+        <p>Must be able to process a term-only query.<br>
+      (The term is either a single word or if multiple words separated by spaces
+        then the entire search term is quoted). If the term includes quote marks,
+        they must be a escaped by preceding them with a backslash, e.g."raising
+        the \"titanic\"".)</p>
+      </li>
+      <li>
+        <p>If an unsupported query is supplied, must be able to respond with
+          a diagnostic to say that the query is not supported.</p>
+      </li>
+    </ol>
+    <p><strong>Level 1</strong></p>
+    <ol>
+      <li>
+        <p> Support for Level 0.</p>
+      </li>
+      <li>
+        <p> Ability to <em>parse</em> both: <br>
+      (a) search clauses consisting of 'index relation searchTerm'; and <br>
+      (b) queries where search terms are combined with booleans, e.g. "term1
+      AND term2" </p></li>
+      <li>
+        <p><em>Support</em> for at least one of (a) and (b). </p></li>
+    </ol>
+    <p>Note that (b) does not necessarily include queries such as:</p>
+    <blockquote>
+      <p> index relation term1 AND index relation term2</p>
+    </blockquote>
+    <p> but rather queries where the search clauses are terms-only (do not include
+      index or relation).</p>
+    <p><strong>Level 2</strong></p>
+    <ol>
+      <li>
+        <p> Support for Level 1. </p>
+      </li>
+      <li>
+        <p>Ability to <em>parse</em> all of CQL and respond with appropriate
+          diagnostics.</p>
+      </li>
+    </ol>
+    <p>Note that Level 2 does not require <em>support</em> for all of CQL, it
+      requires that the server be able to <em>parse</em> all of CQL (and respond
+      with proper diagnostics for the parts not supported.).</p>
+    <!-- InstanceEndEditable -->
+    <div id="bottom-bread"> <a href="http://www.loc.gov/standards/sru/index.html">Home</a> &gt;&gt; <!-- InstanceBeginEditable name="bottombreadcrumb" --><span class="selected">CQL</span><!-- InstanceEndEditable --></div>
+  </div>
+  <div id="footer">
+    <div id="bottom-left"><a href="http://www.loc.gov/" class="white">The Library
+        of Congress</a><span class="white-text">&nbsp;»&nbsp;</span><a href="http://www.loc.gov/library/" class="white">Librarians,
+        Archivists</a><span class="white-text">&nbsp;»</span> <a href="http://www.loc.gov/standards/" class="white">Standards</a><br>
+          <span class="white-text">
+          <!-- #BeginDate format:Am1 -->March 8, 2007<!-- #EndDate -->
+        </span></div>
+    <div class="white-text" id="contactus"><a href="mailto:z3950@loc.gov" class="white">Contact
+        Us</a></div>
+  </div>
+</div>
+<script type="text/javascript" src="cql_files/s_code.js"></script><img src="cql_files/s61224011715843.gif" name="s_i_locgovprod" alt="" border="0" height="1" width="1"><!-- InstanceEnd --></body></html>
\ No newline at end of file
diff --git a/spec/version-1.2.html b/spec/version-1.2.html
new file mode 100644 (file)
index 0000000..920e78f
--- /dev/null
@@ -0,0 +1,98 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><!-- InstanceBegin template="/Templates/sru-template.dwt" codeOutsideHTMLIsLocked="false" --><!-- InstanceBeginEditable name="doctitle" --><title>Next Version (SRU: Search and Retrieve via URL - Standards, Library of Congress)</title><!-- InstanceEndEditable --><!-- InstanceBeginEditable name="head" -->
+
+
+
+
+
+<meta name="keywords" content="sru srw protocol search retrieve via url search retrieve web services standards library of congress version">
+<meta name="description" content="Next Version: SRU (Search/Retrieve via URL) is a standard search protocol for Internet search queries, utilizing CQL (Common Query Language), a standard query syntax for representing queries. SRW (Search Retrieve Web Service) is a companion protocol to SRU."><!-- InstanceEndEditable -->
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<link href="cql_files/sru.css" rel="stylesheet" type="text/css">
+<script type="text/javascript" src="cql_files/triggerParams.js"></script><script type="text/javascript" src="cql_files/stdLauncher.js"></script><script type="text/javascript">Poll();</script></head><body alink="#660000" link="#663300" text="#333333" vlink="#996633">
+<div id="container">
+  <div id="header">
+    <div id="highlevel">
+      <div id="top-left"><a href="http://www.loc.gov/" class="white">The Library
+          of Congress</a><span class="white-text">&nbsp;»&nbsp;</span><a href="http://www.loc.gov/library/" class="white">Librarians,
+          Archivists</a><span class="white-text">&nbsp;»</span> <a href="http://www.loc.gov/standards/" class="white">Standards</a></div>
+      <div id="top-right">
+        <form action="http://search.loc.gov:8765/query.html" accept-charset="utf-8" name="seek1" method="get">
+          <input name="col" value="loc" type="hidden">
+          <input name="sc" value="0" type="hidden">
+          <input name="ws" value="0" type="hidden">
+          <input name="la" value="en" type="hidden">
+          <input name="qm" value="0" type="hidden">
+          <input name="st" value="1" type="hidden">
+          <input name="nh" value="10" type="hidden">
+          <input name="lk" value="1" type="hidden">
+          <input name="rf" value="0" type="hidden">
+          <input name="oq" value="" type="hidden">
+          <input name="si" value="0" type="hidden">
+          <input name="rq" value="0" type="hidden">
+          <input name="qc" value="" type="hidden">
+          <select name="qp" tabindex="1" class="drop-box">
+            <option value="url:/standards/sru/" selected="selected">SRU Pages</option>
+            <option value="url:/standards/">All Standards Pages</option>
+            <option value="">All Library Pages</option>
+          </select>
+          <input name="qt" id="keyword" size="16" value="" tabindex="2" class="drop-box" type="text">
+          <input class="button" id="search_button" name="search_button" value="SEARCH" tabindex="3" type="submit">
+        </form>
+      </div>
+    </div>
+    <h1 class="graphic"><img src="cql_files/sru-title.gif" alt="SRU: Search/Retrieve via URL - SRU Version 1.1 - 13th February 2004" height="60" width="740"></h1>
+  </div>
+  <div id="top-bread"> <a href="http://www.loc.gov/standards/sru/index.html">Home</a> &gt;&gt; <!-- InstanceBeginEditable name="topbreadcrumb" --><span class="selected">Next
+  Version</span><!-- InstanceEndEditable --></div>
+  <div id="body"> <!-- InstanceBeginEditable name="content" -->
+    <h2>Changes in SRU from Versions 1.1 to 1.2</h2>
+    <p>SRU Version 1.2    is in development and will be released soon.  This
+      page summarizes the differences from version 1.1. </p>
+    <h3>CQL Changes </h3>
+    <ol>
+      <li> CQL renamed the "contextual query language".</li>
+      <li>'scr' relation eliminated. '=' becomes (in effect) server choice. When
+        relation is omitted, '=' is assumed.</li>
+      <li> 'adj' relation defined for word adjacency.</li>
+      <li>'exact' relation eliminated. Replaced by '=='. </li>
+      <li>'regexp' relation modifier defined. </li>
+      <li>Sorting is added as a cql feature (the 'sortby' clause).</li>
+      <li>Proximity. Defaults are now server defined, not standard defined. Hence "prox" can
+        be anything the server wants to do proximately, not necessarily with
+        a default of adjacency.
+        <p>Proximity units (other than in cql set) are treated such that "unit" is
+          a value in a context set, rather than the unit value being a value
+          in a context set.&nbsp; Proximity units 'word', 'sentence', 'paragraph',
+          which are included in the cql set, are explicitly undefined.</p>
+      </li>
+    </ol>
+    <h3>Protocol Changes </h3>
+    <ol>
+      <li>Record identifier (optional) added to record structure.</li>
+      <li> XCQL parameter becomes optional.</li>
+      <li> XPath parameter dropped (will become an extension).</li>
+      <li> base url added to response.</li>
+      <li> record hits incorporated into xcql.</li>
+      <li> Z39.92 replaces explain.</li>
+      <li>Sorting is no longer a protocol function (see point 6 in CQL list). </li>
+    </ol>
+    <h3></h3>
+    <h1>&nbsp;</h1>
+    <!-- InstanceEndEditable -->
+    <div id="bottom-bread"> <a href="http://www.loc.gov/standards/sru/index.html">Home</a> &gt;&gt; <!-- InstanceBeginEditable name="bottombreadcrumb" --><a href="http://www.loc.gov/standards/sru/sru-resources.html"></a><span class="selected">Next
+          Version</span><!-- InstanceEndEditable --></div>
+  </div>
+  <div id="footer">
+    <div id="bottom-left"><a href="http://www.loc.gov/" class="white">The Library
+        of Congress</a><span class="white-text">&nbsp;»&nbsp;</span><a href="http://www.loc.gov/library/" class="white">Librarians,
+        Archivists</a><span class="white-text">&nbsp;»</span> <a href="http://www.loc.gov/standards/" class="white">Standards</a><br>
+          <span class="white-text">
+          <!-- #BeginDate format:Am1 -->January 25, 2007<!-- #EndDate -->
+        </span></div>
+    <div class="white-text" id="contactus"><a href="mailto:z3950@loc.gov" class="white">Contact
+        Us</a></div>
+  </div>
+</div>
+<script type="text/javascript" src="cql_files/s_code.js"></script><img src="cql_files/s6955176837255.gif" name="s_i_locgovprod" alt="" border="0" height="1" width="1"><!-- InstanceEnd --></body></html>
\ No newline at end of file