Dims, Actually I initially developed the idea to have the concept of a "StAX dialect" in Axiom when I saw this piece of code. I started to implement this feature when trying to solve the thread safety issue, but the aim is clearly to get rid of the isSetPrefixBeforeStartElement hack(s).
I had a closer look at the code during the weekend, but I fail to see in which case we would actually need/have isSetPrefixBeforeStartElement == true. In my opinion, the StAX specifications don't leave enough room for the second interpretation (that setPrefix would apply to the next writeStartElement) [1]. Also, of all the StAX implementations I've seen, none expects this. Do you have any idea which "user community" "believes" this? Andreas [1] http://people.apache.org/~veithen/axiom/devguide/ch02.html#d0e69 On Tue, Jul 28, 2009 at 00:45, Davanum Srinivas<[email protected]> wrote: > Andreas, > > Not sure if you have seen this already. There's some convoluted code > in org/apache/axiom/om/impl/util/OMSerializerUtil.java (method > isSetPrefixBeforeStartElement) which basically has a toggle based on > the parsers. > > // Fallback: Toggle based on sun or woodstox implementation. > NamespaceContext nc = writer.getNamespaceContext(); > ret = (nc == null || > (nc.getClass().getName().indexOf("wstx") == -1 && > nc.getClass().getName().indexOf("weblogic") == -1 > && > nc.getClass().getName().indexOf("sun") == -1)); > > The javadoc has more information: > > /** > * Unfortunately there is disagreement in the user community about > the semantics of setPrefix on > * the XMLStreamWriter. An example will explain the difference: > writer.startElement("a") > * writer.setPrefix("pre", "urn://sample") writer.startElement("b") > * <p/> > * Some user communities (woodstox) believe that the setPrefix is > associate with the scope for > * "a" and thus remains in scope until the end of a. The basis > for this believe is > * XMLStreamWriter javadoc (which some would argue is incomplete). > * <p/> > * Some user communities believe that the setPrefix is associated > with the "b" element. These > * communities reference an example in the specification and > historical usage of SAX. > * <p/> > * This method will return true if the setPrefix is associated > with the next writeStartElement. > * > * @param writer > * @return true if setPrefix should be generated before startElement > */ > > Can you please take a look? > > If we can find a way to totally remove the need for caching the > boolean after checking the xmlstreamwriter, that would be a big bonus. > > thanks, > dims > > -- > Davanum Srinivas :: http://davanum.wordpress.com >
