[ 
http://issues.apache.org/jira/browse/XALANJ-2057?page=comments#action_58986 ]
     
elharo commented on XALANJ-2057:
--------------------------------

I don't think this would be too hard to do. I haven't even tried compiling this 
yet, so this is not a patch, but just a couple of notes on how I suspect this 
could be implemented. 

I think it would take an additional branch in the big if block in 
XObjectFactory.create(Object val, XPathContext xctxt) that would look something 
like this:

    else if (val instanceof Source)
    {
      DTM dtm = mgr.getDTM((Source) val, false, null, true, true);

      try
      {
        int dtmRoot = dtm.getDocument();
        DTMAxisIterator iter = dtm.getAxisIterator(Axis.SELF);
        iter.setStartNode(dtmRoot);
        DTMIterator iterator = new OneStepIterator(iter, Axis.SELF);
        iterator.setRoot(dtmRoot, xctxt);
        result = new XNodeSet(iterator);
      }
      catch(Exception ex)
      {
        throw new org.apache.xml.utils.WrappedRuntimeException(ex);
      }
    }

I've adapted this by cutting and pasting out of two existing classes 
(Transformer and XObjectfactory) so that probably won't quite work, and needs 
some hacking; but the basic idea is just to convert sources into node-sets 
pretty much the same way they're converted when initially loading a Source into 
Xalan; and then end up with the same thing we'd end up with if a DTM had been 
passed in instead of a Source. 

> Transformer.setParameter should accept Source as an Object value
> ----------------------------------------------------------------
>
>          Key: XALANJ-2057
>          URL: http://issues.apache.org/jira/browse/XALANJ-2057
>      Project: XalanJ2
>         Type: Improvement
>   Components: JAXP
>     Versions: 2.7.0-future-release
>     Reporter: elharo

>
> Saxon 8 has a nice feature whereby you can pass a TrAX SAXSource/DOMSource 
> etc. to the Transformer.setParameter method, Saxon converts that source into 
> its internal representation. That is, it will read from the source and build 
> the necessary representation of a node-set. This makes it relatively easy to 
> set parameters whose values are node-sets.
> This is very useful for hooking up Xalan to other object models such as JDOM 
> and XOM. Currently these models can be transformed by wrapping the original 
> input document in a SAXSource. However, node-set parameters do not work the 
> same way. These have to be set by wrapping them in a DOM NodeIterator or 
> NodeList or Node. It would be more consistent and more convenient if 
> setParameter accepted a TrAX Source object as well. 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to