1 | var bitsMetaCapture = { |
---|
2 | _init : false, |
---|
3 | _xmlfile : null, |
---|
4 | _xmldoc : null, |
---|
5 | |
---|
6 | get STRING(){ return document.getElementById("MarkingCollectionOverlayString"); }, |
---|
7 | |
---|
8 | get DataSource(){ return window.top.bitsObjectMng.DataSource; }, |
---|
9 | get Common() { return window.top.bitsObjectMng.Common; }, |
---|
10 | get Database() { return window.top.bitsObjectMng.Database; }, |
---|
11 | get XML() { return window.top.bitsObjectMng.XML; }, |
---|
12 | get XPath() { return window.top.bitsObjectMng.XPath; }, |
---|
13 | get gBrowser() { return window.top.bitsObjectMng.getBrowser();}, |
---|
14 | |
---|
15 | get xmldoc() { return this._xmldoc; }, |
---|
16 | get xmlurl() { return (this._xmlfile?this.Common.convertFilePathToURL(this._xmlfile.path):""); }, |
---|
17 | get xmlfile() { return this._xmlfile; }, |
---|
18 | |
---|
19 | get TOKEN_HA() { return "HYPER_ANCHOR";}, |
---|
20 | get TOKEN_TITLE(){ return "WM_TITLE";}, |
---|
21 | get TOKEN_NOTE() { return "WM_NOTE";}, |
---|
22 | get TOKEN_META() { return "WM_META";}, |
---|
23 | |
---|
24 | get TOKEN_MEDLINE_PMCID(){ return "MEDLINE\\.PMCID";}, |
---|
25 | get TOKEN_MEDLINE_PMID() { return "MEDLINE\\.PMID";}, |
---|
26 | get TOKEN_MEDLINE_SO() { return "MEDLINE\\.SO";}, |
---|
27 | |
---|
28 | ///////////////////////////////////////////////////////////////////// |
---|
29 | init : function(aEvent){ |
---|
30 | if(!this._init){ |
---|
31 | var extensionDir = this.Common.getExtensionDir().clone(); |
---|
32 | if(extensionDir){ |
---|
33 | this._xmlfile = extensionDir.clone(); |
---|
34 | this._xmlfile.append("metacapture.xml"); |
---|
35 | } |
---|
36 | this._init = true; |
---|
37 | } |
---|
38 | }, |
---|
39 | |
---|
40 | ///////////////////////////////////////////////////////////////////// |
---|
41 | done : function(aEvent){}, |
---|
42 | |
---|
43 | ///////////////////////////////////////////////////////////////////// |
---|
44 | rebuild : function(){ |
---|
45 | if(this._xmlfile){ |
---|
46 | if(!this._xmlfile.exists()){ |
---|
47 | var aContent = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n'; |
---|
48 | aContent += '<!DOCTYPE METACAPTURE>\n'; |
---|
49 | aContent += '<METACAPTURE>\n'; |
---|
50 | aContent += '\t<CAPTURE_ITEMS>\n'; |
---|
51 | aContent += '\t\t<CAPTURE_ITEM tag="TITLE" value="#text"/>\n'; |
---|
52 | aContent += '\t</CAPTURE_ITEMS>\n'; |
---|
53 | aContent += '\t<META_REGEXP_ITEMS>\n'; |
---|
54 | aContent += '\t\t<META_REGEXP_ITEM tag="TITLE" use="true" regexp="" format=""/>\n'; |
---|
55 | aContent += '\t</META_REGEXP_ITEMS>\n'; |
---|
56 | aContent += '\t<COPY_ITEMS>\n'; |
---|
57 | aContent += '\t\t<COPY_ITEM name="hyperanchor" checked="true" selected="false"/>\n'; |
---|
58 | aContent += '\t\t<COPY_ITEM name="title" checked="true" selected="false"/>\n'; |
---|
59 | aContent += '\t\t<COPY_ITEM name="note" checked="true" selected="false"/>\n'; |
---|
60 | aContent += '\t\t<COPY_ITEM name="meta" checked="true" selected="false"/>\n'; |
---|
61 | aContent += '\t</COPY_ITEMS>\n'; |
---|
62 | aContent += '\t<OUTPUT_ITEMS>\n'; |
---|
63 | aContent += '\t\t<OUTPUT_ITEM format="WM_TITLE (WM_META)" regexp="Section (\\d+)/CHAPTER (\\d+)/(.+) from Gray" replace="$1-$2, $3, Gray\'s Anatomy 20th ED" location_hash="true" regexp_i="false" regexp_g="true" regexp_m="false" selected="true"/>\n'; |
---|
64 | aContent += '\t\t<OUTPUT_ITEM format="WM_TITLE [MEDLINE.SO]" regexp="\\.?\\s*Epub \\d{4} .+]\$" replace="]" location_hash="true" regexp_i="false" regexp_g="true" regexp_m="false"/>\n'; |
---|
65 | aContent += '\t\t<OUTPUT_ITEM format="WM_TITLE [PMID:MEDLINE.PMID]" regexp="" replace="" location_hash="true" regexp_i="false" regexp_g="true" regexp_m="false"/>\n'; |
---|
66 | aContent += '\t</OUTPUT_ITEMS>\n'; |
---|
67 | aContent += '</METACAPTURE>\n'; |
---|
68 | this.Common.writeFile(this._xmlfile,aContent,"UTF-8"); |
---|
69 | } |
---|
70 | function _loadXMLDocument(pUri){ |
---|
71 | if(pUri == undefined) return undefined; |
---|
72 | var xmlDocument = window.top.bitsMarkingCollection.loadXMLDocument(pUri); |
---|
73 | if(xmlDocument){ |
---|
74 | return xmlDocument; |
---|
75 | }else{ |
---|
76 | return undefined; |
---|
77 | } |
---|
78 | } |
---|
79 | function _createXMLDocument(aXMLFile){ |
---|
80 | if(!aXMLFile) return undefined; |
---|
81 | try{ |
---|
82 | return _loadXMLDocument(bitsSubstitutionTree.Common.IO.newFileURI(aXMLFile).spec); |
---|
83 | }catch(ex){ |
---|
84 | bitsSubstitutionTree._dump("bitsSubstitutionTree._createXMLDocument():"+ ex); |
---|
85 | return undefined; |
---|
86 | } |
---|
87 | } |
---|
88 | this._xmldoc = _createXMLDocument(this._xmlfile); |
---|
89 | } |
---|
90 | }, |
---|
91 | |
---|
92 | ///////////////////////////////////////////////////////////////////// |
---|
93 | xmlflash : function(){ |
---|
94 | if(bitsMetaCapture.xmldoc && bitsMetaCapture._xmlfile){ |
---|
95 | var s = new XMLSerializer(); |
---|
96 | var xml = s.serializeToString(bitsMetaCapture.xmldoc); |
---|
97 | bitsMetaCapture.Common.writeFile(bitsMetaCapture._xmlfile, xml+"\n","UTF-8"); |
---|
98 | } |
---|
99 | }, |
---|
100 | |
---|
101 | ///////////////////////////////////////////////////////////////////// |
---|
102 | // äžå¿äºææ§ã®çºã«å®çŸ©ããŠãã |
---|
103 | ///////////////////////////////////////////////////////////////////// |
---|
104 | copyToClipBoardByHyperanchor : function(aOID,aDBType){ |
---|
105 | this.copyToClipBoard(aOID,aDBType,"copy"); |
---|
106 | }, |
---|
107 | |
---|
108 | ///////////////////////////////////////////////////////////////////// |
---|
109 | copyToClipBoard : function(aOID,aDBType,aMode){ |
---|
110 | var obj = bitsMetaCapture.Database.getObject({oid:aOID},aDBType); |
---|
111 | if(obj && obj.length>0){ |
---|
112 | var xmldoc = null; |
---|
113 | if(aMode == "copy" || aMode == "copyformat" || aMode == "note" || aMode == "meta" || aMode == "format" || aMode == "setting"){ |
---|
114 | var parser = new DOMParser(); |
---|
115 | try{ xmldoc = parser.parseFromString(obj[0].oid_property,"text/xml"); }catch(e){xmldoc = null; } |
---|
116 | parser = undefined; |
---|
117 | } |
---|
118 | if(aMode == "copy"){ |
---|
119 | var copytext = ""; |
---|
120 | if(xmldoc && xmldoc.documentElement){ |
---|
121 | var xmlnode = xmldoc.getElementsByTagName("HYPER_ANCHOR")[0]; |
---|
122 | if(xmlnode) copytext = xmlnode.textContent; |
---|
123 | if(!copytext) copytext = obj[0].con_url; |
---|
124 | } |
---|
125 | this.textToClipBoard(copytext); |
---|
126 | |
---|
127 | }else if(aMode == "note"){ |
---|
128 | var copytext = ""; |
---|
129 | if(xmldoc && xmldoc.documentElement){ |
---|
130 | var xmlnode = xmldoc.getElementsByTagName("NOTE")[0]; |
---|
131 | if(xmlnode) copytext = xmlnode.textContent; |
---|
132 | } |
---|
133 | this.textToClipBoard(copytext); |
---|
134 | |
---|
135 | }else if(aMode == "pagetitle"){ |
---|
136 | this.textToClipBoard(obj[0].doc_title); |
---|
137 | |
---|
138 | }else if(aMode == "meta"){ |
---|
139 | var text_arr = []; |
---|
140 | this.rebuild(); |
---|
141 | var capture_items = this.XPath.evaluateArray('/METACAPTURE[1]/CAPTURE_ITEMS[1]/CAPTURE_ITEM',this.xmldoc); |
---|
142 | if(capture_items && capture_items.length > 0){ |
---|
143 | var pt_flag = (capture_items.length>1?true:false); |
---|
144 | for(var i=0;i<capture_items.length;i++){ |
---|
145 | var tag = capture_items[i].getAttribute("tag"); |
---|
146 | if(tag == "TITLE"){ |
---|
147 | text_arr.push((pt_flag?tag+"\t\t":"")+obj[0].doc_title); |
---|
148 | }else{ |
---|
149 | var name = capture_items[i].getAttribute("name"); |
---|
150 | var aExpr; |
---|
151 | if(name){ |
---|
152 | aExpr = '//METACAPTURE[@tag="'+tag+'" and @name="'+name+'"]'; |
---|
153 | }else{ |
---|
154 | aExpr = '//METACAPTURE[@tag="'+tag+'"]'; |
---|
155 | name = "" |
---|
156 | } |
---|
157 | var results = this.XPath.evaluateArray(aExpr,xmldoc); |
---|
158 | if(results && results.length > 0){ |
---|
159 | for(var j=0;j<results.length;j++){ |
---|
160 | text_arr.push((pt_flag?tag+"\t"+name+"\t":"")+results[j].getAttribute("content")); |
---|
161 | } |
---|
162 | } |
---|
163 | } |
---|
164 | } |
---|
165 | } |
---|
166 | this.textToClipBoard(text_arr.join("\n")); |
---|
167 | |
---|
168 | }else if(aMode == "copytext" || aMode == "title"){ |
---|
169 | this.textToClipBoard(obj[0].oid_title); |
---|
170 | |
---|
171 | }else if(aMode == "format"){ |
---|
172 | this.rebuild(); |
---|
173 | this.textToClipBoard(this.makeFormatText(this.xmldoc,{ |
---|
174 | oid_property : xmldoc, |
---|
175 | doc_title : obj[0].doc_title, |
---|
176 | oid_title : obj[0].oid_title, |
---|
177 | con_url : obj[0].con_url |
---|
178 | })); |
---|
179 | |
---|
180 | }else if(aMode == "copyformat" || aMode == "setting"){ |
---|
181 | setTimeout(function(){ |
---|
182 | bitsMetaCapture.rebuild(); |
---|
183 | |
---|
184 | var result = {}; |
---|
185 | result.accept = false; |
---|
186 | result.xmldoc = bitsMetaCapture.xmldoc; |
---|
187 | result.xmlfile = bitsMetaCapture.xmlfile; |
---|
188 | result.xmlflash = bitsMetaCapture.xmlflash; |
---|
189 | result.makeFormatText = bitsMetaCapture.makeFormatText; |
---|
190 | result.oid_property = xmldoc; |
---|
191 | result.doc_title = obj[0].doc_title; |
---|
192 | result.oid_title = obj[0].oid_title; |
---|
193 | result.con_url = obj[0].con_url; |
---|
194 | window.openDialog("chrome://markingcollection/content/metaCaptureDialog.xul", "", "chrome,centerscreen,modal,dialog,resizable=yes", result); |
---|
195 | if(result.accept){ |
---|
196 | bitsMetaCapture.xmlflash(); |
---|
197 | } |
---|
198 | },0); |
---|
199 | } |
---|
200 | } |
---|
201 | }, |
---|
202 | |
---|
203 | ///////////////////////////////////////////////////////////////////// |
---|
204 | textToClipBoard : function(aText){ |
---|
205 | if(aText){ |
---|
206 | var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString); |
---|
207 | str.data=aText; |
---|
208 | var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable); |
---|
209 | trans.addDataFlavor("text/unicode"); |
---|
210 | trans.setTransferData("text/unicode",str,aText.length*2); |
---|
211 | var clip = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard); |
---|
212 | clip.emptyClipboard(clip.kGlobalClipboard); |
---|
213 | clip.setData(trans,null,clip.kGlobalClipboard); |
---|
214 | } |
---|
215 | }, |
---|
216 | |
---|
217 | ///////////////////////////////////////////////////////////////////// |
---|
218 | makeFormatText : function(aXMLDoc,aData){ |
---|
219 | if(!aXMLDoc || !aData) return ""; |
---|
220 | var setting = {}; |
---|
221 | var format_text = {}; |
---|
222 | var results = this.XPath.evaluateArray('/METACAPTURE[1]/OUTPUT_ITEMS[1]/OUTPUT_ITEM[@selected="true"]',aXMLDoc); |
---|
223 | if(results && results.length > 0){ |
---|
224 | setting.format = results[0].getAttribute("format"); |
---|
225 | setting.regexp = results[0].getAttribute("regexp"); |
---|
226 | setting.replace = results[0].getAttribute("replace"); |
---|
227 | setting.location_hash = (results[0].getAttribute("location_hash")=="true"?true:false); |
---|
228 | setting.regexp_i = (results[0].getAttribute("regexp_i")=="true"?true:false); |
---|
229 | setting.regexp_g = (results[0].getAttribute("regexp_g")=="true"?true:false); |
---|
230 | setting.regexp_m = (results[0].getAttribute("regexp_m")=="true"?true:false); |
---|
231 | }else{ |
---|
232 | return ""; |
---|
233 | } |
---|
234 | var results = this.XPath.evaluateArray('/METACAPTURE[1]/OUTPUT_ITEMS[1]',aXMLDoc); |
---|
235 | if(results && results.length > 0){ |
---|
236 | setting.anchor_checked = (results[0].getAttribute("anchor_checked")=="true"?true:false); |
---|
237 | } |
---|
238 | var value = aData.con_url; |
---|
239 | var elem = aData.oid_property.getElementsByTagName("HYPER_ANCHOR")[0]; |
---|
240 | if(elem) value = elem.textContent; |
---|
241 | if(value && setting.location_hash){ |
---|
242 | var hashReg = new RegExp("^(.+)(#"+bitsHyperAnchorDummy._anchor_title + ")"); |
---|
243 | try{var textContent = aData.oid_property.getElementsByTagName("LOCATION_HASH")[0].textContent;}catch(e){textContent = "";} |
---|
244 | value = value.replace(hashReg,"$1#"+ textContent +"$2"); |
---|
245 | } |
---|
246 | format_text.hyperanchor = value; |
---|
247 | if(aData.oid_title){ |
---|
248 | format_text.title = aData.oid_title; |
---|
249 | }else{ |
---|
250 | format_text.title = ""; |
---|
251 | } |
---|
252 | var value = ""; |
---|
253 | var elem = aData.oid_property.getElementsByTagName("NOTE")[0]; |
---|
254 | if(elem) value = elem.textContent; |
---|
255 | format_text.note = value; |
---|
256 | var value = ""; |
---|
257 | var attrs = []; |
---|
258 | var attrs_hash = {}; |
---|
259 | var regexps = this.XPath.evaluateArray('/METACAPTURE[1]/META_REGEXP_ITEMS[1]/META_REGEXP_ITEM[@use="true"]',aXMLDoc); |
---|
260 | for(var regcnt=0;regcnt<regexps.length;regcnt++){ |
---|
261 | var temp_attrs = []; |
---|
262 | var nodeName = "tag"; |
---|
263 | var nodeValue = regexps[regcnt].getAttribute(nodeName); |
---|
264 | if(nodeValue != null && nodeValue != "") temp_attrs.push('@'+nodeName+'="'+nodeValue+'"'); |
---|
265 | var nodeName = "name"; |
---|
266 | var nodeValue = regexps[regcnt].getAttribute(nodeName); |
---|
267 | if(nodeValue != null && nodeValue != "") temp_attrs.push('@'+nodeName+'="'+nodeValue+'"'); |
---|
268 | if(temp_attrs.length == 0) continue; |
---|
269 | var attrs_key = temp_attrs.join(" and "); |
---|
270 | if(attrs_hash[attrs_key] == undefined){ |
---|
271 | attrs.push(attrs_key); |
---|
272 | attrs_hash[attrs_key] = []; |
---|
273 | } |
---|
274 | var temp_attrs = {}; |
---|
275 | var nodeName = "regexp"; |
---|
276 | var nodeValue = regexps[regcnt].getAttribute(nodeName); |
---|
277 | if(nodeValue != null) temp_attrs[nodeName] = nodeValue; |
---|
278 | var nodeName = "format"; |
---|
279 | var nodeValue = regexps[regcnt].getAttribute(nodeName); |
---|
280 | if(nodeValue != null) temp_attrs[nodeName] = nodeValue; |
---|
281 | attrs_hash[attrs_key].push(temp_attrs); |
---|
282 | } |
---|
283 | for(var regcnt=0;regcnt<attrs.length;regcnt++){ |
---|
284 | var attrs_key = attrs[regcnt]; |
---|
285 | if(attrs_key.indexOf('@tag="TITLE"')>=0){ |
---|
286 | var textContent = aData.doc_title; |
---|
287 | for(var rcnt=0;rcnt<attrs_hash[attrs_key].length;rcnt++){ |
---|
288 | var regexp = attrs_hash[attrs_key][rcnt].regexp; |
---|
289 | var format = attrs_hash[attrs_key][rcnt].format; |
---|
290 | if(!regexp || regexp == "") continue; |
---|
291 | try{regexp = new RegExp(regexp);}catch(e){regexp=null;} |
---|
292 | if(!regexp) continue; |
---|
293 | if(!textContent.match(regexp)) continue; |
---|
294 | textContent = textContent.replace(regexp,format); |
---|
295 | } |
---|
296 | value += textContent; |
---|
297 | }else{ |
---|
298 | var nodes = this.XPath.evaluateArray("//METACAPTURE[" + attrs_key + "]",aData.oid_property); |
---|
299 | for(var ncnt=0;ncnt<nodes.length;ncnt++){ |
---|
300 | var elem = nodes[ncnt]; |
---|
301 | var textContent = elem.getAttribute("content"); |
---|
302 | if(textContent == null || textContent == "") textContent = elem.textContent; |
---|
303 | for(var rcnt=0;rcnt<attrs_hash[attrs_key].length;rcnt++){ |
---|
304 | var regexp = attrs_hash[attrs_key][rcnt].regexp; |
---|
305 | var format = attrs_hash[attrs_key][rcnt].format; |
---|
306 | if(!regexp || regexp == "") continue; |
---|
307 | try{regexp = new RegExp(regexp);}catch(e){regexp=null;} |
---|
308 | if(!regexp) continue; |
---|
309 | if(!textContent.match(regexp)) continue; |
---|
310 | textContent = textContent.replace(regexp,format); |
---|
311 | } |
---|
312 | value += textContent; |
---|
313 | } |
---|
314 | } |
---|
315 | } |
---|
316 | format_text.meta = value; |
---|
317 | format_text.medline = {}; |
---|
318 | var value = ""; |
---|
319 | var elem = aData.oid_property.getElementsByTagName("PMCID")[0]; |
---|
320 | if(elem) value = elem.textContent; |
---|
321 | format_text.medline.pmcid = value; |
---|
322 | var value = ""; |
---|
323 | var elem = aData.oid_property.getElementsByTagName("PMID")[0]; |
---|
324 | if(elem) value = elem.textContent; |
---|
325 | format_text.medline.pmid = value; |
---|
326 | var value = ""; |
---|
327 | var elem = aData.oid_property.getElementsByTagName("SO")[0]; |
---|
328 | if(elem) value = elem.textContent; |
---|
329 | format_text.medline.so = value; |
---|
330 | var output = setting.format; |
---|
331 | var flag = ""; |
---|
332 | flag += (setting.regexp_i?'i':''); |
---|
333 | flag += (setting.regexp_g?'g':''); |
---|
334 | flag += (setting.regexp_m?'m':''); |
---|
335 | try{var regexp = (setting.regexp?new RegExp(setting.regexp,flag):null);}catch(e){this._dump(e);} |
---|
336 | var replace_text = setting.replace; |
---|
337 | var replacement_key = null; |
---|
338 | replacement_key = new RegExp(bitsMetaCapture.TOKEN_HA,'g'); |
---|
339 | output = output.replace(replacement_key,format_text.hyperanchor); |
---|
340 | replacement_key = new RegExp(bitsMetaCapture.TOKEN_TITLE,'g'); |
---|
341 | output = output.replace(replacement_key,format_text.title); |
---|
342 | replacement_key = new RegExp(bitsMetaCapture.TOKEN_NOTE,'g'); |
---|
343 | output = output.replace(replacement_key,format_text.note); |
---|
344 | replacement_key = new RegExp(bitsMetaCapture.TOKEN_META,'g'); |
---|
345 | output = output.replace(replacement_key,format_text.meta); |
---|
346 | replacement_key = new RegExp(bitsMetaCapture.TOKEN_MEDLINE_PMCID,'g'); |
---|
347 | output = output.replace(replacement_key,format_text.medline.pmcid); |
---|
348 | replacement_key = new RegExp(bitsMetaCapture.TOKEN_MEDLINE_PMID,'g'); |
---|
349 | output = output.replace(replacement_key,format_text.medline.pmid); |
---|
350 | replacement_key = new RegExp(bitsMetaCapture.TOKEN_MEDLINE_SO,'g'); |
---|
351 | output = output.replace(replacement_key,format_text.medline.so); |
---|
352 | if(regexp && output.match(regexp)) output = output.replace(regexp,replace_text); |
---|
353 | if(setting.anchor_checked) output = '<a href="'+format_text.hyperanchor+'">'+output+'</a>'; |
---|
354 | output = output.replace(/\\n/g,"\n"); |
---|
355 | return output; |
---|
356 | }, |
---|
357 | |
---|
358 | ///////////////////////////////////////////////////////////////////// |
---|
359 | capture : function(aDoc,aProperty){ |
---|
360 | var confirm = nsPreferences.getBoolPref("wiredmarker.meta.capture.confirm", true); |
---|
361 | if(!confirm) return aProperty; |
---|
362 | this.rebuild(); |
---|
363 | var capture_items = this.XPath.evaluateArray('/METACAPTURE[1]/CAPTURE_ITEMS[1]/CAPTURE_ITEM[@tag!="TITLE"]',this.xmldoc); |
---|
364 | if(!capture_items || capture_items.length == 0) return aProperty; |
---|
365 | if(!aProperty || aProperty == "") aProperty = "<PROPERTY/>"; |
---|
366 | var parser = new DOMParser(); |
---|
367 | var xmldoc = parser.parseFromString(aProperty,"text/xml"); |
---|
368 | var extnode = null |
---|
369 | var results = this.XPath.evaluateArray('//EXTENDED_MESSAGE',xmldoc); |
---|
370 | if(!results || results.length == 0){ |
---|
371 | extnode = xmldoc.createElement("EXTENDED_MESSAGE"); |
---|
372 | xmldoc.documentElement.appendChild(extnode); |
---|
373 | }else{ |
---|
374 | extnode = results[0]; |
---|
375 | } |
---|
376 | var metanodes = null; |
---|
377 | var results = this.XPath.evaluateArray('//METACAPTURES',xmldoc); |
---|
378 | if(!results || results.length == 0){ |
---|
379 | metanodes = xmldoc.createElement("METACAPTURES"); |
---|
380 | extnode.appendChild(metanodes); |
---|
381 | }else{ |
---|
382 | metanodes = results[0]; |
---|
383 | } |
---|
384 | for(var i=0;i<capture_items.length;i++){ |
---|
385 | var tag = capture_items[i].getAttribute("tag"); |
---|
386 | var name = capture_items[i].getAttribute("name"); |
---|
387 | var value = capture_items[i].getAttribute("value"); |
---|
388 | if(!value) value = "#text"; |
---|
389 | var aExpr = '//'+tag.toLowerCase(); |
---|
390 | if(name) aExpr += '[@name="'+name+'"]'; |
---|
391 | var results = this.XPath.evaluateArray(aExpr,aDoc); |
---|
392 | if(results && results.length > 0){ |
---|
393 | for(var j=0;j<results.length;j++){ |
---|
394 | var metanode = xmldoc.createElement("METACAPTURE"); |
---|
395 | metanode.setAttribute("tag",tag); |
---|
396 | if(name) metanode.setAttribute("name",name); |
---|
397 | metanode.setAttribute("content",(value=="#text"?results[j].textContent:results[j].getAttribute(value))); |
---|
398 | metanodes.appendChild(metanode); |
---|
399 | } |
---|
400 | } |
---|
401 | } |
---|
402 | var s = new XMLSerializer(); |
---|
403 | return s.serializeToString(xmldoc); |
---|
404 | }, |
---|
405 | |
---|
406 | ///////////////////////////////////////////////////////////////////// |
---|
407 | _dump : function(aString){ |
---|
408 | window.top.bitsMarkingCollection._dump(aString); |
---|
409 | }, |
---|
410 | } |
---|