Although as was pointed out, it's not possible to extend the primitive wrapper types or String, I think InternationalPrice indeed IS-A String - extension in schema is just like inheritance in programming languages. It just so happens InternationalPrice has another attribute field as well as being a String.
But ah well, beans with getValue()/setValue() it is. --Glen > -----Original Message----- > From: Richard Sitze [mailto:[EMAIL PROTECTED]] > Sent: Thursday, February 21, 2002 6:29 PM > To: [EMAIL PROTECTED] > Subject: Re: complexType extending a simpleType > > > It's generally a bad idea to "extend" for the sake of extending... > > From a purist point of view, if InternationalPrice IS-A > String, then OK. > > My vote: InternationalPrice IS-NOT-A String (or not > necessarily), so don't > extend. > > > ******************************************* > Richard A. Sitze [EMAIL PROTECTED] > CORBA Interoperability & WebServices > IBM WebSphere Development > > > > > R J Scheuerle > > Jr/Austin/IBM@IB To: > [EMAIL PROTECTED] > MUS cc: > [EMAIL PROTECTED] > Subject: Re: > complexType extending a simpleType > 02/21/2002 03:43 > > PM > > Please respond > > to axis-dev > > > > > > > > > > Talked to Glen and Tom on the chat, and they think that > InternationalPrice > should extend String. > > Example: > > class InternationalPrice extends String implements <HasAttributes> { > String getCurrency().... > .... > } > > That way it can be treated like a String as necessary, and also has > attributes. > The <HasAttributes> interface is a yet unnamed marker interface. > > Comments ? > > > Rich Scheuerle > XML & Web Services Development > 512-838-5115 (IBM TL 678-5115) > > > > Simon Fell > > <[EMAIL PROTECTED] To: > [EMAIL PROTECTED] > co.uk> cc: > > Subject: Re: > complexType > extending a simpleType > 02/21/2002 03:25 > > PM > > Please respond to > > axis-dev > > > > > > > FWIW, I ran into this doing the Group D doc/literal interop tests for > pocketSOAP, and took exactly the same approach. > > Cheers > Simon > > On Thu, 21 Feb 2002 15:12:03 -0600, in soap you wrote: > > >According to XML Schema Primer 0 Chapter 2.5.1, a complexType can be > >derived from a simple type to add attribute information. > > > > > >Lets say you had the following schema: > > > ><complexType name="purchaseItem"> > > <complexContent> > > <sequence> > > <element name="itemName" type="xsd:string" /> > > <element name="price" type="xsd:string" /> > > </sequence> > > </complexContent> > ></complexType> > > > >The above could be sent over the wire as: > > > ><purchaseItem> > > <itemName> > > Widget > > </item> > > <price> > > 1.00 > > </price> > ><purchaseItem> > > > >And the above would be modeled as a java bean named > PurchaseItem with two > >String properties. > > > > > >Now let's say you extend this for an international market, > thus the price > >needs to know the > >currency. Since it is closely tied to the price, you want > to represent > >currency as an > >attribute on price. Here's how to represent this in xml schema. > > > ><complexType name="internationalPrice"> > > <complexContent> > > <simpleContent> > > <extension base="xsd:string"/> > > <attribute name="currency" type="xsd:string"> > > </extension> > > </simpleContent> > > <complexContent> > ></complexType> > > > ><complexType name="purchaseItem"> > > <complexContent> > > <sequence> > > <element name="itemName" type="xsd:string" /> > > <element name="price" type="tns:internationalPrice" /> > > </sequence> > > </complexContent> > ></complexType> > > > >So this means that price is an element whose value is a > string and has a > >currency attribute. > > > >Here is an example over the wire: > > > ><purchaseItem> > > <itemName> > > Widget > > </item> > > <price currency="USDollars"> > > 1.00 > > </price> > ><purchaseItem> > > > > > >We don't support extension of simpleTypes yet. When we do, we need > >to generate a PurchaseItem bean (as before) and a > InternationalPrice bean. > > > >However, note that the InternationalPrice has a "raw" value that is > >serialized > >directly...not within an element and not as an attribute value. The > >serializer and deserializer need to know about this raw > value, and the > bean > >requires > >a special property name to get to the raw value. (I propose > getValue and > >setValue > >accessors, which match what we do with enumeration > classes...our other > kind > >of simpleType). > > > >So both emitters, bean serializer, and bean deserializer > will need to have > >extra code to support this feature. (Note that this is an optional > JAX-RPC > >feature). > > > > > >Comments? > > > > > > > > > > > > > >Rich Scheuerle > >XML & Web Services Development > >512-838-5115 (IBM TL 678-5115) > > > > > > >