sboag 01/07/06 11:29:17
Modified: java/src/org/apache/xpath/axes ChildTestIterator.java
OneStepIterator.java
java/src/org/apache/xpath/functions FuncExtFunction.java
Log:
Fix for John G. for the SQL extension: handle return types of
DTM and DTMAxisIterator.
Revision Changes Path
1.10 +19 -0
xml-xalan/java/src/org/apache/xpath/axes/ChildTestIterator.java
Index: ChildTestIterator.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xpath/axes/ChildTestIterator.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ChildTestIterator.java 2001/06/12 19:16:15 1.9
+++ ChildTestIterator.java 2001/07/06 18:29:17 1.10
@@ -117,6 +117,25 @@
}
/**
+ * Create a ChildTestIterator object.
+ *
+ * @param compiler A reference to the Compiler that contains the op map.
+ * @param opPos The position within the op map, which contains the
+ * location path expression for this itterator.
+ *
+ * @throws javax.xml.transform.TransformerException
+ */
+ ChildTestIterator(DTMAxisTraverser traverser)
+ throws javax.xml.transform.TransformerException
+ {
+
+ super(null);
+
+ m_traverser = traverser;
+ }
+
+
+ /**
* Get a cloned Iterator that is reset to the beginning
* of the query.
*
1.3 +19 -1
xml-xalan/java/src/org/apache/xpath/axes/OneStepIterator.java
Index: OneStepIterator.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xpath/axes/OneStepIterator.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- OneStepIterator.java 2001/06/12 19:16:19 1.2
+++ OneStepIterator.java 2001/07/06 18:29:17 1.3
@@ -47,6 +47,23 @@
}
/**
+ * Create a OneStepIterator object.
+ *
+ * @param compiler A reference to the Compiler that contains the op map.
+ * @param opPos The position within the op map, which contains the
+ * location path expression for this itterator.
+ *
+ * @throws javax.xml.transform.TransformerException
+ */
+ public OneStepIterator(DTMAxisIterator iterator)
+ throws javax.xml.transform.TransformerException
+ {
+ super(null);
+
+ m_iterator = iterator;
+ }
+
+ /**
* Initialize the context values for this expression
* after it is cloned.
*
@@ -56,7 +73,8 @@
public void setRoot(int context, Object environment)
{
super.setRoot(context, environment);
- m_iterator = m_cdtm.getAxisIterator(m_axis);
+ if(m_axis > -1)
+ m_iterator = m_cdtm.getAxisIterator(m_axis);
m_iterator.setStartNode(m_context);
}
1.12 +16 -0
xml-xalan/java/src/org/apache/xpath/functions/FuncExtFunction.java
Index: FuncExtFunction.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xpath/functions/FuncExtFunction.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- FuncExtFunction.java 2001/06/15 05:15:41 1.11
+++ FuncExtFunction.java 2001/07/06 18:29:17 1.12
@@ -68,6 +68,9 @@
import org.w3c.dom.DocumentFragment;
import org.w3c.dom.traversal.NodeIterator;
+import org.apache.xml.dtm.*;
+import org.apache.xpath.axes.*;
+
/**
* <meta name="usage" content="advanced"/>
* An object of this class represents an extension call expression. When
@@ -203,6 +206,19 @@
int handle = xctxt.getDTMHandleFromNode((DocumentFragment)val);
result = new XRTreeFrag(handle, xctxt);
+ }
+ else if (val instanceof DTM)
+ {
+ DTM dtm = (DTM)val;
+ DTMIterator iterator = new DescendantIterator();
+ iterator.setRoot(dtm.getDocument(), xctxt);
+ result = new XNodeSet(iterator);
+ }
+ else if (val instanceof DTMAxisIterator)
+ {
+ DTMAxisIterator iter = (DTMAxisIterator)val;
+ DTMIterator iterator = new OneStepIterator(iter);
+ result = new XNodeSet(iterator);
}
else if (val instanceof DTMIterator)
{
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]