Hi Urs,

Urs Reupke wrote:

I did a debug run and watched for the method calls and objects resulting.
Two observations:
First, all three parameters handed from dom4j to
SVGDOMImplementation.createDocument(String namespaceURI, String qualifiedName, DocumentType doctype) are 'null'.
Could this be related to the problem?

   I don't think so, this just prevents the creation of the root
node.

Afterwards, the recreation of the DOM-tree happened, which I didn't follow step-by-step.

Next, however, I looked at the resulting SVGOMDocument
and noted that there is an Symbol-Element (SVGOMSymbolElement) within the SVGOMDefsElement contained by the SVGOMSVGElement. This Symbol-Element has an Attribute "id" (name="id") with a value of "Solar" (value.lastChild.nodeValue="Solar"). The first child of said value field (value.firstChild), however, doesn't have a value entry at all.

   I'm guessing this is the problem.  I think that we aren't tracking
the addition/removal of child nodes directly from the Attribute Node.
I'm looking into this now, the tricky bit is that it isn't clear to
me what events should be sent in this case (DOM Node Inserted, DOM Attr
Modified? both?).

So it seems to me the ID is properly registered. Is there any place apart from the attribute-map of the node in question where the ID has to be known?

   Yes, the Document maintains a hash table of all the Id's on any
element it created.  This is what getElementById uses so that this
is a quick operation.


I hope this helps you a bit
-Urs

Thomas DeWeese wrote:

Hi Urs,

Urs Reupke wrote:

here's the stack trace as given by the dialog:
org.apache.batik.bridge.BridgeException: null: -1
Cannot find the referenced element: "#Solar"
specified on the element <use> - may be a problem of id
at org.apache.batik.bridge.BridgeContext.getReferencedElement(Unknown Source) at



   Unfortunately this is not the 'original' error however I believe that
this error indicates that 'doc.getElementById("Solar")' is failing.
For Batik 1.6 we changed how getElementById works and so I'm wondering
if there is something a little odd in how DOM 4 J builds the
Batik DOM that causes Batik to miss registering the 'id' attributes
with the hash table.

   Can you check if getElementById("Solar") works?  So after you
construct the Batik DOM from Dom4J just println the results of
calling getElementById("Solar").

   If this returns 'null' as I suspect then we will need to dig into
how Dom4J adds attributes to the Document it is building...

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to