XMLBeans External Entity Resolver
This page is a mini spec on how to resolve external entities.
Support for using a class that implements org.xml.sax.EntityResolver interface in two places:
- when parsing regular XML documents that contain references to external entities
Ex:<!ENTITY open-hatch SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml"> <!ENTITY open-hatch PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN" "http://www.textuality.com/boilerplate/OpenHatch.xml"> <!ENTITY hatch-pic SYSTEM "../grafix/OpenHatch.gif" NDATA gif >
- when parsing XMLSchema documents or WSDL documents that contain imports or includes
Ex:<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" ... > <xs:include schemaLocation="included.xsd"/>
How to set the resolver
- Use
XmlOptions.setEntityResolver(EntityResolver resolver)
to pass in the resolver to be used for parsing XML documents {{ XmlObject.parse(...) }} or compiling XMLSchema or WSDL documents {{ SchemaTypeSystemCompiler.compile(...) }}
2. If no entity resolver has been set in XmlOptions, org.apache.xml.resolver.tools.CatalogResolver will be used as a resolver if Apache's XmlCommons resolver.jar is on the classpath and a catalog file has been specified.
scomp -catalog catalog_file.cat
3. If the previous conditions failed, the xmlbean.entityResolver
system property will specify the name of a global, read only resolver.
4. If all previous attempts failed, the resolver will be at the discretion of the used XML parser for XML documents and for XMLSchema and WSDL documents a simple resolver implementation will be used if
{{ XmlOptions.setCompileDownloadUrls() }}
or
{{ scomp -dl ... }}
is used.