Sorry to be dense, but what exactly is the bug? External entities don't work
in the preparser? Something more subtle?
Bob Foster
----- Original Message -----
From: "Neil Graham" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, September 11, 2003 5:18 PM
Subject: Re: XMLGrammarPreparser question
>
>
>
>
> Hi Henry,
>
> Yes this should work but no it doesn't. Although this does come up
> periodically, so far no one has been sufficiently motivated to fix this
> particular limitation. I don't think it would be hard to fix; it'd just
be
> a matter of being careful enough not to break anything/hurt performance.
> So all that's really needed is for someone to step up to the plate and
> create a patch...
>
> Cheers,
> Neil
> Neil Graham
> XML Parser Development
> IBM Toronto Lab
> Phone: 905-413-3519, T/L 969-3519
> E-mail: [EMAIL PROTECTED]
>
>
>
>
>
> Henry Miller
> <[EMAIL PROTECTED]> To:
[EMAIL PROTECTED]
> cc:
> 09/11/2003 05:40 Subject: Re:
XMLGrammarPreparser question
> PM
> Please respond to
> xerces-j-user
>
>
>
>
>
> So sorry about that. I was so wrapped up in getting the other bits of
> data I forgot the most important piece -- the data!
>
> The code I'm using borrowed heavily from XMLGrammarBuilder. When you
> don't know what you're doing, "steal" from the best, I suppose. :-)
>
> The input file is this:
>
> <?xml version='1.0' encoding='UTF-8' ?>
> <!ENTITY % entDec SYSTEM "EntityDecl.dtd" >
> %entDec;
>
> <!ELEMENT nameList (name, alias?)+>
> <!ELEMENT name (%flName;) >
> <!ELEMENT alias (%flName;) >
>
> Note: this a simpler version of the input file I used to first
> report, so the failure is actually on 'flName' instead of 'CONTACT'.
> However in either file, the failure is exactly the same.
>
> The external data file (EntityDecl.dtd) contains:
>
> <?xml version='1.0' encoding='UTF-8' ?>
> <!ENTITY % flName " firstName, lastName " >
> <!ELEMENT firstName (#PCDATA) >
> <!ELEMENT lastName (#PCDATA) >
>
> There's nothing else in this file. Both files sit next to each other
> in the same directory.
>
> I'm using Xerces-J 2.5.0 on Linux, but the same problem is manifested
> under Xerces-J 2.4.0, running on Linux (SuSE 8.2) and Solaris (SunOS
> 5.7).
>
> Interestingly enough, when I combined the two into a "master" file,
> the entities are resolved just fine (This DTD works):
>
> <?xml version='1.0' encoding='UTF-8' ?>
> <!ENTITY % flName " firstName, lastName " >
> <!ELEMENT firstName (#PCDATA) >
> <!ELEMENT lastName (#PCDATA) >
>
> <!ELEMENT nameList (name, alias?)+ >
> <!ELEMENT name (%flName;) >
> <!ELEMENT alias (%flName;) >
>
> Oh, please tell me it's something I haven't tried yet! This is
> stopping me (and my users) cold in their tracks!
>
> --Henry
>
> At 8:27 PM +0000 9/11/03, Jeffrey Rodriguez wrote:
> >Hi Henry,
> >So a couple of questions.
> >
> >1) What is inputFile in your code
> >
> >>>if (isDTD) { // Process DTD input file g =
> >>>preparser.preparseGrammar(XMLGrammarDescription.XML_DTD,
> > >> stringToXIS(inputFile) );
> >>> } else {
> >
> >2) What does the DTD you are preparsing looks like?
> >
> >
> >.... I don't know if you already look at the XMLGrammarBuilder sample.
> >
> >
> >That sample only sets the following features:
> >
> >
> > preparser.setProperty(GRAMMAR_POOL, grammarPool);
> > preparser.setFeature(NAMESPACES_FEATURE_ID, true);
> > preparser.setFeature(VALIDATION_FEATURE_ID, true);
> > // note we can set schema features just in case...
> > preparser.setFeature(SCHEMA_VALIDATION_FEATURE_ID, true);
> > preparser.setFeature(SCHEMA_FULL_CHECKING_FEATURE_ID,
> >schemaFullChecking);
> > // parse the grammar...
> >
> >>
> >>Without setting anything special in the XMLGrammarPreparser,
> >>shouldn't the Xerces parse process automatically resolve external
> >>entities
> >>
> >
> >About your question..... yes it should. So if your DTD is fine, how
> >are you declaring external
> >entities in your DTD?
> >
> >I am a little confuse about your statement but I have not seen your DTD.
> >
> >
> >Regards,
> >
> > Jefrey Rodriguez
> > Silicon Valley
> >
> >
> >
> >
> >
> >
> >
> >
> >>From: Henry Miller <[EMAIL PROTECTED]>
> >>Reply-To: [EMAIL PROTECTED]
> >>To: [EMAIL PROTECTED]
> >>Subject: XMLGrammarPreparser question
> >>Date: Thu, 11 Sep 2003 10:57:16 -0500
> >>
> >>I posted this question to xerces-j-dev, but got no response so I'll
> >>try here. Sorry if you've seen it before...
> >>
> >>Please. I need an answer from somemone who knows better than I, here
> goes:
> >>
> >>
> >>Without setting anything special in the XMLGrammarPreparser,
> >>shouldn't the Xerces parse process automatically resolve external
> >>entities?
> >>
> >>I mean, if I were validating an XML instance document using a DTD
> >>that contains externally defined parameter entities, doesn't the
> >>parser automatically resolve the external entities there in order
> >>to validate the document?
> >>
> >>So why can't I get the preparser to resolve the same entities, if I
> >>just want to cache the grammar from the same DTD in the example
> >>above? The (pre)parser itself keeps giving me an error of
> >>"EntityNotDeclared" for the only external entity defined in my test.
> >>
> >>Has anyone run into this situation?
> >>
> >>What am I not telling the XMLGrammarPreparser? I am not setting any
> >>features or properties (actually I tried setting relevant features,
> >>but they seem to be ignored by the parser).
> >>
> >>Can someone help me? Any pointers?? I'm running with Xerces-J 2.5.0.
> >>
> >>
> >>As a footnote to the original question I've posted, here's some
> >>additional info to my problem:
> >>
> >>I'm setting features within my preparser object, but they are
> >>definitely being ignored when it runs -- I've even misspelled them
> >>purposely just to see if the code would complain. Same errors as
> >>before resulted, so essentially *nothing* happened. Should I report
> >>a bug in the preparser?
> >>
> >>My test code is as follows (much of it borrowed from the
> >>XMLGrammarBuilder.java sample program) :
> >>
> >> SymbolTable sym = new SymbolTable(BIG_PRIME);
> >> XMLGrammarPreparser preparser = new XMLGrammarPreparser(sym);
> >> XMLGrammarPoolImpl grammarPool = new XMLGrammarPoolImpl();
> >>
> >> if(isDTD) {
> >>
> >> XMLDTDLoader grammarLoader = new XMLDTDLoader(sym, grammarPool);
> >> preparser.registerPreparser(XMLGrammarDescription.XML_DTD,
> >>grammarLoader);
> >>
> >> } else {
> >>
> >> preparser.registerPreparser(XMLGrammarDescription.XML_SCHEMA,
> null);
> >>
> >> }
> >>
> >> preparser.setGrammarPool(grammarPool);
> >> preparser.setProperty(GRAMMAR_POOL, grammarPool);
> >> preparser.setProperty(SYMBOL_TABLE, sym);
> >>
> >> preparser.setFeature(NAMESPACES_FEATURE_ID, true);
> >> preparser.setFeature(VALIDATION_FEATURE_ID, false);
> >> preparser.setFeature(SCHEMA_VALIDATION_FEATURE_ID, false);
> >>
> >> // Set these to see if preparser will listen to them:
> >>
> >>preparser.setFeature("
> http://xml.org/sax/features/external-parameter-entities",
> >>true);
> >>
> >>preparser.setFeature("
> http://apache.org/xml/features/continue-after-fatal-error",
> >>true);
> >>
> >>preparser.setFeature("
> http://apache.org/xml/nonvalidating/load-dtd-grammar",
> >>true);
> >>
> >>preparser.setFeature("
> http://apache.org/xml/nonvalidating/load-external-dtd",
> >>true);
> >>
> >> // parse the grammar...
> >> Grammar g = null;
> >> try {
> >> if (isDTD) {
> >> // Process DTD input file
> >> g = preparser.preparseGrammar(XMLGrammarDescription.XML_DTD,
> >> stringToXIS(inputFile) );
> >> } else {
> >> // Process schema input file
> >> g = preparser.preparseGrammar(XMLGrammarDescription.XML_SCHEMA,
> >> stringToXIS(inputFile) );
> >> }
> >>
> >>
> >>The problem is with DTDs being read. I get in return the message:
> >>
> >>[Error] :-1:-1:
> >>http://www.w3.org/TR/1998/REC-xml-19980210#EntityNotDeclared?CONTACT
> >>[Fatal Error] :-1:-1:
>
>>http://www.w3.org/TR/1998/REC-xml-19980210#MSG_OPEN_PAREN_OR_ELEMENT_TYPE_
REQUIRED_IN_CHILDREN?Address
>
> >>
> >>Error found during parsing:
>
>>http://www.w3.org/TR/1998/REC-xml-19980210#MSG_OPEN_PAREN_OR_ELEMENT_TYPE_
REQUIRED_IN_CHILDREN?Address
>
> >>
> >>Stack Trace:
> >>:::::-1:-1:
>
http://www.w3.org/TR/1998/REC-xml-19980210#MSG_OPEN_PAREN_OR_ELEMENT_TYPE_REQUIRED_IN_CHILDREN?Address
>
> >> at
> >>org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
> >> at
> >>org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
> >> at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown
> Source)
> >> at
> >>org.apache.xerces.impl.XMLDTDScannerImpl.scanChildren(Unknown
> >>Source)
> >> at
> >>org.apache.xerces.impl.XMLDTDScannerImpl.scanElementDecl(Unknown
> >>Source)
> >> at org.apache.xerces.impl.XMLDTDScannerImpl.scanDecls(Unknown
> Source)
> >> at
> >>org.apache.xerces.impl.XMLDTDScannerImpl.scanDTDExternalSubset(Unknown
> >>Source)
> >> at
> >>org.apache.xerces.impl.dtd.XMLDTDLoader.loadGrammar(Unknown Source)
> >> at
> >>org.apache.xerces.parsers.XMLGrammarPreparser.preparseGrammar(Unknown
> >>Source)
> >> at com.eti.rs.xml.XMLParser.main(Unknown Source)
> >>
> >>Clearly the preparser stopped before any of my code starts. So what
> >>did I forget to tell the preparser? Or is this really a bug?
> >>
> >>Any reply is more than I had before. Thanks for reading this far!
> >>--
> >>
> >>
> >>--Henry Miller
> >>
> >>[EMAIL PROTECTED]
> >>Evolutionary Technologies International, Inc.
> >>
> >>---------------------------------------------------------------------
> >>To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >
> >_________________________________________________________________
> >Express yourself with MSN Messenger 6.0 -- download now!
> >http://www.msnmessenger-download.com/tracking/reach_general
> >
> >
> >---------------------------------------------------------------------
> >To unsubscribe, e-mail: [EMAIL PROTECTED]
> >For additional commands, e-mail: [EMAIL PROTECTED]
>
>
> --
>
>
> --Henry Miller
>
> [EMAIL PROTECTED]
> Evolutionary Technologies International, Inc.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]