You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xerces.apache.org by Zulema Olguin <zo...@sii.cl> on 2003/10/03 01:56:38 UTC

Help whit validation in Web services (xerces )

Hi
 
I working  whit Web service in java,  axis and  Xerces2,  this web
service get like paremeter  an  XML,  the which use a schema whith
restriction, but the validations no work, when i introduce a bad
parameter.
 
Note: The error of validation are write by catalina.out 
 
 
the xsd and xml was generate whith xmlspy 
 
 
<?xml version="1.0" encoding="UTF-8"?>
<data xmlns:xsi="  <http://www.w3.org/2001/XMLSchema-instance>
http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="1.xsd">
 <data1>123</data1>
 <data2>1213</data2>
</data>

 
<?xml version="1.0" encoding="UTF-8"?>
<!--W3C Schema generated by XMLSPY v5 rel. 4 U (
<http://www.xmlspy.com/> http://www.xmlspy.com)-->
<xs:schema xmlns:xs="  <http://www.w3.org/2001/XMLSchema>
http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
 <xs:element name="data">
  <xs:complexType>
   <xs:sequence>
    <xs:element ref="data1"/>
    <xs:element ref="data2"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
 <xs:element name="data1" type="xs:number"/>
 <xs:element name="data2" type="xs:number"/>
</xs:schema>
 
 
 
 
The program is :
 
 
import javax.xml.parsers.*;
import org.apache.xpath.*;
import org.w3c.dom.*;
import org.apache.xpath.*;
 
import java.util.Hashtable;
 
import org.apache.xerces.parsers.DOMParser;
import org.xml.sax.ErrorHandler;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
 
import org.xml.sax.SAXParseException;
import org.xml.sax.SAXException;
import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXNotSupportedException;
 
import org.xml.sax.InputSource;
import org.xml.sax.*;
import java.io.IOException;
import java.io.StringReader;
import java.io.*;

 
public class z {
   

   // Funciones Xpaht
 
//======================================================================
=
    private static String findValue(Node node, String xql) throws
Exception
    {
        // se validan los parametros de entrada
        if( (xql == null) || (xql.length() == 0) ) {
          throw new Exception("ERROR: findValue llamado con segundo
parametro(xql) vacio");
        }
        if(node == null) {
            throw new Exception("ERROR: findValue llamado con primer
parametro(node) nulo");
         throw new Exception("ERROR: findValue llamado con primer
parametro(node) nulo");
        }
        return
getValorHijoDependiendoDeQuery(XPathAPI.selectSingleNode(node,xql) );
    }
 

    private static String getValorHijoDependiendoDeQuery ( Node node )
    {
        NodeList NodosHijos;
        StringBuffer valor = new StringBuffer();
        NodosHijos =  node.getChildNodes();
        for(int i=0; i < NodosHijos.getLength(); i++ )
        {
            if( NodosHijos.item(i).getNodeType() == Node.TEXT_NODE )
            {
                valor.append(NodosHijos.item(i).getNodeValue());
            }
        }
        return valor.toString();
    }
 
    public String getz(String xmlString) {
 
        String sxm=null;
        String respRenta = null;
        DOMParser parser = new DOMParser();
 

        try {

            // paso 1 recibe xml desde parametro y valida el esquema
 
//======================================================================
=
 

            parser.setFeature (" http://xml.org/sax/features/namespaces
<http://xml.org/sax/features/namespaces> ", true);
            parser.setFeature (" http://xml.org/sax/features/validation
<http://xml.org/sax/features/validation> ", true);
            parser.setFeature ("
http://apache.org/xml/features/validation/schema
<http://apache.org/xml/features/validation/schema> ", true);
            parser.setFeature ("
http://apache.org/xml/features/validation/schema-full-checking
<http://apache.org/xml/features/validation/schema-full-checking> ",
true);
 
            parser.setFeature("
http://apache.org/xml/features/dom/defer-node-expansion
<http://apache.org/xml/features/dom/defer-node-expansion> ", true);
            parser.setFeature("
http://apache.org/xml/features/continue-after-fatal-error
<http://apache.org/xml/features/continue-after-fatal-error> ", true);
 
            
            parser.parse(new InputSource(new StringReader(xmlString)) );
            Document document = parser.getDocument();
 
 
 
//======================================================================
=
            Element root        = document.getDocumentElement();
            Node configNode     = root.getFirstChild();
            NodeList childNodes = configNode.getChildNodes();
 
            // Forma URL 
 
//======================================================================
=
            String URL  = "d1=" + findValue( root, "/data/d1" ) + "&";
                   URL += "d2=" + findValue( root, "/data/d2" ) + "&";
                   URL += "d3=" + findValue( root, "/data/d3" ) ;

                      return  URL;
 
        } catch (SAXNotRecognizedException ex4) {
             return "ERROR SAXNotRecognizedException: " +
ex4.toString();
        } catch (SAXNotSupportedException ex5) {
             return "ERROR SAXNotSupportedException: " + ex5.toString();
        } catch (SAXParseException ex1) {
             return "ERROR SAXParseException: " + ex1.toString();
        } catch (SAXException ex) {
             return "ERROR SAXException: " + ex.toString();
             //return "Error SAXException: NO PUDE PARSEAR";
        } catch (Exception e2) {
             return "ERROR Exception: " + e2.toString()+ "chao";
             //return "Error Exception : NO PUDE PARSEAR";
        }
      }

 
Gracias.-
Zulema Olguin T.
Chile