On Tue, 20 May 2003, Jacob Kjome wrote: > > Hi Arno, > > Your response was very informative! > > Looks like the package switch from dom.html to dom.html2 came between the > following releases... > > http://www.w3.org/TR/2001/WD-DOM-Level-2-HTML-20011210/java-binding.html > and > http://www.w3.org/TR/2002/CR-DOM-Level-2-HTML-20020605/java-binding.html > > > So, where is the source being kept for xmlParserAPIs.jar and xml-apis.jar > because it doesn't exist any longer in the Xerces2-j source. Are these > just API's which are collected from external sources where the standards > are stored....as of Xerces-2.4.0? And how is xml-apis.jar different from > xmlParserAPIs.jar? Why have both?
XML APIs such as DOM, SAX are now extracted from the xml-commons project when compiling Xerces. You can view the source here: http://cvs.apache.org/viewcvs.cgi/xml-commons/java/external/src/. Thus Xerces no longer maintains copies of these sources. The purpose of xml-commons is to share common code across proejcts, so Xalan and other projects should come packaged with the same (synched up) APIs. xmlParserAPIs.jar and xml-apis.jar are the same package. The name of the second package is just a naming convention that I believe Xalan and other projects use. The first package name is deprecated though I don't think that's mentioned in the Xerces documentation. Keeping the former name around prevents people from having to change environment variables, etc. > A further question. Since Xerces2 seems to be doing the "correct" thing in > distributing only the original html dom level1 standard interfaces rather > than the level2, it seems that consumers of the interfaces ought to fall > into line with the original standard, if possible. To that end, what is > the appropriate change to make to the following code... > > optionElement.setSelected(selectionModel.isSelectedIndex(i)); > > > would it be?..... > > if (selectionModel.isSelectedIndex(i)) > optionElement.setAttribute("selected", "selected"); > else optionElement.removeAttribute("selected"); > > > Or is there another way? > > I based this on the following implementation of setAttribute() in > org.apache.html.dom.HTMLElementImpl.java > > void setAttribute( String name, boolean value ) > { > if ( value ) > setAttribute( name, name ); > else > removeAttribute( name ); > } > > BTW, the javadoc for that seems to be incorrect. It claims "If the value > is true, the attribute is set to an empty string". That is, obviously, not > the case. If the value is true, the attribute value is set to the value of > the "name" parameter, which is the same as the attribute name. So, instead > of <option selected ...>, as the javadoc seems to claim, it would be > <option selected="selected" ...>. I'm actually not complaining about the > behavior (I don't want that to change), I'm just saying that javadoc should > be corrected to state what actually happens. > > thanks, > > Jake > > At 01:37 PM 5/20/2003 +0200, Arno Schatz wrote: > >Hi Jake, > > > >The problem is that the HTML DOM Level 2 early Working drafts changed the > >API of some HTMLElements, but not the package names (see > >http://www.w3.org/TR/2000/WD-DOM-Level-2-HTML-20001113/java-binding.html). > >Before the final recommendation the package names where changed to > >org.w3c.dom.html2, thus ending the confusion about incompatibility. > > > >The source of the problem is that people were using the interfaces from > >those early Level 2 interfaces and getting into compatibility issues. This > >poped up again on the Xerces-J developer list when Neeraj discovered > >incompatibilities with JDK1.4, because JDK1.4 ships with such an early > >Level 2 api (having the old package name, but some new methods). See > >thread 'Xerces DOM HTML impl' on the developer list. > > > >Since, the HTML DOM implementation provided by Xerces is really DOM Level > >1, they are shipping the 'real' DOM Level 1 API with Xerces. However, this > >may result in some tricky classpath issues if you are using JDK1.4, since > >the Xerces classes don't provide the additional methods found in JDK1.4 > >(HTML DOM Level 2) but not present in the original HTML DOM Level 1 API. > > > >I also think the only clean solution is to use HTML DOM Level 1 API or > >provide a DOM Level 2 Implementation, but then use the final > >recommendation with the new package names. Then you won't have any > >incompatibilities any more. (But AFAIK, there is no Level 2 implementation > >out there :-( ). > > > >Also another point to mention is that HTML DOM Level 2 is based on DOM > >Level 2 Core, while Level 1 is based on, you guessed it, Core DOM Level > >1. So if you are using Xerces 2, you will use DOM Core Level 2 + HTML DOM > >Level 1. This seems to works ok. I just found some performance drawbacks, > >for example, HTMLDOcument implements the 'getElementById' method in a very > >slow fashion (searching the tree every time). This method is provided > >in class Document since Level 2 (and implemented by Xerces as Hashtable > >lookup). > > > >hope that helps, > > Arno > > > > > >Jacob Kjome wrote: > >>Hello, > >>I ran into a very strange issue when using the org.w3c.dom.html > >>interfaces in the release versions of Xerces2 (tried 2.3.0 and 2.4.0). > >>The binaries of the xmlParserAPIs.jar and xml-apis.jar both seem to > >>contain a different version of the html dom interfaces than what comes in > >>the source. For instance, in the Xerces-J-src.2.3.0.zip download, when I > >>browse to org.w3c.dom.html.HTMLOptionElement.java, said file contains the > >>method setSelected(boolean). However, when I grab the class file from > >>the binary release (Xerces-J-bin.2.3.0.zip) it HTMLOptionElement does not > >>contain that method. What gives here? > >>Another very confusing thing is the source download for the 2.4.0 > >>distribution (Xerces-J-src.2.4.0.zip) contains only a single file in the > >>org.w3c.dom.html package ( HTMLDOMImplementation.java ). Where are > >>rest? Well, maybe in the xml-apis--src.zip that comes in the > >>Xerces-J-tools.2.4.0.zip download. Is that right? Well, the problem > >>here is that the w3c htm dom being used there is based on the original > >>html dom 1 source released back in 1998. HTMLOptionElement did not have > >>the setSelected(boolean), only getSelected(). But anyone who has used > >>Xerces-1 has already been used to using newer dom interfaces with > >>setSelected(boolean) in HTMLOptionElement. > >>Can anyone clear this up? > >>1. Why has Xerces2 reverted to an older version of the dom interfaces > >>than Xerces1 had? > >>2. Why does the source download for Xerces 2.3.0 come with newer > >>versions of the dom interfaces than is released in the 2.3.0 binaries (or > >>any of the Xerces2 binaries, for that matter)? And why does the source > >>download for Xerces 2.4.0 not have these newer sources anymore? > >>3. Where did these newer sources come from anyway? After the html DOM1 > >>release, all work was done on the html DOM2 release,. but that falls > >>under a different package named org.w3c.dom.html2. > >> > >>Curiously enough, if I extract the org.w3c.dom.html package from the > >>Xerces 2.3.0 source distribution, compile the interfaces, jar the > >>interfaces, and put the jar in my build classpath, everything compiles > >>just fine. > >>extremely confused, > >>Jake > >> > >>--------------------------------------------------------------------- > >>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]
