Registro de un solucionados de colecciones

Puede registrar implementaciones de la interfaz XCollectionResolver con XDynamicContext.

Procedimiento

Registro de un solucionados de colecciones con el contexto dinámico.

La implementación registrada de XCollectionResolver con XDynamicContext se utiliza en el tiempo de ejecución para recuperar la colección de nodos asociados al URI proporcionado en llamadas al método fn:collection. Si no se registra ningún solucionador con XDynamicContext, las llamadas a fn:collection provocarán un error irrecuperable y se utilizará la secuencia vacía para la colección.

Observe que el solucionador de colecciones y la función fn:collection no son para resolver URI de documentos. Para ello, debería utilizar el solucionador de origen y la función fn:doc.

Ejemplo

A continuación encontrará un ejemplo básico de la utilización de un solucionador de colecciones.
XFactory factory = XFactory.newInstance();

// Prepare the XPath expression
XPathExecutable executable = factory.prepareXPath("count(collection('typeA-typeB'))"
           
// Register the collection resolver with the dynamic context
XCollectionResolver collectionResolver = new ACollectionResolver(factory);
XDynamicContext dynamicContext = factory.newDynamicContext();
dynamicContext.setCollectionResolver(collectionResolver);

// Execute the XPath expression
XSequenceCursor cursor = executable.execute(dynamicContext);
A continuación encontrará un ejemplo básico de una implementación XCollectionResolver.
public class ACollectionResolver implements XCollectionResolver {
  
    private XFactory m_factory;
   
    public ACollectionResolver(XFactory factory) {
        m_factory = factory;
    }
   
    public XSequenceCursor getCollection(String uri, String base) {
       
        // Get the default collection
        if (uri.equals("")) {
            return getCollection("default", base);
        }
       
        // Get the requested collection
        ArrayList<XItemView> list = new ArrayList<XItemView>();
        StringTokenizer tokenizer = new StringTokenizer(uri, "-");
          XSequenceCursor cursor = null;
          while (tokenizer.hasMoreTokens()) {
              String token = tokenizer.nextToken();
              XSequenceCursor temp = getNodes(new StreamSource("collections.xml"), "/doc/" + token);
              if (cursor == null) {
                  cursor = temp;
              } else {
                  cursor = cursor.append(temp);
              }
          }
        return cursor;
    }
   
     private XSequenceCursor getNodes(Source source, String expression) {
         XPathExecutable executable = m_factory.prepareXPath(expression);
         XSequenceCursor cursor = executable.execute(source);
         return cursor;
     }
   
}

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=txml_resolvers_collection
File name: txml_resolvers_collection.html