4Always resolve resources

Configuration on Java

  • Feature ResolverFeature.ALWAYS_RESOLVE (type: Boolean)

  • System property xml.catalog.alwaysResolve

  • Property file property always-resolve

Configuration on .NET

  • This setting has no equivalent on .NET

The standard contract for the Java resolver APIs is that they return null if the resolver doesn’t find a match. But on the modern web, lots of URIs redirect (from http: to https: especially), and some parsers don’t follow redirects. That causes the parse to fail in ways that may not be easy for the user to fix.

Starting in version 5.0.0, the resolver will always resolve resources, follow redirects, and return a stream. This deprives the parser of the option to try something else, but means that redirects don’t cause the parse to file.

This feature is enabled by default. If you set it to false, the resolver will return null if the resource isn’t found in the catalog.

I don’t know of any parsers that try anything else after the resolver has failed except loading the resource, so I expect this to be an improvement for users. If your implementation wants to explicitly just check the catalog, at the Java API level, you can use the CatalogManager API. That’s the same API the resolver classes use to locate resources in the catalog.