Class SchemaLocationResolver

Object
SchemaLocationResolver
All Implemented Interfaces:
XSDSchemaLocationResolver
Direct Known Subclasses:
AppSchemaLocationResolver

public class SchemaLocationResolver extends Object implements XSDSchemaLocationResolver
Resolves a physical schema location from a namespace uri.

This class works from a XSD instance from which it resolves location on disk relative to.

Example usage:

         XSD xsd = ...
         String namespaceURI = xsd.getNamesapceURI();

         SchemaLocationResolver resolver = new SchemaLocationResolver( xsd );
         String schemaLocation = locator.resolveSchemaLocation( null, namespaceURI, "mySchema.xsd" );
         
Author:
Justin Deoliveira, The Open Planning Project
  • Field Details

    • xsd

      protected XSD xsd
      the xsd instance
    • lookupDirectories

      protected String[] lookupDirectories
      A list of locations to use as prefixes when looking up schema files.

      This value should be set in cases where an xml schema imports or includes schema files from sub directories.

  • Constructor Details

    • SchemaLocationResolver

      public SchemaLocationResolver(XSD xsd)
      Creates the new schema location resolver.
      Parameters:
      xsd - The xsd to resolve filenames relative to.
    • SchemaLocationResolver

      public SchemaLocationResolver(XSD xsd, String... lookupDirectories)
      Creates the new schema location resolver specifying additional directories to locate schema files in.

      The lookupDirectories parameter should be used in cases where a main schema imports or includes files from sub directories. Consider the following schema file structure:

         main.xsd
         dir1/
            include1.xsd
         dir2/
            include2.xsd
       
      The constructor would be called with:
       new SchemaLocationResolver(this,"include1","include2");
       
      Parameters:
      xsd - The xsd to resolve files relative to.
      lookupDirectories - Additional lookup directories relative to the xsd to lookup files in.
  • Method Details

    • canHandle

      public boolean canHandle(XSDSchema schema, String uri, String location)
      Determines if the locator can resolve the schema location for a particular namespace uri and schema location.
      Returns:
      true if it can handle, otherwise false.
    • resolveSchemaLocation

      public String resolveSchemaLocation(XSDSchema schema, String uri, String location)
      Resolves location to a physical location.

      Resolution is performed by stripping the filename off of location and looking up a resource located in the same package as the xsd.

      Specified by:
      resolveSchemaLocation in interface XSDSchemaLocationResolver
    • toString

      public String toString()
      Overrides:
      toString in class Object