read about xmlbeans validation here
http://xmlbeans.apache.org/docs/2.0.0/guide/conValidationWithXmlBeans.html

I test using this code
        String testschema = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
                "<xsd:schema\n" +
                "  targetNamespace=\"http://www.colis-logistique.com/i-net/wsapi\"\n" +
                "  xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n" +
                "  elementFormDefault=\"qualified\">\n" +
                "  <xsd:element name=\"DeclareParcelsAndCustomsResponse\">\n" +
                "    <xsd:complexType>\n" +
                "       <xsd:sequence>\n" +
                "         <xsd:element name=\"Version\"  type=\"xsd:string\"   minOccurs=\"1\" maxOccurs=\"1\"/>\n" +
                "         <xsd:element name=\"Timestamp\" type=\"xsd:string\" minOccurs=\"1\" maxOccurs=\"1\"/>\n" +
                "         <xsd:element name=\"AckCode\" type=\"xsd:string\"    minOccurs=\"1\" maxOccurs=\"1\"/>\n" +
                "         <xsd:element name=\"HMacBase64Code\" type=\"xsd:string\" minOccurs=\"1\" maxOccurs=\"1\"/>\n" +
                "       </xsd:sequence>\n" +
                "    </xsd:complexType>\n" +
                "  </xsd:element>\n" +
                "</xsd:schema> ";
        String testxml = "<wsap:DeclareParcelsAndCustomsResponse xmlns:wsap=\"http://www.colis-logistique.com/i-net/wsapi\">\n" +
                "    <wsap:Timestamp>2011-05-02T16:57:33.136Z</wsap:Timestamp>\n" +
                "    <wsap:AckCode>SUCCESS</wsap:AckCode>\n" +
                "     <wsap:HMacBase64Code>ZjY5MDdlYWI4MGQxMGQ3MjM5OTExZmVmNjQ1NjY3ZDY3NTVkYmQ5MGQ4YTViM2JlOTE1OWU3ODFjZGJlYjIxNg==</wsap:HMacBase64Code>\n" +
                "</wsap:DeclareParcelsAndCustomsResponse> ";

            SchemaTypeSystem sts1 = XmlBeans.compileXsd(new XmlObject[]{XmlObject.Factory.parse(testschema)},
                    XmlBeans.getBuiltinTypeSystem(),null);
            XmlObject x1 = sts1.parse(testxml,sts1.findDocumentType(new QName("http://www.colis-logistique.com/i-net/wsapi","DeclareParcelsAndCustomsResponse")),null);
            XmlOptions xo = new XmlOptions();
            ArrayList<XmlValidationError> errorlist = new ArrayList<XmlValidationError>();
            xo.setErrorListener(errorlist);
            if (!x1.validate(xo)) {
                for (XmlValidationError e:errorlist) {
                    System.out.println(e.getMessage());
                }
            }


and get this output
Expected element 'Version@http://www.colis-logistique.com/i-net/wsapi' instead of 'Timestamp@http://www.colis-logistique.com/i-net/wsapi' here in element DeclareParcelsAndCustomsResponse@http://www.colis-logistique.com/i-net/wsapi
Expected element 'Version@http://www.colis-logistique.com/i-net/wsapi' instead of 'AckCode@http://www.colis-logistique.com/i-net/wsapi' here in element DeclareParcelsAndCustomsResponse@http://www.colis-logistique.com/i-net/wsapi
Expected element 'Version@http://www.colis-logistique.com/i-net/wsapi' instead of 'HMacBase64Code@http://www.colis-logistique.com/i-net/wsapi' here in element DeclareParcelsAndCustomsResponse@http://www.colis-logistique.com/i-net/wsapi
Expected element 'Version@http://www.colis-logistique.com/i-net/wsapi' before the end of the content in element DeclareParcelsAndCustomsResponse@http://www.colis-logistique.com/i-net/wsapi

using your code, you can do ans.validate(<xmloption>)

Jerry


On 11/11/2011 11:46 AM, philippe.legay.exte...@telintrans.fr wrote:

Hello,

I parse a xml string, but wmlsbeans does not see that the version element is not present ! I am expecting an exception like I have one when there is a syntax error in the xml string.

So my problems with xmlsbeans 2.5  are :
- xmlsbeans  does not throw an exception when an element of a sequence is not here ?
- xmlsbeans  does not throw an exception when an element of a sequence is not  at the right position ?
 - xmlsbeans  does not throw an exception when an element of a sequence is not declared in the XSD ?

My java code is :
DeclareParcelsAndCustomsResponseDocument ansDoc = DeclareParcelsAndCustomsResponseDocument.Factory.parse(answer);  
DeclareParcelsAndCustomsResponseDocument.DeclareParcelsAndCustomsResponse ans = ansDoc.getDeclareParcelsAndCustomsResponse() ;

XSD Source
===========

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
  targetNamespace="http://www.colis-logistique.com/i-net/wsapi"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  elementFormDefault="qualified">
  <xsd:element name="DeclareParcelsAndCustomsResponse">
    <xsd:complexType>
       <xsd:sequence>
         <xsd:element name="Version"  type="xsd:string"   minOccurs="1" maxOccurs="1"/>
         <xsd:element name="Timestamp" type="xsd:string" minOccurs="1" maxOccurs="1"/>
         <xsd:element name="AckCode" type="xsd:string"    minOccurs="1" maxOccurs="1"/>
         <xsd:element name="HMacBase64Code" type="xsd:string" minOccurs="1" maxOccurs="1"/>
       </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

XML String
=========
<wsap:DeclareParcelsAndCustomsResponse xmlns:wsap="http://www.colis-logistique.com/i-net/wsapi">
    <wsap:Timestamp>2011-05-02T16:57:33.136Z</wsap:Timestamp>
    <wsap:AckCode>SUCCESS</wsap:AckCode>
     <wsap:HMacBase64Code>ZjY5MDdlYWI4MGQxMGQ3MjM5OTExZmVmNjQ1NjY3ZDY3NTVkYmQ5MGQ4YTViM2JlOTE1OWU3ODFjZGJlYjIxNg==</wsap:HMacBase64Code>
</wsap:DeclareParcelsAndCustomsResponse>

 validate xsd .xml => OK : There is no VERSION : I agree with this.
But, I do not have the same behavior in my own java code ?

Any idea ?

Thanks,
PHL

_______________________________________________________
Philippe LEGAY
TELINTRANS
Direction Production
Département Intégration des Projets
E-Mail : philippe.legay.exte...@telintrans.fr
Tel : (+33) 01 56 30 74 24

P Afin de contribuer au respect de l'environnement, merci de n'imprimer ce courriel que si nécessaire.

--------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@xmlbeans.apache.org For additional commands, e-mail: user-h...@xmlbeans.apache.org

Reply via email to