org.eclipse.xsd.util
Interface XSDSchemaLocationResolver


public interface XSDSchemaLocationResolver

An adapter interface used to resolve schema locations. When the schema location of an schema directive needs to be resolved, each containing schema will be inspected for an adapter that implements this interface. As such, you can register an adapter factory like this to tailor the algorithm used to resolve a schema location:

  ResourceSet resourceSet = new ResourceSetImpl();
  resourceSet.getAdapterFactories().add
    (new AdapterFactoryImpl()
     {
       class Resolver extends AdapterImpl implements XSDSchemaLocationResolver
       {
         public String resolveSchemaLocation(XSDSchema xsdSchema, String namespaceURI,  String schemaLocationURI)
         {
           return XSDConstants.resolveSchemaLocation(xsdSchema.getSchemaLocation(), namespaceURI, schemaLocationURI);
         }

         public boolean isAdapterForType(Object type)
         {
           return type == XSDSchemaLocationResolver.class;
         }
       }

       protected Resolver resolver = new Resolver();

       public boolean isFactoryForType(Object type)
       {
         return type == XSDSchemaLocationResolver.class;
       }

       public Adapter adaptNew(Notifier target, Object type)
       {
         return resolver;
       }
     });

See Also:
EcoreUtil.getRegisteredAdapter(org.eclipse.emf.ecore.EObject,Object)

Method Summary
 java.lang.String resolveSchemaLocation(XSDSchema xsdSchema, java.lang.String namespaceURI, java.lang.String schemaLocationURI)
          Resolve the namespace and schema location relative to the given base schema's location.
 

Method Detail

resolveSchemaLocation

java.lang.String resolveSchemaLocation(XSDSchema xsdSchema,
                                       java.lang.String namespaceURI,
                                       java.lang.String schemaLocationURI)
Resolve the namespace and schema location relative to the given base schema's location. For example, the expression
  resolveSchemaLocation
    (xsdSchema, // xsdSchema.getSchemaLocation() == "http://www.example.com/A/a.xsd" 
     "http://www.example.com/B", 
     "../B/b.xsd");
would normally yield
  "http://www.example.com/B/b.xsd"
When no namespace schema location is provided, the namespace itself will be used.

Parameters:
xsdSchema - the schema containing the reference
namespaceURI - the namespace being resolved, i.e., XSDImport.getNamespace().
schemaLocationURI - the suggested location of the namespace being resolved, i.e., XSDSchemaDirective.getSchemaLocation().
Returns:
the resolved schema location.
See Also:
XSDConstants.resolveSchemaLocation(String,String,String)

Copyright 2001-2006 IBM Corporation and others.
All Rights Reserved.