Hi Martin, Thanks for your help. Based on your response, if I have the restriction:
<xsd:restriction base="xsd:decimal"> <xsd:totalDigits value="13" /> <xsd:fractionDigits value="3" /> </xsd:restriction> any number between 10^-12 and 10^13, as you said, *should* work. But, the code generated by axis, only numbers bigger than 99999999999999.0 is valid. The generated code is: java.lang.String totalDigitsDecimal = org.apache.axis2.databinding.utils.ConverterUtil.convertToStandardDecimalNotation("13").toString(); if (org.apache.axis2.databinding.utils.ConverterUtil.compare(param, totalDigitsDecimal) > 0){ this.localI_QUANTITY_type0=param; } else { throw new java.lang.RuntimeException(); } If I the parameter param is BigDecimal("100.00") the validation will fail and I'll receive a RuntimeException. The method ConverterUtil.compare(param, totalDigitsDecimal) is: public static double compare(BigDecimal binBigDecimal, String value) { return binBigDecimal.doubleValue() - Double.parseDouble(value); } binBigDecimal = BigDecimal("100.00") and totalDigitsDecimal = "1.0E+13" and the return of compare is -9.9999999999E12 witch is minor than zero. I guess the correct code of the ConverterUtil.compare(BigDecimal binBigDecimal, String value) should be: public static double compare(BigDecimal binBigDecimal, String value) { return Double.parseDouble(value) - binBigDecimal.doubleValue(); } With this change, Double.parseDouble(value) - binBigDecimal.doubleValue(), instead of, binBigDecimal.doubleValue() - Double.parseDouble(value) any number between 10^-12 and 10^13 is valid. My understanding is correct ? Thanks, 2012/11/13 Martin Gainty <mgai...@hotmail.com> > > > --Forwarded Message Attachment-- > From: mgai...@hotmail.com > To: java-user@axis.apache.org > Subject: RE: Restriction totalDigits > Date: Tue, 13 Nov 2012 12:33:10 -0500 > > Buenas Tardes / Boa tarde > > the restriction of applicable values is based on the upper and lower > limits of the xsd:decimal datatype..assuming this is your namespace > declaration > *xmlns*:*xsd*="http://www.w3.org/2001/XMLSchema" > 3.2.3 decimal [Definition:] *decimal* represents a subset of the real > numbers, which can be represented by decimal numerals. The ·value > space·<http://www.w3.org/TR/xmlschema-2/#dt-value-space>of > *decimal* is the set of numbers that can be obtained by multiplying an > integer by a non-positive power of ten, i.e., expressible as *i × 10^-n*where > *i* and *n* are integers and *n >= 0*. Precision is not reflected in this > value space; the number 2.0 is not distinct from the number 2.00. The · > order-relation· <http://www.w3.org/TR/xmlschema-2/#dt-order-relation> on * > decimal* is the order relation on real numbers, restricted to this > subset. > > > *Note: * All ·minimally > conforming·<http://www.w3.org/TR/xmlschema-2/#dt-minimally-conforming>processors > ·must· <http://www.w3.org/TR/xmlschema-2/#dt-must> support decimal > numbers with a minimum of 18 decimal digits (i.e., with a > ·totalDigits·<http://www.w3.org/TR/xmlschema-2/#dt-totalDigits>of 18). > However, > ·minimally > conforming·<http://www.w3.org/TR/xmlschema-2/#dt-minimally-conforming>processors > ·may· <http://www.w3.org/TR/xmlschema-2/#dt-may> set an > application-defined limit on the maximum number of decimal digits they are > prepared to support, in which case that application-defined maximum number > ·must· <http://www.w3.org/TR/xmlschema-2/#dt-must> be clearly documented. > > so if your decimal_number is within range 1*10^-8 >= decimal_number <= > 1*10^+9 > > *should* work > > but you *can* override the length attribute of decimal type by specifying > totalDigits > http://www.w3.org/TR/xmlschema-2/#rf-totalDigits > > if you are certain the values of your number will always be positive you > may want to declare the element as positiveInteger > http://www.w3.org/TR/xmlschema-2/#positiveInteger > > Obrigado! > Martin Gainty > ______________________________________________ > Porfavor..no altere ni interrumptir esta communicacion..Gracias > Por favor, não alterar ou interromper esta transmissão..Obrigado > > > > ------------------------------ > From: carlos.eman...@phoebustecnologia.com.br > Date: Tue, 13 Nov 2012 08:49:47 -0300 > Subject: Restriction totalDigits > To: java-user@axis.apache.org > > Hi to all, > I'm having problems with restriction totalDigits to type decimal. > <xsd:restriction base="xsd:decimal"> > <xsd:totalDigits value="13" /> > <xsd:fractionDigits value="3" /> > </xsd:restriction> > > By this restriction the minor valid number is 99999999999999.0 because the > code generate by axis. On totalDigits restriction I understand that is > valid any number between 0 and 10^13. Am I right? Or this restriction is to > numbers bigger than 99999999999999.0 ? > > Thanks, >