Martin, thanks anyway for your effort, I appreciate that! I hope I'll be able to start a project using Batik for SVG display and interaction. That's one reason why I'm interested in what's going on here.
Vielen Dank! Thomas > -----Ursprüngliche Nachricht----- > Von: "Martin Jacobson" <[email protected]> > Gesendet: 03.11.09 08:05:36 > An: [email protected] > Betreff: Re: unable to add property to JavaScript node object > Thomas, > > You're quite right to be stubborn! Unfortunately, I can no longer be > of much help: I use Batik, but I use the Java binding to the DOM, and > know much less about how the DOM interacts with JavaScript. I hope > someone with more experience of Javascript can help you. > > mit freundlichen gruessen, > Martin > > 2009/11/3 <[email protected]>: > >> -----Ursprüngliche Nachricht----- > >> Von: "Martin Jacobson" <[email protected]> > > > >> I see what you mean, but the problem is, the properties of a DOM node > >> object ARE the attributes of the XML node! > > > > > > Sorry, but I doubt that. Take the following example: > > > > <?xml version="1.0"?> > > <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" > > "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> > > > > <svg version="1.1" xmlns="http://www.w3.org/2000/svg" onload="init()"> > > <script type="text/javascript"> > > init = function(){ > > testnode = document.getElementById("testnode") > > alert(testnode.fill) > > alert(testnode.getAttributeNS(null,"fill")) > > testnode.fill="red" > > } > > </script> > > <rect id="testnode" fill="black" width="100" height="100" x="150" y="150"/> > > </svg> > > > > > > If you were right, then alert(testnode.fill) should say "black", but it > > doesn't. Neither with Batik nor in any Browser I tested. Likewise, > > testnode.fill="red" should change the rect's color to red, but it doesn't. > > I get the familiar error message: > > > > Java class "org.apache.batik.dom.svg.SVGOMRectElement" has no public > > instance field or method named "fill". (Inline <script> > > file://localhost/E:/programmieren/svg/js/js_attribute_to_node_object_4.svg:6#6) > > > >> Adding an arbitrary > >> Javascript property to a DOM node is the same thing as adding that > >> attribute to the XML node, so if that attribute isn't allowed by the > >> DTD, I guess Batik is - unfortunately for you! - correct to disallow > >> it. > > > > According to the DTD, the fill attribute is allowed, but Batik still > > doesn't accept it. On the other hand, Batik allows me to add an XML > > attribute to the rect node that, according to the DTD, isn't allowed: > > > > > > <?xml version="1.0"?> > > <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" > > "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> > > > > <svg version="1.1" xmlns="http://www.w3.org/2000/svg" onload="init()"> > > <script type="text/javascript"> > > init = function(){ > > testnode = document.getElementById("testnode") > > testnode.setAttributeNS(null,"myAttribute","test") > > alert(testnode.getAttributeNS(null,"myAttribute")) > > } > > </script> > > <rect id="testnode" fill="black" width="100" height="100" x="150" y="150"/> > > </svg> > > > > > >> As a practical alternative, can't you define an object that *contains* > >> the DOM node, plus any other properties you may wish to add? > >> > > > > Certainly, I can work around this. But I still would like to clarify > > whether this is a bug in Batik or on purpose. Sorry if I'm becoming > > stubborn, but I really want to understand what's right and wrong in this > > context. > > > > Thomas W. > > ______________________________________________________ > > GRATIS für alle WEB.DE-Nutzer: Die maxdome Movie-FLAT! > > Jetzt freischalten unter http://movieflat.web.de > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [email protected] > > For additional commands, e-mail: [email protected] > > > > > > > > -- > From my MacBook Pro > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > ________________________________________________________________ DSL-Preisknaller: DSL-Komplettpakete schon für 16,99 Euro/mtl.!* http://produkte.web.de/go/02/ --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
