hi

i would like to validate an xml with a set of schema files (all attached)

since we are using ibm's websphere application server 4.0.7 we are bound to xerces 1.4.2 for the moment.



the root schema file is EPSProtocol-V21.xsd importing the other ones

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://www.stuzza.at/namespaces/eps/protocol/20031001" xmlns:eps="http://www.stuzza.at/namespaces/eps/payment/20031001" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:epsp="http://www.stuzza.at/namespaces/eps/protocol/20031001" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:epi="http://www.ecbs.org/epi/15092003" xmlns:atrul="http://www.stuzza.at/namespaces/eps/austrianrules/20031001" elementFormDefault="qualified" attributeFormDefault="unqualified">
        <xsd:import namespace="http://www.stuzza.at/namespaces/eps/payment/20031001" schemaLocation="EPSPayment-V21.xsd"/>
        <xsd:import namespace="http://www.ecbs.org/epi/15092003" schemaLocation="ECBS_ePI_V1.0.xsd"/>
        <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="W3C-XMLDSig.xsd"/>
        <xsd:element name="EpsProtocolDetails">....


since there is a bug in 1.4.2 using the http://apache.org/xml/properties/schema/external-schemaLocation feature i got it running with local files implementing my own entityresolver "SystemIdEntityResolver"

        at at.plue.test.helpers.SystemIdEntityResolver.resolveEntity(SystemIdEntityResolver.java:24)
        at org.apache.xerces.validators.common.XMLValidator$Resolver.resolveEntity(XMLValidator.java:2937)
        at org.apache.xerces.validators.common.XMLValidator.resolveSchemaGrammar(XMLValidator.java:2737)
        at org.apache.xerces.validators.common.XMLValidator.parseSchemas(XMLValidator.java:2669)
        at org.apache.xerces.validators.common.XMLValidator.bindNamespacesToElementAndAttributes(XMLValidator.java:2551)
        at org.apache.xerces.validators.common.XMLValidator.callStartElement(XMLValidator.java:1152)
        at org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentScanner.java:1806)
        at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:949)
        at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)
        at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1081)
        at at.plue.test.main.XsdValidate.main(XsdValidate.java:121)



parsing the xsd-files works as desired but the W3C-XMLDsig.xsd has a reference to http://www.w3.org/2001/XMLSchema.dtd and this systemid is not being passed to my entitiyresover

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE schema PUBLIC "-//W3C//DTD XMLSchema 200102//EN" "http://www.w3.org/2001/XMLSchema.dtd" [
        <!ATTLIST schema
        xmlns:ds CDATA #FIXED "http://www.w3.org/2000/09/xmldsig#"
>....



i get an http connect timout

java.net.ConnectException: Operation timed out: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:345)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:157)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:144)
        at java.net.Socket.<init>(Socket.java:294)
        at java.net.Socket.<init>(Socket.java:121)
        at sun.net.NetworkClient.doConnect(NetworkClient.java:65)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:356)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:543)
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:291)
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:301)
        at sun.net.www.http.HttpClient.New(HttpClient.java:313)
        at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:429)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:522)
        at java.net.URL.openStream(URL.java:826)
        at org.apache.xerces.readers.DefaultReaderFactory.createReader(DefaultReaderFactory.java:149)
        at org.apache.xerces.readers.DefaultEntityHandler.startReadingFromExternalEntity(DefaultEntityHandler.java:767)
        at org.apache.xerces.readers.DefaultEntityHandler.startReadingFromExternalSubset(DefaultEntityHandler.java:566)
        at org.apache.xerces.framework.XMLDTDScanner.scanDoctypeDecl(XMLDTDScanner.java:1139)
        at org.apache.xerces.framework.XMLDocumentScanner.scanDoctypeDecl(XMLDocumentScanner.java:2145)
        at org.apache.xerces.framework.XMLDocumentScanner.access$0(XMLDocumentScanner.java:2100)
        at org.apache.xerces.framework.XMLDocumentScanner$PrologDispatcher.dispatch(XMLDocumentScanner.java:831)
        at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)
        at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1081)
        at org.apache.xerces.validators.schema.TraverseSchema.openImportedSchema(TraverseSchema.java:2086)
        at org.apache.xerces.validators.schema.TraverseSchema.traverseImport(TraverseSchema.java:1995)
        at org.apache.xerces.validators.schema.TraverseSchema.doTraverseSchema(TraverseSchema.java:720)
        at org.apache.xerces.validators.schema.TraverseSchema.<init>(TraverseSchema.java:540)
        at org.apache.xerces.validators.schema.TraverseSchema.traverseImport(TraverseSchema.java:2006)
        at org.apache.xerces.validators.schema.TraverseSchema.doTraverseSchema(TraverseSchema.java:720)
        at org.apache.xerces.validators.schema.TraverseSchema.<init>(TraverseSchema.java:540)
        at org.apache.xerces.validators.common.XMLValidator.resolveSchemaGrammar(XMLValidator.java:2783)
        at org.apache.xerces.validators.common.XMLValidator.parseSchemas(XMLValidator.java:2669)
        at org.apache.xerces.validators.common.XMLValidator.bindNamespacesToElementAndAttributes(XMLValidator.java:2551)
        at org.apache.xerces.validators.common.XMLValidator.callStartElement(XMLValidator.java:1152)
        at org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentScanner.java:1806)
        at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:949)
        at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)
        at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1081)
        at at.plue.test.main.XsdValidate.main(XsdValidate.java:121)



this may be something like

http://nagoya.apache.org/eyebrowse/[EMAIL PROTECTED]&msgId=536068


has anone any idea how to do a workaround in xerces v1.4.2 since i have to use xerces v1.4.2 for quite a while


here's my code

        static String schemaFeature =
                "http://apache.org/xml/features/validation/schema";
        static String validation =
                "http://xml.org/sax/features/validation";
        static String warnOnUndeclaredElemdefFeature =
                "http://apache.org/xml/features/validation/warn-on-undeclared-elemdef";
        static String warnOnDuplicateAttdefFeature =
                "http://apache.org/xml/features/validation/warn-on-duplicate-attdef";
        static String schemaFullCheckingFeature =
                "http://apache.org/xml/features/validation/schema-full-checking";
        static String namespacesFeature =
                "http://xml.org/sax/features/namespaces";
       
        ....

            XMLReader reader =
                org.xml.sax.helpers.XMLReaderFactory.createXMLReader(
                    "org.apache.xerces.parsers.SAXParser");
            reader.setFeature(validation, true);
            reader.setFeature(schemaFeature, true);
            reader.setFeature(namespacesFeature, true);
            reader.setFeature(schemaFullCheckingFeature, true);
            reader.setFeature(warnOnUndeclaredElemdefFeature,true);
            reader.setFeature(warnOnDuplicateAttdefFeature,true);

        // create my ErrorHandler
            ExceptionCollectorErrorHandler excCollErrHandler =
                new ExceptionCollectorErrorHandler();

        URL xmlFile = ClassLoader.getSystemResource("at/plue/test/xml/FullConfirmation.xml");

        DefaultHandler myHandler =new SystemIdEntityResolver(xsdLocator);
            reader.setEntityResolver(myHandler);
        reader.setErrorHandler(excCollErrHandler);
            reader.parse(new InputSource(xmlFile.openStream()));
        excCollErrHandler.printExceptions(new PrintWriter(System.err), false);


and the xsd-files



and the sample xml




thanx in advance

Martin Gruschi
Web Application Developer
ARZ
Austria

Attachment: W3C-XMLDSig.xsd
Description: Binary data

Attachment: AustrianRules-V21.xsd
Description: Binary data

Attachment: ECBS_ePI_V1.0.xsd
Description: Binary data

Attachment: EPSPayment-V21.xsd
Description: Binary data

Attachment: EPSProtocol-V21.xsd
Description: Binary data

Attachment: FullConfirmation.xml
Description: Binary data

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to