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

Reply via email to