Show
Ignore:
Timestamp:
09/21/07 16:47:25 (16 months ago)
Author:
cho45
Message:

lang/javascript/userchrome/grddl.uc.js:

W3C の GRDDL サービスにとぶメニューを追加
変換済み RDF を RDF Validator にとばすように

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/userchrome/grddl.uc.js

    r221 r249  
    121121                        }, this); 
    122122                } 
     123                var mi = document.createElementNS(kXULNS, "menuitem"); 
     124                mi.setAttribute("label", "Translate via W3C GRDDL"); 
     125                mi.addEventListener("command", function (e) { 
     126                        var uri = "http://www.w3.org/2007/08/grddl/?docAddr="+encodeURIComponent(content.document.documentURI)+"&output=turtleplain" 
     127                        var newTab = gBrowser.addTab(uri); 
     128                        gBrowser.selectedTab = newTab; 
     129                }, true); 
     130                menu.appendChild(mi); 
    123131                menu.showPopup(this.panel, -1, -1, "popup", "bottomleft", "topleft"); 
    124132        }, 
     
    200208                        var xml = serializer.serializeToString(rdf); 
    201209 
    202 //                      var RDFService = Components.classes["@mozilla.org/rdf/rdf-service;1"] 
    203 //                                                 .getService(Components.interfaces.nsIRDFService); 
    204 //                      var IOService  = Components.classes["@mozilla.org/network/io-service;1"] 
    205 //                                                 .getService(Components.interfaces.nsIIOService); 
    206 //                      var ds         = Components.classes["@mozilla.org/rdf/datasource;1?name=in-memory-datasource"] 
    207 //                                                 .createInstance(Components.interfaces.nsIRDFDataSource); 
    208 //                      var rdfParser  = Components.classes["@mozilla.org/rdf/xml-parser;1"] 
    209 //                                                 .createInstance(Components.interfaces.nsIRDFXMLParser); 
    210 //                      rdfParser.parseString(ds, IOService.newURI(doc.documentURI, null, null), xml); 
    211 // 
     210                        //var uri = "data:text/xml," + encodeURI(xml); 
     211 
     212                        var RDFService = Components.classes["@mozilla.org/rdf/rdf-service;1"] 
     213                                                   .getService(Components.interfaces.nsIRDFService); 
     214                        var IOService  = Components.classes["@mozilla.org/network/io-service;1"] 
     215                                                   .getService(Components.interfaces.nsIIOService); 
     216                        var ds         = Components.classes["@mozilla.org/rdf/datasource;1?name=in-memory-datasource"] 
     217                                                   .createInstance(Components.interfaces.nsIRDFDataSource); 
     218                        var rdfParser  = Components.classes["@mozilla.org/rdf/xml-parser;1"] 
     219                                                   .createInstance(Components.interfaces.nsIRDFXMLParser); 
     220                        rdfParser.parseString(ds, IOService.newURI(doc.documentURI, null, null), xml); 
     221 
     222                        var outputStream = { 
     223                                data: "", 
     224                                close : function () {}, 
     225                                flush : function () {}, 
     226                                write : function (buffer, count) { 
     227                                        // 文字化け対策 
     228                                        this.data += decodeURIComponent(escape(buffer)); 
     229                                        return count; 
     230                                }, 
     231                                writeFrom : function (stream, count) {} , 
     232                                isNonBlocking: false 
     233                        }; 
     234                        var ser = Components.classes["@mozilla.org/rdf/xml-serializer;1"] 
     235                                            .createInstance(Components.interfaces.nsIRDFXMLSerializer); 
     236                        ser.init(ds); 
     237                        ser.QueryInterface(Components.interfaces.nsIRDFXMLSource).Serialize(outputStream); 
     238 
     239                        var uri = "http://www.w3.org/RDF/Validator/ARPServlet?RDF=" + 
     240                                  encodeURIComponent(outputStream.data.replace(/\r?\n/g, "\r\n"))  + 
     241                                  "&PARSE=Parse+RDF&TRIPLES_AND_GRAPH=PRINT_BOTH&FORMAT=PNG_EMBED"; 
     242//                      var uri = "data:text/xml," + encodeURI(outputStream.data); 
     243 
    212244//                      var resDoc = RDFService.GetResource(doc.documentURI); 
    213245//                      // resDoc を始点とするグラフのアークリソースを全て取得 
     
    224256//                              alert(target.Value); 
    225257//                      } 
    226  
    227                         var dataUri = "data:text/xml," + encodeURI(xml); 
    228                         var newTab = gBrowser.addTab(dataUri); 
     258                        var newTab = gBrowser.addTab(uri); 
    229259                        gBrowser.selectedTab = newTab; 
    230260                };