Return-Path: Delivered-To: apmail-xml-general-archive@www.apache.org Received: (qmail 42969 invoked from network); 17 Apr 2006 13:17:58 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 17 Apr 2006 13:17:58 -0000 Received: (qmail 92932 invoked by uid 500); 17 Apr 2006 13:17:57 -0000 Delivered-To: apmail-xml-general-archive@xml.apache.org Received: (qmail 92698 invoked by uid 500); 17 Apr 2006 13:17:55 -0000 Mailing-List: contact general-help@xml.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: general@xml.apache.org List-Id: Delivered-To: mailing list general@xml.apache.org Received: (qmail 92687 invoked by uid 99); 17 Apr 2006 13:17:55 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 17 Apr 2006 06:17:55 -0700 X-ASF-Spam-Status: No, hits=1.4 required=10.0 tests=SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (asf.osuosl.org: 204.127.192.81 is neither permitted nor denied by domain of hoju@visi.com) Received: from [204.127.192.81] (HELO rwcrmhc11.comcast.net) (204.127.192.81) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 17 Apr 2006 06:17:54 -0700 Received: from nicki.visi.com (c-66-41-141-26.hsd1.mn.comcast.net[66.41.141.26]) by comcast.net (rwcrmhc11) with SMTP id <20060417131732m11005f0nme>; Mon, 17 Apr 2006 13:17:33 +0000 Message-Id: <7.0.1.0.0.20060417080950.048f7970@visi.com> X-Mailer: QUALCOMM Windows Eudora Version 7.0.1.0 Date: Mon, 17 Apr 2006 08:17:53 -0500 To: general@xml.apache.org From: Jacob Kjome Subject: Re: best approach to whole document cloning in Xerces2? In-Reply-To: References: <7.0.1.0.0.20060416010355.00adfb60@syntegra.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed X-Relayed-By: GPGrelay Version 0.959 (Win32) X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N At 11:17 AM 4/16/2006, you wrote: >Hi Jake, > >The behaviour of Document.cloneNode(true) [1] is implementation dependent. >In Xerces it will create a new Document and then import the children from >the original document. Which would leave out the DTD, I suppose. So, it would make more sense to create my own document and do something like this, right?... DOMImplementation domImpl = document.getImplementation(); String documentElement = document.getDoctype().getName(); DocumentType docType = domImpl.createDocumentType(documentElement, document.getDoctype().getPublicId(), document.getDoctype().getSystemId()); Document doc = domImpl.createDocument("", documentElement, docType); Node node = doc.importNode(document.getDocumentElement(), true); doc.replaceChild(node, doc.getDocumentElement()); This is what I do currently to get a copy of the template DOM at runtime, but I just want to make sure I'm doing it the most correct and efficient way possible. Of course, this leaves out any internal subset and entity nodes, no? How would I clone it all? Is it possible via the DOM interfaces? > I would be really surprised if reparsing the >document performed better than an in-memory copy (unless you had a >UserDataHandler [2] registered which does some heavy operation in response >to the cloning/importing). > I kind of figured this, but I just wanted to make sure that the caching of template DOM's that I'm doing makes sense. Jake >[1] >http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#ID-3A0ED0A4 >[2] >http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#User >DataHandler > >Michael Glavassevich >XML Parser Development >IBM Toronto Lab >E-mail: mrglavas@ca.ibm.com >E-mail: mrglavas@apache.org > >Jacob Kjome wrote on 04/16/2006 02:17:10 AM: > >> >> I'm wondering what's the best approach to cloning an entire >> document? Would it be better to keep a master copy in memory and >> then create a new document and import the other document in there, or >> would it be better to simply reparse the document every time (where >> the document is used over and over again as a template, a copy is >> created and manipulated on each HTTP request, then serialized to the >> browser)? If I keep the document in memory and know I am dealing >> with the Xerces2 implementation, can I just call cloneNode(true) and >> get an identical copy of the whole document, including doctype, >> entities, entity references, etc...? Again, would this be more >> efficient than reparsing the document each time with, say, the >> Xerces2 DOMParser? Is there a clear-cut answer to this, or does it >> depend on document size or other aspect of the document or environment? >> >> thanks, >> >> Jake >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: general-unsubscribe@xml.apache.org >> For additional commands, e-mail: general-help@xml.apache.org > > >--------------------------------------------------------------------- >To unsubscribe, e-mail: general-unsubscribe@xml.apache.org >For additional commands, e-mail: general-help@xml.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: general-unsubscribe@xml.apache.org For additional commands, e-mail: general-help@xml.apache.org