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 Michael Glavassevich <mr...@ca.ibm.com> on 2010/01/04 23:56:31 UTC

Re: xerces and no network?

Hi Rusty,

Have you tried plugging in an XML Catalog [1] or custom entity resolver
[2]? This can be used to redirect from a resource on the net to a local
file (or a zero byte stream if you don't want to load anything).

Also, if this is new code that you're writing I'd suggest using the
standard JAXP Validation API [3][4] for grammar caching rather than the
Xerces specific ones which predated it. In 2010, I'd only recommend folks
use a grammar pool directly if they have some special need that isn't
satisfied by JAXP.

Thanks.

[1] http://xerces.apache.org/xerces2-j/faq-xcatalogs.html
[2]
http://xerces.apache.org/xerces2-j/javadocs/api/org/xml/sax/EntityResolver.html
[3]
http://xerces.apache.org/xerces2-j/javadocs/api/javax/xml/validation/SchemaFactory.html
[4]
http://xerces.apache.org/xerces2-j/javadocs/api/javax/xml/parsers/SAXParserFactory.html#setSchema
(javax.xml.validation.Schema)

Michael Glavassevich
XML Parser Development
IBM Toronto Lab
E-mail: mrglavas@ca.ibm.com
E-mail: mrglavas@apache.org

Rusty Wright <rw...@gmail.com> wrote on 12/21/2009 08:02:45 PM:

> I'm trying to write a data loader for integration tests for Google's
> Big Table.  I've written the schema.  I figured it would be a good
> idea to use the grammar pool feature to speed things up.  How can I
> stop Xerces from using the network (my guess is it's validating my
> schema)?  I'm using most of the code from the sample for the grammar
> builder.  I tried changing features from true to false but it's
> still going out to the network; there must be some magic combination
> I've missed.
>
> Here's my code:
>
>     public void buildGrammar(final String schemaPath) throws Exception {
>         final SymbolTable sym = new SymbolTable
(XmlGrammarBuilder.BIG_PRIME);
>         final XMLGrammarPoolImpl grammarPool = new XMLGrammarPoolImpl();
>
>         final XMLGrammarPreparser preparser = new XMLGrammarPreparser
(sym);
>
>         preparser.registerPreparser(XMLGrammarDescription.XML_SCHEMA,
null);
>
>         preparser.setProperty(XmlGrammarBuilder.GRAMMAR_POOL,
grammarPool);
>
>         preparser.setFeature(XmlFeatures.NAMESPACES.uri(), true);
>         preparser.setFeature(XmlFeatures.VALIDATION.uri(), true);
>
>         preparser.setFeature(XmlFeatures.VALIDATION_SCHEMA.uri(), true);
>         preparser.setFeature(XmlFeatures.SCHEMA_FULL_CHECKING.uri(),
true);
>         preparser.setFeature(XmlFeatures.HONOUR_ALL_SCHEMA_LOCATIONS.uri
(),
>                 true);
>         preparser.setFeature(XmlFeatures.STANDARD_URI_CONFORMANT.uri(),
true);
>
>         preparser.preparseGrammar(XMLGrammarDescription.XML_SCHEMA,
>                 new XMLInputSource(null, schemaPath, null));
>
>         final XMLParserConfiguration parserConfiguration =
>                 new XIncludeAwareParserConfiguration(sym, grammarPool);
>
>         parserConfiguration.setFeature(XmlFeatures.NAMESPACES.uri(),
true);
>         parserConfiguration.setFeature(XmlFeatures.VALIDATION.uri(),
true);
>
>         parserConfiguration.setFeature(XmlFeatures.VALIDATION_SCHEMA.uri
(),
>                 true);
>         parserConfiguration.setFeature
(XmlFeatures.SCHEMA_FULL_CHECKING.uri(),
>                 true);
>         parserConfiguration.setFeature
(XmlFeatures.HONOUR_ALL_SCHEMA_LOCATIONS
>                 .uri(), true);
>         parserConfiguration.setFeature
(XmlFeatures.STANDARD_URI_CONFORMANT
>                 .uri(), true);
>
>         parserConfiguration.parse(new XMLInputSource(null, schemaPath,
null));
>
>         this.parser = new SAXParser(parserConfiguration);
>     }
>
> Thanks
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: j-users-unsubscribe@xerces.apache.org
> For additional commands, e-mail: j-users-help@xerces.apache.org

Re: xerces and no network?

Posted by Rusty Wright <rw...@gmail.com>.
Many thanks Michael for the response.  I'll look at your suggestions.  I was guessing that I'd need a custom entity resolver.


Michael Glavassevich wrote:
> Hi Rusty,
> 
> Have you tried plugging in an XML Catalog [1] or custom entity resolver 
> [2]? This can be used to redirect from a resource on the net to a local 
> file (or a zero byte stream if you don't want to load anything).
> 
> Also, if this is new code that you're writing I'd suggest using the 
> standard JAXP Validation API [3][4] for grammar caching rather than the 
> Xerces specific ones which predated it. In 2010, I'd only recommend 
> folks use a grammar pool directly if they have some special need that 
> isn't satisfied by JAXP.
> 
> Thanks.
> 
> [1] http://xerces.apache.org/xerces2-j/faq-xcatalogs.html
> [2] 
> http://xerces.apache.org/xerces2-j/javadocs/api/org/xml/sax/EntityResolver.html
> [3] 
> http://xerces.apache.org/xerces2-j/javadocs/api/javax/xml/validation/SchemaFactory.html
> [4] 
> http://xerces.apache.org/xerces2-j/javadocs/api/javax/xml/parsers/SAXParserFactory.html#setSchema(javax.xml.validation.Schema)
> 
> Michael Glavassevich
> XML Parser Development
> IBM Toronto Lab
> E-mail: mrglavas@ca.ibm.com
> E-mail: mrglavas@apache.org
> 
> Rusty Wright <rw...@gmail.com> wrote on 12/21/2009 08:02:45 PM:
> 
>  > I'm trying to write a data loader for integration tests for Google's
>  > Big Table.  I've written the schema.  I figured it would be a good
>  > idea to use the grammar pool feature to speed things up.  How can I
>  > stop Xerces from using the network (my guess is it's validating my
>  > schema)?  I'm using most of the code from the sample for the grammar
>  > builder.  I tried changing features from true to false but it's
>  > still going out to the network; there must be some magic combination
>  > I've missed.
>  >
>  > Here's my code:
>  >
>  >     public void buildGrammar(final String schemaPath) throws Exception {
>  >         final SymbolTable sym = new 
> SymbolTable(XmlGrammarBuilder.BIG_PRIME);
>  >         final XMLGrammarPoolImpl grammarPool = new XMLGrammarPoolImpl();
>  >
>  >         final XMLGrammarPreparser preparser = new 
> XMLGrammarPreparser(sym);
>  >
>  >         preparser.registerPreparser(XMLGrammarDescription.XML_SCHEMA, 
> null);
>  >
>  >         preparser.setProperty(XmlGrammarBuilder.GRAMMAR_POOL, 
> grammarPool);
>  >
>  >         preparser.setFeature(XmlFeatures.NAMESPACES.uri(), true);
>  >         preparser.setFeature(XmlFeatures.VALIDATION.uri(), true);
>  >
>  >         preparser.setFeature(XmlFeatures.VALIDATION_SCHEMA.uri(), true);
>  >         preparser.setFeature(XmlFeatures.SCHEMA_FULL_CHECKING.uri(), 
> true);
>  >         
> preparser.setFeature(XmlFeatures.HONOUR_ALL_SCHEMA_LOCATIONS.uri(),
>  >                 true);
>  >         
> preparser.setFeature(XmlFeatures.STANDARD_URI_CONFORMANT.uri(), true);
>  >
>  >         preparser.preparseGrammar(XMLGrammarDescription.XML_SCHEMA,
>  >                 new XMLInputSource(null, schemaPath, null));
>  >
>  >         final XMLParserConfiguration parserConfiguration =
>  >                 new XIncludeAwareParserConfiguration(sym, grammarPool);
>  >
>  >         parserConfiguration.setFeature(XmlFeatures.NAMESPACES.uri(), 
> true);
>  >         parserConfiguration.setFeature(XmlFeatures.VALIDATION.uri(), 
> true);
>  >
>  >         
> parserConfiguration.setFeature(XmlFeatures.VALIDATION_SCHEMA.uri(),
>  >                 true);
>  >         
> parserConfiguration.setFeature(XmlFeatures.SCHEMA_FULL_CHECKING.uri(),
>  >                 true);
>  >         
> parserConfiguration.setFeature(XmlFeatures.HONOUR_ALL_SCHEMA_LOCATIONS
>  >                 .uri(), true);
>  >         
> parserConfiguration.setFeature(XmlFeatures.STANDARD_URI_CONFORMANT
>  >                 .uri(), true);
>  >
>  >         parserConfiguration.parse(new XMLInputSource(null, 
> schemaPath, null));
>  >
>  >         this.parser = new SAXParser(parserConfiguration);
>  >     }
>  >
>  > Thanks
>  >
>  > ---------------------------------------------------------------------
>  > To unsubscribe, e-mail: j-users-unsubscribe@xerces.apache.org
>  > For additional commands, e-mail: j-users-help@xerces.apache.org
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: j-users-unsubscribe@xerces.apache.org
For additional commands, e-mail: j-users-help@xerces.apache.org