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
W3C-XMLDSig.xsd
Description: Binary data
AustrianRules-V21.xsd
Description: Binary data
ECBS_ePI_V1.0.xsd
Description: Binary data
EPSPayment-V21.xsd
Description: Binary data
EPSProtocol-V21.xsd
Description: Binary data
FullConfirmation.xml
Description: Binary data
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]