[
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]