Thanks for the suggestion, Radu. I've gotten in such a rut using *.Factory.newInstance(...) that I'd overlooked the *.Factory.newValue(...) option, which is a bit better than what I had done.
I thought I understood why I was having the issue (java Calendar mapping to both types in the union, xmlbeans using the first that matches), but its good to have it confirmed. -- Dennis R. Sherman Ex Libris Group 847-227-2976 [EMAIL PROTECTED] http://www.exlibrisgroup.com > -----Original Message----- > From: Radu Preotiuc-Pietro [mailto:[EMAIL PROTECTED] > Sent: Friday, April 18, 2008 6:23 PM > To: [email protected] > Subject: Re: Date format manipulations > > There is a slightly simpler/cleaner way: > > Calendar datestamp = Calendar.getInstance(); > datestamp.setTimeZone(TimeZone.getTimeZone("UTC")); > UTCdateTimeZType dtmz = > UTCdateTimeZType.Factory.newValue(datestamp); > UTCdatetimeType utcdtm = > UTCdatetimeType.Factory.newValue(dtmz); > hdr.xsetDatestamp(utcdtm); > > But the main reason you have to work hard is that the same Java type > (Calendar) corresponds to both union members. So if you had > say a union of int and string and did hdr.setValue("string") > then it would be obvious which of the union members "matches" > but in your case it's not, because Calendar is the Java class > for both "date" and "dateTime". > > XMLBeans in this case picks the first union type that > matches. If you wanted the first union member, then doing > > Calendar datestamp = Calendar.getInstance(); > datestamp.setTimeZone(TimeZone.getTimeZone("UTC")); > hdr.setDatestamp(datestamp); > > would produce the result you wanted. But you want the second > union member, so you have to use xsetDatestamp() and a > specific type to convey this information. > > Hope this makes sense, > Radu > > On Fri, 2008-04-04 at 13:30 -0700, Dennis Sherman wrote: > > Hi, all. > > > > I think I'm working too hard to get the end result I'm looking for. > > Is > > there a better way? > > > > Background: I'm working with a schema available at > > http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd. The fragment in > > question is this: > > > > <simpleType name="UTCdatetimeType"> > > <annotation> > > <documentation>Datestamps are to either day (type date) > > or to seconds granularity (type > > oai:UTCdateTimeZType)</documentation> > > </annotation> > > <union memberTypes="date oai:UTCdateTimeZType"/> > > </simpleType> > > > > <simpleType name="UTCdateTimeZType"> > > <restriction base="dateTime"> > > <pattern value=".*Z"/> > > </restriction> > > </simpleType> > > > > My task is to produce an XML document compliant with the schema. I > > need the datetime defined as UTCdatetimeType to be in UTC > format, e.g. > > ... > > <header> > > <identifier>host:repository:1</identifier> > > <datestamp>2008-04-04T20:16:33.068Z</datestamp> > > </header> > > ... > > > > I'm doing it, but it feels like too much work to do it like this: > > > > Calendar datestamp = Calendar.getInstance(); > > datestamp.setTimeZone(TimeZone.getTimeZone("UTC")); > > UTCdateTimeZType dtmz = > > UTCdateTimeZType.Factory.newInstance(); > > dtmz.setCalendarValue(datestamp); > > UTCdatetimeType utcdtm = (UTCdatetimeType) > > dtmz.changeType(UTCdatetimeType.type); > > hdr.xsetDatestamp(utcdtm); > > > > Is there a simpler, more straightforward way that I'm just not > > finding? > > > > Thanks. > > > > -- > > Dennis R. Sherman > > Ex Libris Group > > 847-227-2976 > > [EMAIL PROTECTED] > > http://www.exlibrisgroup.com > > > > > > > > -- > > This message has been scanned for viruses and dangerous content by > > MailScanner, and is believed to be clean. > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > Notice: This email message, together with any attachments, > may contain information of BEA Systems, Inc., its > subsidiaries and affiliated entities, that may be > confidential, proprietary, copyrighted and/or legally > privileged, and is intended solely for the use of the > individual or entity named in this message. If you are not > the intended recipient, and have received this message in > error, please immediately return this by email and then delete it. > > --------------------------------------------------------------------- > 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]

