2009/dap/ReSpec.js/js respec.js,1.126,1.127

Update of /sources/public/2009/dap/ReSpec.js/js
In directory hutz:/tmp/cvs-serv6064/js

Modified Files:
	respec.js 
Log Message:
Added generation of various RDFa when the doRDFa configuration parameter is set to true.  Defaults to false.

Index: respec.js
===================================================================
RCS file: /sources/public/2009/dap/ReSpec.js/js/respec.js,v
retrieving revision 1.126
retrieving revision 1.127
diff -u -d -r1.126 -r1.127
--- respec.js	30 Jun 2010 15:03:11 -0000	1.126
+++ respec.js	5 Jul 2010 19:02:24 -0000	1.127
@@ -201,7 +201,7 @@
             }
 
             // if (this.doMicroData) this.makeMicroData();
-            // if (this.doRDFa) this.makeRDFa();
+            if (this.doRDFa) this.makeRDFa();
             this.unHTML5();
             this.removeRespec();
 
@@ -218,6 +218,42 @@
         }
         document.body.style.display = "inherit";
     },
+
+    makeRDFa:  function () {
+        var abs = document.getElementById("abstract");
+        if (abs) {
+            var rel = 'dcterms:abstract' ;
+            var ref = abs.getAttribute('property') ;
+            if (ref) {
+                rel = ref + ' ' + rel ;
+            }
+            abs.setAttribute('property', rel) ;
+            abs.setAttribute('datatype', '') ;
+        }
+        // annotate sections with Section data
+        var secs = document.querySelectorAll("section");
+        for (var i = 0; i < secs.length; i++) {
+            // if the section has an id, use that.  if not, look at the first child for an id
+            var about = '' ;
+            // the first child should be a header - that's what we will annotate
+            var fc = secs[i].firstElementChild;
+            var ref = secs[i].getAttribute('id') ;
+            if ( ref ) {
+                about = '#' + ref ;
+            } else {
+                if (fc) {
+                    ref = fc.getAttribute('id') ;
+                    if (ref) {
+                        about = '#' + ref;
+                    }
+                }
+            }
+            if (about != '') {
+                secs[i].setAttribute('typeof', 'bibo:Chapter') ;
+                secs[i].setAttribute('about', about) ;
+            }
+        }
+    },
     
     saveMenu: null,
     showSaveOptions:    function () {
@@ -254,11 +290,23 @@
         str += ">\n";
         str += "<html";
         var ats = document.documentElement.attributes;
+        var prefixAtr = '' ;
+
         for (var i = 0; i < ats.length; i++) {
             var an = ats[i].name;
             if (an == "xmlns" || an == "xml:lang") continue;
+            if (an == "prefix") {
+                prefixAtr = ats[i].value;
+                contine;
+            }
             str += " " + an + "=\"" + this._esc(ats[i].value) + "\"";
         }
+        if (this.doRDFa) {
+            if (prefixAtr != '') prefixAtr += ' ';
+            prefixAtr += "dcterms: http://purl.org/dc/terms/ bibo: http://purl.org/ontology/bibo/ foaf: http://xmlns.com/foaf/0.1/";
+            str += " prefix=\"" + this._esc(prefixAtr) + "\"";
+        }
+
         str += ">\n";
         str += document.documentElement.innerHTML;
         str += "</html>";
@@ -345,6 +393,7 @@
         if (!cfg.maxTocLevel) cfg.maxTocLevel = 0;
         if (!cfg.diffTool) cfg.diffTool = 'http://www3.aptest.com/standards/htmldiff/htmldiff.pl';
         if (!cfg.noRecTrack) cfg.noRecTrack = false;
+        if (!cfg.doRDFa) cfg.doRDFa = false ;
         for (var k in cfg) this[k] = cfg[k];
         this.isRecTrack = cfg.noRecTrack ? false : this.recTrackStatus.indexOf(this.specStatus) >= 0;
         this.isNoTrack = this.noTrackStatus.indexOf(this.specStatus) >= 0;
@@ -384,6 +433,11 @@
     rootAttr:   function () {
         document.documentElement.setAttribute("lang", "en");
         document.documentElement.setAttribute("dir", "ltr");
+        if (this.doRDFa) {
+            document.documentElement.setAttribute("about", "");
+            document.documentElement.setAttribute("property", "dcterms:language");
+            document.documentElement.setAttribute("content", "en");
+        }
     },
     
     addCSS: function () {
@@ -467,37 +521,63 @@
         var header = "";
 
         if (people.length == 0) return header;
+        var rl = '' ;
+        var rt = '' ;
+        var rm = '' ;
+        var rn = '' ;
+        var rwu = '' ;
+        var rpu = '' ;
+        if ( this.doRDFa ) {
+            if ( name == 'Editor' ) {
+                rn = " property='foaf:name'";
+                rm = " rel='foaf:mbox'";
+                rwu = " rel='foaf:workplaceHomepage'";
+                rpu = " rel='foaf:homepage'";
+            }
+        }
 
         if (people.length > 1) {
-            header += "<dt>" + name + "s:</dt>";
+            header += "<dt" + rl  + ">" + name + "s:</dt>";
         } else {
             header += "<dt>" + name + ":</dt>";
         }
 
+
         for (var i = 0; i < people.length; i++) {
+            var id = 'editor_' + i ;
             var pers = people[i];
-            header += "<dd>";
+            if (this.doRDFa) {
+                header += "<dd rel='bibo:editor' resource='[_:" + id + "]'><span typeof='foaf:Person' about='[_:" + id + "]'>";
+            } else {
+                header += "<dd>";
+            }
             if (pers.url) {
-                header += "<a href='" + pers.url + "'>" + pers.name + "</a>";
+                if (this.doRDFa) {
+                    header += "<a" + rpu + " href='" + pers.url + "'><span about='[_:" + id + "]'" + rn + ">" + pers.name + "</span></a>";
+                } else {
+                    header += "<a href='" + pers.url + "'>"+ pers.name + "</a>";
+                }
             } else {
-                header += pers.name;
+                header += "<span" + rn + ">" + pers.name + "</span>";
             }
             if (pers.company) {
                 header += ", ";
                 if (pers.companyURL) {
-                    header += "<a href='" + pers.companyURL + "'>" +
-            pers.company + "</a>";
+                    header += "<a" + rwu + " href='" + pers.companyURL + "'>" + pers.company + "</a>";
                 } else {
                     header += pers.company;
                 }
             }
             if (pers.mailto) {
-                header += " <a href='mailto:" + pers.mailto + "'>" + pers.mailto + "</a> ";
+                header += " <a" + rm + " href='mailto:" + pers.mailto + "'>" + pers.mailto + "</a> ";
             }
             if (pers.note) {
                 header += " ( " + pers.note + " )";
             }
-            header += "</dd>";
+            if (this.doRDFa) {
+                header += "</span>\n";
+            }
+            header += "</dd>\n";
         }
         return header;
     },
@@ -513,7 +593,11 @@
             if (!this.previousURI) {
                 this.previousURI = "http://www.w3.org/TR/" + this.previousPublishDate.getFullYear() + "/" + pmat + "-" + this.shortName + "-" + this._concatDate(this.previousPublishDate) + "/";
             }
-            prevVersion = "<a href='" + this.previousURI + "'>" + this.previousURI + "</a>";
+            if (this.doRDFa) {
+                prevVersion = "<a rel='dcterms:replaces' href='" + this.previousURI + "'>" + this.previousURI + "</a>";
+            } else {
+                prevVersion = "<a href='" + this.previousURI + "'>" + this.previousURI + "</a>";
+            }
             // var latestURI = "http://www.w3.org/TR/" + this.shortName + "/";
             // latestVersion = "<a href='" + latestURI + "'>" + latestURI + "</a>";
         }
@@ -528,14 +612,25 @@
             header += "<a href='http://www.w3.org/'><img width='72' height='48' src='http://www.w3.org/Icons/w3c_home' alt='W3C'/></a>";
         if (this.specStatus == 'XGR') 
             header += "<a href='http://www.w3.org/2005/Incubator/XGR/'><img alt='W3C Incubator Report' src='http://www.w3.org/2005/Incubator/images/XGR' height='48' width='160'/></a>";
-        header +=
-            "<h1 class='title' id='title'>" + this.title + "</h1>" ;
-        if (this.subtitle) {
-            header += "<h2 id='subtitle'>" + this.subtitle + "</h2>" ;
+        if ( this.doRDFa ) {
+            header +=
+                "<h1 rel='dcterms:title' class='title' id='title'>" + this.title + "</h1>" ;
+            if (this.subtitle) {
+                header += "<h2 rel='bibo:subtitle' id='subtitle'>" + this.subtitle + "</h2>" ;
+            }
+            header +=
+                "<h2 property='dcterms:issued' content='" + this.publishDate + "'>" + (this.specStatus == "unofficial" ? "" : "W3C ") + 
+                this.status2text[this.specStatus] + " " + this._humanDate(this.publishDate) + "</h2><dl>";
+        } else {
+            header +=
+                "<h1 class='title' id='title'>" + this.title + "</h1>" ;
+            if (this.subtitle) {
+                header += "<h2 id='subtitle'>" + this.subtitle + "</h2>" ;
+            }
+            header +=
+                "<h2>" + (this.specStatus == "unofficial" ? "" : "W3C ") + 
+                this.status2text[this.specStatus] + " " + this._humanDate(this.publishDate) + "</h2><dl>";
         }
-        header +=
-            "<h2>" + (this.specStatus == "unofficial" ? "" : "W3C ") + 
-            this.status2text[this.specStatus] + " " + this._humanDate(this.publishDate) + "</h2><dl>";
         if (!this.isNoTrack) {
             header += "<dt>This version:</dt><dd><a href='" + thisVersion + "'>" + thisVersion + "</a></dd>" + 
                       "<dt>Latest published version:</dt><dd>" + latestVersion + "</dd>"; 
@@ -603,14 +698,24 @@
             else header += "This document is licensed under a <a class='subfoot' href='http://creativecommons.org/licenses/by/3.0/' rel='license'>Creative Commons Attribution 3.0 License</a>.";
         }
         else {
+            if (this.doRDFa) {
+            header += 
+                "<a rel='license' href='http://www.w3.org/Consortium/Legal/ipr-notice#Copyright'>Copyright</a> &copy; " ;
+            } else {
             header += 
                 "<a href='http://www.w3.org/Consortium/Legal/ipr-notice#Copyright'>Copyright</a> &copy; " ;
+            }
             if (this.copyrightStart) {
                 header += this.copyrightStart + '-';
             }
             header += this.publishDate.getFullYear();
             if (this.additionalCopyrightHolders) header += " " + this.additionalCopyrightHolders + " &amp;";
-            header += " <a href='http://www.w3.org/'><acronym title='World Wide Web Consortium'>W3C</acronym></a><sup>&reg;</sup> " + 
+            if (this.doRDFa) {
+                header += " <a rel='dcterms:publisher' href='http://www.w3.org/'><acronym title='World Wide Web Consortium'>W3C</acronym></a><sup>&reg;</sup> ";
+            } else {
+                header += " <a href='http://www.w3.org/'><acronym title='World Wide Web Consortium'>W3C</acronym></a><sup>&reg;</sup> " ;
+            }
+            header +=
                 "(<a href='http://www.csail.mit.edu/'><acronym title='Massachusetts Institute of Technology'>MIT</acronym></a>, " +
                 "<a href='http://www.ercim.eu/'><acronym title='European Research Consortium for Informatics and Mathematics'>ERCIM</acronym></a>, " +
                 "<a href='http://www.keio.ac.jp/'>Keio</a>), All Rights Reserved. " +
@@ -976,10 +1081,20 @@
             refs.sort();
             if (refs.length) {
                 var dl = sn.element("dl", { "class": "bibliography" }, sec);
+                if (this.doRDFa) {
+                    dl.setAttribute('about', '') ;
+                }
                 for (var j = 0; j < refs.length; j++) {
                     var ref = refs[j];
                     sn.element("dt", { id: "bib-" + ref }, dl, "[" + ref + "]");
                     var dd = sn.element("dd", {}, dl);
+                    if (this.doRDFa) {
+                        if (type == 'Normative') {
+                            dd.setAttribute('rel','dcterms:requires');
+                        } else {
+                            dd.setAttribute('rel','dcterms:references');
+                        }
+                    }
                     if (berjon.biblio[ref]) dd.innerHTML = berjon.biblio[ref] + "\n";
                 }
             }

Received on Monday, 5 July 2010 19:02:28 UTC