Ok, I create an entity resolver to specify the external DTD. However, I'm getting many parse errors of the kind
Error: Parsing - Element type "task-description" must not be declared more than once. Error: Parsing - Element type "cmr-type" must not be declared more than once. Error: Parsing - Element type "related-mrbs" must not be declared more than once. Error: Parsing - Element type "related-mrb" must not be declared more than once. Error: Parsing - Element type "task-cat" must not be declared more than once. Error: Parsing - Element type "cmr-intervals" must not be declared more than once. Error: Parsing - Element type "cmr-interval" must not be declared more than once. Error: Parsing - Element type "precluded-tasks" must not be declared more than once. Error: Parsing - Element type "precluded-task" must not be declared more than once. Error: Parsing - Element type "precluded-struct-task" must not be declared more than once. Error: Parsing - Element type "precluded-struct-tasks" must not be declared more than once. Error: Parsing - Element type "precluded-sys-task" must not be declared more than once. This is odd because I placed the same DTD in the XML file's DOCTYPE declaration and parse the file w/o using an entity resolver and it parses without errors. What am I doing wrong with my entity resovler or is it not setting a specific DTD feature on the Parser? snippet - code of entity resolver ============================================== public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { if(_MyOwnSystemId != null) { InputSource is = new InputSource(_MyOwnSystemId ); return is; } else// use the default behavior { return null; } } ======================================================================== Michael Glavassevich-3 wrote: > > Hi, > > The JAXP 1.2 schema properties are only relevant to XML Schema validation. > They have nothing to do with loading DTDs. Try using an EntityResolver [1] > instead. > > Thanks. > > [1] > http://xerces.apache.org/xerces2-j/javadocs/api/org/xml/sax/EntityResolver.html > > Michael Glavassevich > XML Parser Development > IBM Toronto Lab > E-mail: mrgla...@ca.ibm.com > E-mail: mrgla...@apache.org > > DeWayne <dewayne.c.dantz...@boeing.com> wrote on 11/10/2009 01:06:54 PM: > >> According to the documentation at Sun documentation >> (http://java.sun.com/webservices/reference/tutorials/jaxp/html/sax.html), > " >> When the application specifies the schema to use, it overrides any schema >> declaration in the document.". I've tried to setup a SAXParser on an > HP-UX >> box using Xerces-J-2.9.1 which is JAXP1.2 compliant to use an external > DTD >> rather than the one specified in the document. >> >> What am I missing to get the Parser to ignore the internal DTD and use an >> external one? >> >> snippet - XML file has a DOCTYPE declaration: >> ====================================== >> <?xml version="1.0" encoding="UTF-8"?> >> <!DOCTYPE mpd SYSTEM "mpboe03.dtd" [ >> <!ENTITY % isobox PUBLIC "-//W3C//ENTITIES Box and Line Drawing//EN//XML" >> "http://www.w3.org/2003/entities/2007/isobox.ent" >> > >> %isobox; >> >> snippet - code: >> ======================================================================= >> private static final String JAXP_SCHEMA_SOURCE = >> "http://java.sun.com/xml/jaxp/properties/schemaSource"; >> private static final String JAXP_SCHEMA_LANGUAGE = >> "http://java.sun.com/xml/jaxp/properties/schemaLanguage"; >> private static final String W3C_XML_SCHEMA = >> "http://www.w3.org/2001/XMLSchema"; >> >> try { >> //1. Create a SAXParserFactory object. >> SAXParserFactory spf = SAXParserFactory.newInstance(); >> >> //2. Set the namespace-aware and validating properties to true. >> spf.setNamespaceAware(true); >> spf.setValidating(true); >> >> // 3. Obtain a SAXParser object. >> SAXParser saxParser = spf.newSAXParser(); >> >> parser = saxParser.getXMLReader(); >> parser.setErrorHandler(this); >> >> // Turn on validation >> parser.setFeature("http://xml.org/sax/features/validation", > true); >> >> //4. Set the properties for the schema language and schema source >> parser.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA); >> parser.setProperty(JAXP_SCHEMA_SOURCE, myOwnDTD.getAbsolutePath > ()); >> >> //5. Parse the document. The parser must have access to an ErrorHandler >> object. >> parser.parse(file.getAbsolutePath()); // file is the xml >> file to parse >> }catch ... // all necessary exceptions >> >> Results: >> =================================================== >> Get an io.FileNotFoundException: The parser is looking for the DTD called >> out in the DOCTYPE declaration instead of using the one specified by the >> coder myOwnDTD.dtd. >> >> java.io.FileNotFoundException: mpboe03.dtd (No such file or directory >> (errno:2)) >> at java.io.FileInputStream.open(Native Method) >> at java.io.FileInputStream.<init>(FileInputStream.java:106) >> at java.io.FileInputStream.<init>(FileInputStream.java:66) >> at >> sun.net.www.protocol.file.FileURLConnection.connect > (FileURLConnection.java:70) >> at >> sun.net.www.protocol.file.FileURLConnection.getInputStream >> (FileURLConnection.java:161) >> at >> org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown > Source) >> at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown >> Source) >> at org.apache.xerces.impl.XMLEntityManager.startDTDEntity(Unknown >> Source) >> at org.apache.xerces.impl.XMLDTDScannerImpl.setInputSource > (Unknown >> Source) >> at >> org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch > (Unknown >> Source) >> at >> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument > (Unknown >> Source) >> at org.apache.xerces.parsers.XML11Configuration.parse(Unknown >> Source) >> at org.apache.xerces.parsers.XML11Configuration.parse(Unknown >> Source) >> at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) >> at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown > Source) >> at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse > (Unknown >> Source) >> at JavaXMLParse.parse(JavaXMLParse.java:103) >> at JavaXMLParse.main(JavaXMLParse.java:154) >> >> -- >> View this message in context: http://old.nabble.com/How-to-ignore- >> the-DTD-called-out-in-DOCTYPE-declaration-and-use-one-specified-by- >> the-user--tp26287359p26287359.html >> Sent from the Xerces - J - Users mailing list archive at Nabble.com. >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: j-users-unsubscr...@xerces.apache.org >> For additional commands, e-mail: j-users-h...@xerces.apache.org > -- View this message in context: http://old.nabble.com/How-to-ignore-the-DTD-called-out-in-DOCTYPE-declaration-and-use-one-specified-by-the-user--tp26287359p26294433.html Sent from the Xerces - J - Users mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: j-users-unsubscr...@xerces.apache.org For additional commands, e-mail: j-users-h...@xerces.apache.org