Been quite awhile since I've looked at this area but thought I'd point out 
that the DOM specification says "cloning Document, DocumentType, Entity, 
and Notation nodes is implementation dependent". If you're cloning 
Document nodes it can do whatever the implementer felt was reasonable 
which may or may not be what you hoped for. From an API perspective the 
behaviour is undefined.

Thanks.

Michael Glavassevich
XML Technologies and WAS Development
IBM Toronto Lab
E-mail: mrgla...@ca.ibm.com
E-mail: mrgla...@apache.org

"Jacob Kjome" <h...@visi.com> wrote on 08/28/2013 01:05:40 PM:

> I see.  So, once the attributes are set as specified during cloning, 
there's 
> no going back, even after in-memory validation since it will have been 
as if 
> the parser had found the attributes explicitly specified in the 
> original XML.  
> As such, the validation can't mark them as unspecified since, from all 
> appearances, they were specified in the XML.  Correct?
> 
> What about UserDataHandlers?  Would it be possible, at parse time, 
> to add them 
> to Attr nodes that are unspecified so that when the clone occurs 
(setting 
> these attributes to specified), the UserDataHandlers can reset these 
> attributes back to unspecified?  I haven't looked into how that would 
work, 
> but it would be nice to know whether to bother researching it or not.
> 
> The documentURI issue is much easier to deal with, since I can copy the 
value 
> prior to the clone and reset it manually after the clone.
> 
> While I'm at it, I figure I'll lobby for application of a patch I 
submitted a 
> while back related to cloning and Attr ID'ness...
> https://issues.apache.org/jira/browse/XERCESJ-1597
> 
> The following issue also seems somewhat related...
> https://issues.apache.org/jira/browse/XERCESJ-1430
> 
> 
> Thanks,
> 
> Jake
> 
> On Wed, 28 Aug 2013 19:02:05 +0530
>  Mukul Gandhi <muk...@apache.org> wrote:
> > Here are my opinion for these questions. Sorry I couldn't do any tests 
as
> > yet.
> > 
> > On Wed, Aug 28, 2013 at 10:28 AM, Jacob Kjome <h...@visi.com> wrote:
> > 
> >> However, after cloning the document (Document = (Document)
> >> doc.cloneNode(true)) all the equivalent cloned Attrs show up as
> >> "Attr.getSpecified() == true".  Is that to be expected or a bug?
> > 
> > 
> > I think this is an expected behavior. The cloneNode() documentation 
at,
> > http://xerces.apache.org/xerces2-j/javadocs/api/org/w3c/dom/
> Node.htmlmentions
> > 
> > "In addition, clones of unspecified Attr nodes are specified". This 
should
> > clarify this doubt I think.
> > 
> > And a side-question: should I expect the value of 
Document.getDocumentURI()
> >> be preserved after cloning?  Because that value appears to be 
discarded.
> >>
> > 
> > The cloneNode() spec doesn't mention any constraints wrt this aspect. 
So
> > if, after a node clone a document URI is not preserved, I would say 
this is
> > compliant to the spec of this method. Other than, going by the 
wordings of
> > the spec, I think a clone is happening on an object representation of 
the
> > original document and objects do not have a URI, therefore a clone
> > operation not preserving the document URI looks acceptable to me.
> > 
> > 
> >> I'd like to be able to preserve the "specified" state in the clone so 
that
> >> when the document is serialized, I can avoid printing these 
attributes by
> >> skipping those with "specified == false".  Seems to me this should be
> >> possible.  If not, why not?
> >>
> > 
> > I think, this is a sensible use case. But the default implementation
> > provided, doesn't make it possible for you. This might be addressed by 
an
> > external application logic. You may keep the "specified" state of
> > attributes external to your main document (or a more challenging way 
may be
> > to, read it directly from DTD), and during serialization use this 
extra
> > information to affect the serialization in your desired way. Another
> > approach may be to, let the serializer emit the unspecified attributes 
and
> > then use this output with a DTD or an external metadata as a unit for 
your
> > application.
> > 
> > 
> > 
> >>
> >> --
> >> Regards,
> >> Mukul Gandhi <j-users-h...@xerces.apache.org>
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: j-users-unsubscr...@xerces.apache.org
> For additional commands, e-mail: j-users-h...@xerces.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: j-users-unsubscr...@xerces.apache.org
For additional commands, e-mail: j-users-h...@xerces.apache.org

Reply via email to