Hi Castor group, I have a big problem. I have nn my XSD schema an element called 'flag'. It is a restriction of two values: "FLAG" and "" (empty string). See follow XSD definition:
<?xml version="1.0" encoding="UTF-8"?> <xs:schema targetNamespace="http://www.test.com/personal" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:otto.b2b.personal="http://www.test.com/personal" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="age" type="xs:decimal"/> <xs:element name="workSince" type="xs:positiveInteger" nillable="true" /> <xs:element name="flag"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="FLAG"/> <xs:enumeration value=""/> </xs:restriction> </xs:simpleType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> I use a castor generated classes. On unmarshall for follow xml: <?xml version="1.0" encoding="UTF-8"?> <person xmlns="http://www.test.com/personal" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.test.com/personal http://www.test.com/person.xsd"> <name>Isabelle</name> <age>1234</age> <workSince>22</workSince> <flag></flag> </person> I recieve exception: ValidationException: The field '_flag' (whose xml name is 'flag') is a required field.; - location of error: XPATH: person at org.exolab.castor.xml.FieldValidator.validate(FieldValidator.java:203) at org.exolab.castor.xml.util.XMLClassDescriptorImpl.validate(XMLClassDescriptorImpl.java:892) at org.exolab.castor.xml.Validator.validate(Validator.java:122) at org.exolab.castor.xml.UnmarshalHandler.endElement(UnmarshalHandler.java:843) at org.exolab.castor.xml.UnmarshalHandler.endElement(UnmarshalHandler.java:1038) at org.apache.xerces.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:559) at org.apache.xerces.impl.XMLNamespaceBinder.endElement(XMLNamespaceBinder.java:646) at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:2978) at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:918) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.handleEndElement(XMLDocumentFragmentScannerImpl.java:1145) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:988) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1446) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:333) at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserConfiguration.java:529) at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserConfiguration.java:585) at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:147) at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1148) at org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:605) at org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:513) at ejb.tools.Mapper.unmarshall(Mapper.java:106) at ejb.tools.Mapper.mapXmlToObject(Mapper.java:48) ......... But <flag></flag> must be correct value! If I use <flag> </flag> (with one or more blanks) it works. But this is incorrect restriction value. If I do marshall for flag-value == "" (empty string) as setFlag(""), I receive the xml which contains "<flag></flag>". It's very nteresting behavior! I use castor version 0.9.5.3 Can anyone help me? Thanks, Robert ----------------------------------------------------------- If you wish to unsubscribe from this mailing, send mail to [EMAIL PROTECTED] with a subject of: unsubscribe castor-dev