I've got to figure out how to debug it. Currently, it's in a Maven project with the XMLBeans plugin running the schema compilation.
The map works when I call save(options) or xmlText(options), but not when the document is created (Factory.newInstance(options)). // Option that sets the namespace map. XmlOptions options = ...; MyDoc doc = MyDoc.Factory.newInstance(options); System.out.println("Wrong prefix: " + doc.xmlText()); System.out.println("Right prefix: " + doc.xmlText(options)); The schema is spread out across multiple files. I'm going to try to create a small test case to see if I can't reproduce this. On Mon, Aug 4, 2014 at 4:31 PM, Cezar Andrei <cezar.and...@oracle.com> wrote: > Michael, > > That's odd, please check that your namespace URI is exactly the same in > both the schema and the map you're setting. Also, make sure the prefix you > want is not already used in your document with a different URI. > > If it's still not working and you're not afraid of debugging, you can > trace the ensureMapping method in Saver.java:757 . > http://svn.apache.org/viewvc/xmlbeans/trunk/src/store/org/ > apache/xmlbeans/impl/store/Saver.java?view=markup > > Cezar > > > On 08/02/2014 02:04 PM, Michael Bishop wrote: > >> OK, thanks for the information. Unfortunately, this doesn't seem to fix >> the problem. I thought I'd tried the steps outlined in the linked blog >> before, but I did it again, just in case. >> >> Here's the full schema definitions: >> >> Old: >> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" >> *xmlns:xxx="http://..."* >> >> targetNamespace="http://..." >> elementFormDefault="qualified"> >> >> New: >> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" >> *xmlns:xxx="yyy:aaa:bbb..."* >> >> targetNamespace="yyy:..." >> elementFormDefault="qualified"> >> >> As you can see, in both schemas, I'm declaring a namespace of *xxx*, but >> it's only honored in the old schema. The only thing that's changed between >> schemas is the namespace. I had a request from our customer to change it. >> However, a call to: >> >> >> MyGeneratedClass.Factory.newInstance() results in a document that looks >> like this: >> >> <yyy:root xmlns:yyy="yyy:aaa:bbb..."/> >> >> Applying a namespace map to an XmlOptions object doesn't seem to have any >> effect. I've tried it with the call to MyGeneratedClass.Factory.newInstance() >> and a call to MyGeneratedInstance.xmlText(): >> >> XmlOptions options = new XmlOptions(); >> Map<String, String> nsMap = new HashMap<>(); >> nsMap.put("yyy:aaa:bbb", "xxx"); >> options.setSaveSuggestedPrefixes(nsMap); >> >> // No change to output. >> MyGeneratedClass.Factory.newInstance(options); >> MyGeneratedInstance.xmlText(options); >> >> I guess I have two questions: >> >> 1. Why is the prefix declaration in my schema being ignored? *xmlns:xxx* >> has never changed. It's only the value of the namespace that has changed. >> >> 2. I find it odd that Map has no effect either. Is there anything else I >> should be looking into? I'm not sure if my schema is somehow "wrong" or I >> have a setting in XMLBeans misconfigured. It's becoming more than just an >> annoying problem. XPath statements are now broken since they employ the >> *xxx* prefix. I'm not sure where to start tracking down the issue. Both the >> guidance and the docs seem straightforward to me, yet I can't get it to >> work properly. >> >> >> Any guidance is appreciated. I'm on XMLBeans 2.5.0. If there's anything >> more I can provide, I can do so. >> >> Michael Bishop >> >> >> On Fri, Aug 1, 2014 at 12:10 PM, Cezar Andrei <cezar.and...@oracle.com >> <mailto:cezar.and...@oracle.com>> wrote: >> >> If you don't provide a prefix, XmlBeans will automatically pick a >> prefix, and it tries to pick one that is part of the URI. >> >> Cezar >> >> >> >> On 07/28/2014 01:27 PM, Michael Bishop wrote: >> >> Hello all. I've recently changed the namespace of my schema. >> Now I'm getting the wrong prefix name and I'm not sure why. >> >> Old namespace was: >> >> xmlns:*xxx*="http://ccc.bbb.aaa" >> >> New namespace is: >> >> xmlns:*xxx*="*yyy*:aaa:bbb:ccc" >> >> With the old namespace, the prefix for elements was xxx. Now >> with the new namespace, the prefix fpr elements is *yyy*. It >> seems switching from URL form to URI form has caused the >> processor to start using the first part of the URI as the >> prefix? This happens when I call the static >> Factory.newInstance() on generated classes. Older documents >> with the correct prefix still parse properly. >> >> It's not a big deal since the namespace is intact and things >> work as they should, but I can't figure out why this is >> happening. I don't declare xmlns:*yyy* anywhere in the schema >> or xsdconfig files. >> >> Michael Bishop >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: user-unsubscr...@xmlbeans.apache.org >> <mailto:user-unsubscr...@xmlbeans.apache.org> >> >> For additional commands, e-mail: user-h...@xmlbeans.apache.org >> <mailto:user-h...@xmlbeans.apache.org> >> >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@xmlbeans.apache.org > For additional commands, e-mail: user-h...@xmlbeans.apache.org > >