sboag       01/07/13 12:13:36

  Modified:    java/src/org/apache/xalan/extensions
                        XSLProcessorContext.java
  Log:
  Fix problem reported by jason heddings <[EMAIL PROTECTED]>.
  
  "In v2.0.1, I was able to pass a Node to this function and have the node
  be copied to the result tree (as expected).  In the source code for
  XSLProcessorContext, it appears that the only objects that can be sent
  to the result tree are XObjects.  Everything else is converted to a
  String.  So for instance, I can no longer create a ProcessingInstruction
  and pass it to the result tree via this method since the PI is simply
  converted to a String."
  
  Revision  Changes    Path
  1.11      +40 -18    
xml-xalan/java/src/org/apache/xalan/extensions/XSLProcessorContext.java
  
  Index: XSLProcessorContext.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/extensions/XSLProcessorContext.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- XSLProcessorContext.java  2001/06/15 17:53:59     1.10
  +++ XSLProcessorContext.java  2001/07/13 19:13:31     1.11
  @@ -56,11 +56,10 @@
    */
   package org.apache.xalan.extensions;
   
  -//import org.w3c.dom.Node;
  -//import org.w3c.dom.DocumentFragment;
  -//import org.w3c.dom.traversal.NodeIterator;
  -import org.apache.xml.dtm.DTM;
  -import org.apache.xml.dtm.DTMIterator;
  +import org.w3c.dom.Node;
  +import org.w3c.dom.DocumentFragment;
  +import org.w3c.dom.traversal.NodeIterator;
  +import org.apache.xml.dtm.*;
   
   import org.apache.xalan.transformer.TransformerImpl;
   import org.apache.xalan.transformer.ResultTreeHandler;
  @@ -77,6 +76,8 @@
   import org.apache.xpath.objects.XRTreeFrag;
   import org.apache.xpath.objects.XNodeSet;
   import org.apache.xpath.XPathContext;
  +import org.apache.xpath.axes.DescendantIterator;
  +import org.apache.xpath.axes.OneStepIterator;
   
   import org.apache.xml.dtm.DTM;
   
  @@ -201,6 +202,7 @@
       try
       {
         ResultTreeHandler rtreeHandler = transformer.getResultTreeHandler();
  +      XPathContext xctxt = transformer.getXPathContext();
         XObject value;
   
         // Make the return object into an XObject because it
  @@ -222,20 +224,40 @@
         else if (obj instanceof Double)
         {
           value = new XNumber(((Double) obj).doubleValue());
  +      }
  +      else if (obj instanceof DocumentFragment)
  +      {
  +        int handle = xctxt.getDTMHandleFromNode((DocumentFragment)obj);
  +        
  +        value = new XRTreeFrag(handle, xctxt);
  +      }
  +      else if (obj instanceof DTM)
  +      {
  +        DTM dtm = (DTM)obj;
  +        DTMIterator iterator = new DescendantIterator();
  +        iterator.setRoot(dtm.getDocument(), xctxt);
  +        value = new XNodeSet(iterator);
  +      }
  +      else if (obj instanceof DTMAxisIterator)
  +      {
  +        DTMAxisIterator iter = (DTMAxisIterator)obj;
  +        DTMIterator iterator = new OneStepIterator(iter);
  +        value = new XNodeSet(iterator);
  +      }
  +      else if (obj instanceof DTMIterator)
  +      {
  +        value = new XNodeSet((DTMIterator) obj);
  +      }
  +      else if (obj instanceof NodeIterator)
  +      {
  +        value = new XNodeSet(new 
org.apache.xpath.NodeSetDTM(((NodeIterator)obj), xctxt));
  +      }
  +      else if (obj instanceof org.w3c.dom.Node)
  +      {
  +        value =
  +          new XNodeSet(xctxt.getDTMHandleFromNode((org.w3c.dom.Node) obj),
  +                       xctxt.getDTMManager());
         }
  -      // %TDM%
  -//      else if (obj instanceof DocumentFragment)
  -//      {
  -//        value = new XRTreeFrag((DocumentFragment) obj);
  -//      }
  -//      else if (obj instanceof Node)
  -//      {
  -//        value = new XNodeSet((Node) obj);
  -//      }
  -//      else if (obj instanceof NodeIterator)
  -//      {
  -//        value = new XNodeSet((NodeIterator) obj);
  -//      }
         else
         {
           value = new XString(obj.toString());
  
  
  

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

Reply via email to