sboag 01/06/15 10:54:31
Modified: java/src/org/apache/xalan/extensions MethodResolver.java
XSLProcessorContext.java
java/src/org/apache/xalan/templates ElemCopyOf.java
FuncDocument.java FuncKey.java
java/src/org/apache/xalan/trace PrintTraceListener.java
java/src/org/apache/xalan/transformer KeyWalker.java
ResultTreeHandler.java
java/src/org/apache/xml/dtm/ref DTMNodeIterator.java
java/src/org/apache/xml/dtm/ref/dom2dtm DOM2DTM.java
java/src/org/apache/xml/utils TreeWalker.java
java/src/org/apache/xpath Expression.java XPathAPI.java
java/src/org/apache/xpath/axes FilterExprWalker.java
java/src/org/apache/xpath/functions FuncId.java
java/src/org/apache/xpath/objects XNodeSet.java XNull.java
XObject.java XRTreeFrag.java
XRTreeFragSelectWrapper.java XString.java
Log:
Changed name of XObject#nodeset() to #iter(), and changed rtree()
to rtf, then added back nodeset() method to return a NodeIterator.
Revision Changes Path
1.24 +4 -4
xml-xalan/java/src/org/apache/xalan/extensions/MethodResolver.java
Index: MethodResolver.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/extensions/MethodResolver.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- MethodResolver.java 2001/06/15 05:13:47 1.23
+++ MethodResolver.java 2001/06/15 17:53:59 1.24
@@ -805,7 +805,7 @@
if ( (javaClass == NodeIterator.class) ||
(javaClass == java.lang.Object.class) )
{
- return xobj.nodeset();
+ return xobj.iter();
}
// Same comment as above
// else if(NodeList.class.isAssignableFrom(javaClass))
@@ -817,9 +817,9 @@
// else if(Node.class.isAssignableFrom(javaClass))
else if(javaClass == Node.class)
{
- // Xalan ensures that nodeset() always returns an
+ // Xalan ensures that iter() always returns an
// iterator positioned at the beginning.
- DTMIterator ni = xobj.nodeset();
+ DTMIterator ni = xobj.iter();
int handle = ni.nextNode();
return ni.getDTM(handle).getNode(handle); // may be null.
}
@@ -837,7 +837,7 @@
}
else
{
- DTMIterator iter = xobj.nodeset();
+ DTMIterator iter = xobj.iter();
int childHandle = iter.nextNode();
DTM dtm = iter.getDTM(childHandle);
Node child = dtm.getNode(childHandle);
1.10 +1 -1
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.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- XSLProcessorContext.java 2001/06/12 19:14:34 1.9
+++ XSLProcessorContext.java 2001/06/15 17:53:59 1.10
@@ -255,7 +255,7 @@
break;
case XObject.CLASS_NODESET : // System.out.println(value);
- DTMIterator nl = value.nodeset();
+ DTMIterator nl = value.iter();
int pos;
1.12 +1 -1
xml-xalan/java/src/org/apache/xalan/templates/ElemCopyOf.java
Index: ElemCopyOf.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemCopyOf.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- ElemCopyOf.java 2001/06/12 19:15:09 1.11
+++ ElemCopyOf.java 2001/06/15 17:54:03 1.12
@@ -199,7 +199,7 @@
case XObject.CLASS_NODESET :
// System.out.println(value);
- DTMIterator nl = value.nodeset();
+ DTMIterator nl = value.iter();
// Copy the tree.
DTMTreeWalker tw = new TreeWalker2Result(transformer, handler);
1.22 +2 -2
xml-xalan/java/src/org/apache/xalan/templates/FuncDocument.java
Index: FuncDocument.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/templates/FuncDocument.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- FuncDocument.java 2001/06/15 05:13:57 1.21
+++ FuncDocument.java 2001/06/15 17:54:03 1.22
@@ -141,7 +141,7 @@
if (XObject.CLASS_NODESET == arg2.getType())
{
- int baseNode = arg2.nodeset().nextNode();
+ int baseNode = arg2.iter().nextNode();
if (baseNode == DTM.NULL)
warn(xctxt, XSLTErrorResources.WG_EMPTY_SECOND_ARG, null);
@@ -185,7 +185,7 @@
XNodeSet nodes = new XNodeSet(xctxt.getDTMManager());
NodeSetDTM mnl = nodes.mutableNodeset();
DTMIterator iterator = (XObject.CLASS_NODESET == arg.getType())
- ? arg.nodeset() : null;
+ ? arg.iter() : null;
int pos = DTM.NULL;
while ((null == iterator) || (DTM.NULL != (pos = iterator.nextNode())))
1.11 +1 -1
xml-xalan/java/src/org/apache/xalan/templates/FuncKey.java
Index: FuncKey.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/templates/FuncKey.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- FuncKey.java 2001/06/15 05:13:59 1.10
+++ FuncKey.java 2001/06/15 17:54:03 1.11
@@ -121,7 +121,7 @@
if (argIsNodeSetDTM)
{
Hashtable usedrefs = null;
- DTMIterator ni = arg.nodeset();
+ DTMIterator ni = arg.iter();
int pos;
UnionPathIterator upi = new UnionPathIterator();
1.8 +1 -1
xml-xalan/java/src/org/apache/xalan/trace/PrintTraceListener.java
Index: PrintTraceListener.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/trace/PrintTraceListener.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- PrintTraceListener.java 2001/06/12 19:15:23 1.7
+++ PrintTraceListener.java 2001/06/15 17:54:06 1.8
@@ -218,7 +218,7 @@
{
m_pw.println();
- org.apache.xml.dtm.DTMIterator nl =
ev.m_selection.nodeset();
+ org.apache.xml.dtm.DTMIterator nl =
ev.m_selection.iter();
try
{
1.14 +1 -1
xml-xalan/java/src/org/apache/xalan/transformer/KeyWalker.java
Index: KeyWalker.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/KeyWalker.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- KeyWalker.java 2001/06/12 19:15:25 1.13
+++ KeyWalker.java 2001/06/15 17:54:08 1.14
@@ -211,7 +211,7 @@
}
else
{
- DTMIterator nl = xuse.nodeset();
+ DTMIterator nl = xuse.iter();
int useNode;
short result = -1;
/*
1.41 +38 -7
xml-xalan/java/src/org/apache/xalan/transformer/ResultTreeHandler.java
Index: ResultTreeHandler.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/ResultTreeHandler.java,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -r1.40 -r1.41
--- ResultTreeHandler.java 2001/06/13 03:39:13 1.40
+++ ResultTreeHandler.java 2001/06/15 17:54:09 1.41
@@ -95,7 +95,8 @@
* can call startElement.
*/
public class ResultTreeHandler extends QueuedEvents
- implements ContentHandler, LexicalHandler, TransformState
+ implements ContentHandler, LexicalHandler, TransformState,
+ org.apache.xml.dtm.ref.dom2dtm.DOM2DTM.CharacterNodeHandler
{
/** Indicate whether running in Debug mode */
@@ -260,7 +261,9 @@
m_snapshot.m_currentElement = m_transformer.getCurrentElement();
m_snapshot.m_currentTemplate = m_transformer.getCurrentTemplate();
m_snapshot.m_matchedTemplate = m_transformer.getMatchedTemplate();
- m_snapshot.m_currentNode = m_transformer.getCurrentNode();
+ int currentNodeHandle = m_transformer.getCurrentNode();
+ DTM dtm = m_transformer.getXPathContext().getDTM(currentNodeHandle);
+ m_snapshot.m_currentNode = dtm.getNode(currentNodeHandle);
m_snapshot.m_matchedNode = m_transformer.getMatchedNode();
m_snapshot.m_contextNodeList = m_transformer.getContextNodeList(); //
TODO: Need to clone
}
@@ -476,7 +479,33 @@
m_tracer.fireGenerateEvent(ge);
}
}
+
+ public void characters(org.w3c.dom.Node node)
+ throws org.xml.sax.SAXException
+ {
+
+ flushPending(true);
+
+ if(m_isTransformClient)
+ m_snapshot.m_currentNode = node;
+
+ String data = node.getNodeValue();
+ char [] ch = data.toCharArray();
+ int length = data.length();
+ m_contentHandler.characters(ch, 0, length);
+
+ if (null != m_tracer)
+ {
+ GenerateEvent ge = new GenerateEvent(m_transformer,
+
GenerateEvent.EVENTTYPE_CHARACTERS,
+ ch, 0, length);
+ m_tracer.fireGenerateEvent(ge);
+ }
+ if(m_isTransformClient)
+ m_snapshot.m_currentNode = null;
+ }
+
/**
* Bottleneck the ignorableWhitespace event.
*
@@ -813,6 +842,7 @@
{
m_contentHandler.startElement(m_url, m_localName, m_name,
m_attributes);
+
if(null != m_tracer)
{
GenerateEvent ge =
@@ -821,6 +851,8 @@
m_tracer.fireGenerateEvent(ge);
}
+ if(m_isTransformClient)
+ m_snapshot.m_currentNode = null;
}
m_elemIsPending = false;
@@ -904,7 +936,7 @@
throws org.xml.sax.SAXException
{
- int doc = obj.rtree();
+ int doc = obj.rtf();
DTM dtm = support.getDTM(doc);
for (int n = dtm.getFirstChild(doc); DTM.NULL != n;
@@ -1487,10 +1519,9 @@
public org.w3c.dom.Node getCurrentNode()
{
- if (m_elemIsPending)
+ if (m_snapshot.m_currentNode != null)
{
- DTM dtm =
m_transformer.getXPathContext().getDTM(m_snapshot.m_currentNode);
- return dtm.getNode(m_snapshot.m_currentNode);
+ return m_snapshot.m_currentNode;
}
else
{
@@ -1649,7 +1680,7 @@
/**
* The current context node in the source tree.
*/
- int m_currentNode;
+ org.w3c.dom.Node m_currentNode;
/**
* The xsl:template that is in effect, which may be a matched template
1.4 +8 -1
xml-xalan/java/src/org/apache/xml/dtm/ref/DTMNodeIterator.java
Index: DTMNodeIterator.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/DTMNodeIterator.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DTMNodeIterator.java 2001/06/15 05:15:07 1.3
+++ DTMNodeIterator.java 2001/06/15 17:54:12 1.4
@@ -101,7 +101,14 @@
* */
public DTMNodeIterator(DTMIterator dtmIterator)
{
- dtm_iter=dtmIterator;
+ try
+ {
+ dtm_iter=(DTMIterator)dtmIterator.clone();
+ }
+ catch(CloneNotSupportedException cnse)
+ {
+ throw new org.apache.xml.utils.WrappedRuntimeException(cnse);
+ }
}
/** Access the wrapped DTMIterator. I'm not sure whether anyone will
1.4 +14 -1
xml-xalan/java/src/org/apache/xml/dtm/ref/dom2dtm/DOM2DTM.java
Index: DOM2DTM.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/dom2dtm/DOM2DTM.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DOM2DTM.java 2001/06/13 05:54:38 1.3
+++ DOM2DTM.java 2001/06/15 17:54:14 1.4
@@ -1535,7 +1535,14 @@
case Node.CDATA_SECTION_NODE :
case Node.ATTRIBUTE_NODE :
String str = node.getNodeValue();
- ch.characters(str.toCharArray(), 0, str.length());
+ if(ch instanceof CharacterNodeHandler)
+ {
+ ((CharacterNodeHandler)ch).characters(node);
+ }
+ else
+ {
+ ch.characters(str.toCharArray(), 0, str.length());
+ }
break;
// /* case Node.PROCESSING_INSTRUCTION_NODE :
// // warning(XPATHErrorResources.WG_PARSING_AND_PREPARING);
@@ -1577,6 +1584,12 @@
{
treeWalker.setContentHandler(null);
}
+ }
+
+ public interface CharacterNodeHandler
+ {
+ public void characters(Node node)
+ throws org.xml.sax.SAXException;
}
}
1.13 +37 -30 xml-xalan/java/src/org/apache/xml/utils/TreeWalker.java
Index: TreeWalker.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xml/utils/TreeWalker.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- TreeWalker.java 2001/06/12 19:16:00 1.12
+++ TreeWalker.java 2001/06/15 17:54:16 1.13
@@ -82,9 +82,9 @@
/** DomHelper for this TreeWalker */
protected DOMHelper m_dh;
-
- /** Locator object for this TreeWalker */
- private LocatorImpl m_locator = new LocatorImpl();
+
+ /** Locator object for this TreeWalker */
+ private LocatorImpl m_locator = new LocatorImpl();
/**
* Get the ContentHandler used for the tree walk.
@@ -105,8 +105,8 @@
{
m_contentHandler = ch;
}
-
- /**
+
+ /**
* Constructor.
* @param contentHandler The implemention of the
* @param systemId System identifier for the document.
@@ -115,11 +115,11 @@
public TreeWalker(ContentHandler contentHandler, DOMHelper dh, String
systemId)
{
this.m_contentHandler = contentHandler;
- m_contentHandler.setDocumentLocator(m_locator);
- if (systemId != null)
- m_locator.setSystemId(systemId);
- else
- m_locator.setSystemId(System.getProperty("user.dir"));
+ m_contentHandler.setDocumentLocator(m_locator);
+ if (systemId != null)
+ m_locator.setSystemId(systemId);
+ else
+
m_locator.setSystemId(System.getProperty("user.dir"));
m_dh = dh;
}
@@ -131,8 +131,8 @@
public TreeWalker(ContentHandler contentHandler, DOMHelper dh)
{
this.m_contentHandler = contentHandler;
- m_contentHandler.setDocumentLocator(m_locator);
- m_locator.setSystemId(System.getProperty("user.dir"));
+ m_contentHandler.setDocumentLocator(m_locator);
+ m_locator.setSystemId(System.getProperty("user.dir"));
m_dh = dh;
}
@@ -144,9 +144,9 @@
public TreeWalker(ContentHandler contentHandler)
{
this.m_contentHandler = contentHandler;
- if (m_contentHandler != null)
- m_contentHandler.setDocumentLocator(m_locator);
- m_locator.setSystemId(System.getProperty("user.dir"));
+ if (m_contentHandler != null)
+ m_contentHandler.setDocumentLocator(m_locator);
+ m_locator.setSystemId(System.getProperty("user.dir"));
m_dh = new org.apache.xpath.DOM2Helper();
}
@@ -249,8 +249,15 @@
private final void dispatachChars(Node node)
throws org.xml.sax.SAXException
{
- String data = ((Text) node).getData();
- this.m_contentHandler.characters(data.toCharArray(), 0, data.length());
+ if(m_contentHandler instanceof
org.apache.xml.dtm.ref.dom2dtm.DOM2DTM.CharacterNodeHandler)
+ {
+
((org.apache.xml.dtm.ref.dom2dtm.DOM2DTM.CharacterNodeHandler)m_contentHandler).characters(node);
+ }
+ else
+ {
+ String data = ((Text) node).getData();
+ this.m_contentHandler.characters(data.toCharArray(), 0, data.length());
+ }
}
/**
@@ -268,20 +275,20 @@
{
((NodeConsumer) m_contentHandler).setOriginatingNode(node);
}
-
- if (node instanceof Locator)
- {
- Locator loc = (Locator)node;
- m_locator.setColumnNumber(loc.getColumnNumber());
- m_locator.setLineNumber(loc.getLineNumber());
- m_locator.setPublicId(loc.getPublicId());
- m_locator.setSystemId(loc.getSystemId());
- }
- else
- {
- m_locator.setColumnNumber(0);
+
+ if (node instanceof Locator)
+ {
+ Locator loc = (Locator)node;
+ m_locator.setColumnNumber(loc.getColumnNumber());
+ m_locator.setLineNumber(loc.getLineNumber());
+ m_locator.setPublicId(loc.getPublicId());
+ m_locator.setSystemId(loc.getSystemId());
+ }
+ else
+ {
+ m_locator.setColumnNumber(0);
m_locator.setLineNumber(0);
- }
+ }
switch (node.getNodeType())
{
1.16 +2 -2 xml-xalan/java/src/org/apache/xpath/Expression.java
Index: Expression.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/Expression.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- Expression.java 2001/06/12 19:16:06 1.15
+++ Expression.java 2001/06/15 17:54:17 1.16
@@ -235,7 +235,7 @@
public int asNode(XPathContext xctxt)
throws javax.xml.transform.TransformerException
{
- return execute(xctxt).nodeset().nextNode();
+ return execute(xctxt).iter().nextNode();
}
/**
@@ -258,7 +258,7 @@
try
{
xctxt.pushCurrentNodeAndExpression(contextNode, contextNode);
- return execute(xctxt).nodeset();
+ return execute(xctxt).iter();
}
finally
{
1.12 +2 -2 xml-xalan/java/src/org/apache/xpath/XPathAPI.java
Index: XPathAPI.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/XPathAPI.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- XPathAPI.java 2001/06/15 05:15:19 1.11
+++ XPathAPI.java 2001/06/15 17:54:18 1.12
@@ -167,7 +167,7 @@
// Have the XObject return its result as a NodeSetDTM.
// %TBD% Convert to DOM nodeset
- return new DTMNodeIterator(list.nodeset());
+ return new DTMNodeIterator(list.iter());
}
@@ -207,7 +207,7 @@
XObject list = eval(contextNode, str, namespaceNode);
// Return a NodeList.
- return new DTMNodeList(list.nodeset());
+ return new DTMNodeList(list.iter());
}
/**
1.16 +1 -1
xml-xalan/java/src/org/apache/xpath/axes/FilterExprWalker.java
Index: FilterExprWalker.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xpath/axes/FilterExprWalker.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- FilterExprWalker.java 2001/06/12 19:16:17 1.15
+++ FilterExprWalker.java 2001/06/15 17:54:22 1.16
@@ -163,7 +163,7 @@
obj = m_expr.execute(m_lpi.getXPathContext());
// System.out.println("Back from
m_expr.execute(m_lpi.getXPathContext()): "+obj);
- m_nodeSet = (null != obj) ? obj.nodeset() : null;
+ m_nodeSet = (null != obj) ? obj.iter() : null;
m_peek = DTM.NULL;
}
1.9 +1 -1 xml-xalan/java/src/org/apache/xpath/functions/FuncId.java
Index: FuncId.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xpath/functions/FuncId.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- FuncId.java 2001/06/15 05:15:42 1.8
+++ FuncId.java 2001/06/15 17:54:24 1.9
@@ -164,7 +164,7 @@
if (XObject.CLASS_NODESET == argType)
{
- DTMIterator ni = arg.nodeset();
+ DTMIterator ni = arg.iter();
StringVector usedrefs = null;
int pos = ni.nextNode();
1.13 +45 -17 xml-xalan/java/src/org/apache/xpath/objects/XNodeSet.java
Index: XNodeSet.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xpath/objects/XNodeSet.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- XNodeSet.java 2001/06/15 05:15:49 1.12
+++ XNodeSet.java 2001/06/15 17:54:25 1.13
@@ -59,7 +59,7 @@
//import org.w3c.dom.Node;
//import org.w3c.dom.Text;
//import org.w3c.dom.DocumentFragment;
-//import org.w3c.dom.traversal.NodeIterator;
+import org.w3c.dom.traversal.NodeIterator;
import org.apache.xml.dtm.DTM;
import org.apache.xml.dtm.DTMIterator;
@@ -167,7 +167,7 @@
public double num()
{
- DTMIterator nl = nodeset();
+ DTMIterator nl = iter();
int node = nl.nextNode();
return (node != DTM.NULL) ? getNumberFromNode(node) : Double.NaN;
@@ -180,7 +180,7 @@
*/
public boolean bool()
{
- return (nodeset().nextNode() != DTM.NULL);
+ return (iter().nextNode() != DTM.NULL);
}
/**
@@ -211,7 +211,7 @@
*/
public XMLString xstr()
{
- DTMIterator nl = nodeset();
+ DTMIterator nl = iter();
int node = nl.nextNode();
return (node != DTM.NULL) ? getStringFromNode(node) :
XString.EMPTYSTRING;
@@ -267,13 +267,14 @@
public String str()
{
- DTMIterator nl = nodeset();
+ DTMIterator nl = iter();
int node = nl.nextNode();
return (node != DTM.NULL) ? getStringFromNode(node).toString() : "";
}
// %REVIEW%
+ // hmmm...
// /**
// * Cast result object to a result tree fragment.
// *
@@ -281,11 +282,15 @@
// *
// * @return the nodeset as a result tree fragment.
// */
-// public DTMIterator rtree(XPathContext support)
+// public DocumentFragment rtree(XPathContext support)
// {
-// DTM frag = support.createDocumentFragment();
+// DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+// DocumentBuilder db = dbf.newDocumentBuilder();
+// Document myDoc = db.newDocument();
+//
+// DocumentFragment docFrag = myDoc.createDocumentFragment();
//
-// DTMIterator nl = nodeset();
+// DTMIterator nl = iter();
// int node;
//
// while (DTM.NULL != (node = nl.nextNode()))
@@ -293,18 +298,41 @@
// frag.appendChild(node, true, true);
// }
//
-// return support.createDTMIterator(frag.getDocument());
+// return frag.getDocument();
// }
+
+ /**
+ * Cast result object to a nodelist. Always issues an error.
+ *
+ * @return null
+ *
+ * @throws javax.xml.transform.TransformerException
+ */
+ public NodeIterator nodeset() throws
javax.xml.transform.TransformerException
+ {
+ return new org.apache.xml.dtm.ref.DTMNodeIterator(iter());
+ }
+
+// /**
+// * Return a java object that's closest to the representation
+// * that should be handed to an extension.
+// *
+// * @return The object that this class wraps
+// */
+// public Object object()
+// {
+// return new org.apache.xml.dtm.ref.DTMNodeList(iter());
+// }
/**
* Cast result object to a nodelist.
*
* @return The nodeset as a nodelist
*/
- public DTMIterator nodeset()
+ public DTMIterator iter()
{
- // System.out.println("In XNodeSet.nodeset()");
+ // System.out.println("In XNodeSet.iter()");
DTMIterator ns = (DTMIterator) m_obj;
// System.out.println("Is a ContextNodeList: "+ns);
@@ -341,7 +369,7 @@
}
else
{
- mnl = new NodeSetDTM(nodeset());
+ mnl = new NodeSetDTM(iter());
m_obj = mnl;
}
@@ -399,8 +427,8 @@
// is true if and only if some node in $x has the string-value
// foo; the latter is true if and only if all nodes in $x have
// the string-value foo.
- DTMIterator list1 = nodeset();
- DTMIterator list2 = ((XNodeSet) obj2).nodeset();
+ DTMIterator list1 = iter();
+ DTMIterator list2 = ((XNodeSet) obj2).iter();
int node1;
java.util.Vector node2Strings = null;
@@ -469,7 +497,7 @@
// comparison on the number to be compared and on the result of
// converting the string-value of that node to a number using
// the number function is true.
- DTMIterator list1 = nodeset();
+ DTMIterator list1 = iter();
double num2 = obj2.num();
int node;
@@ -488,7 +516,7 @@
else if (XObject.CLASS_RTREEFRAG == type)
{
XMLString s2 = obj2.xstr();
- DTMIterator list1 = nodeset();
+ DTMIterator list1 = iter();
int node;
while (DTM.NULL != (node = list1.nextNode()))
@@ -513,7 +541,7 @@
// the comparison on the string-value of the node and the other
// string is true.
XMLString s2 = obj2.xstr();
- DTMIterator list1 = nodeset();
+ DTMIterator list1 = iter();
int node;
while (DTM.NULL != (node = list1.nextNode()))
1.8 +2 -2 xml-xalan/java/src/org/apache/xpath/objects/XNull.java
Index: XNull.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/objects/XNull.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- XNull.java 2001/06/15 05:15:52 1.7
+++ XNull.java 2001/06/15 17:54:26 1.8
@@ -140,7 +140,7 @@
*
* @return The object as a result tree fragment.
*/
- public int rtree(XPathContext support)
+ public int rtf(XPathContext support)
{
// DTM frag = support.createDocumentFragment();
// %REVIEW%
@@ -152,7 +152,7 @@
*
* @return null
*/
- public DTMIterator nodeset()
+ public DTMIterator iter()
{
return null;
}
1.12 +65 -7 xml-xalan/java/src/org/apache/xpath/objects/XObject.java
Index: XObject.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/objects/XObject.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- XObject.java 2001/06/15 05:15:53 1.11
+++ XObject.java 2001/06/15 17:54:26 1.12
@@ -56,10 +56,10 @@
*/
package org.apache.xpath.objects;
-//import org.w3c.dom.DocumentFragment;
+import org.w3c.dom.DocumentFragment;
//import org.w3c.dom.Text;
//import org.w3c.dom.Node;
-//import org.w3c.dom.traversal.NodeIterator;
+import org.w3c.dom.traversal.NodeIterator;
import org.apache.xml.dtm.DTM;
import org.apache.xml.dtm.DTMIterator;
@@ -344,10 +344,10 @@
*
* @return the objec as a result tree fragment.
*/
- public int rtree(XPathContext support)
+ public int rtf(XPathContext support)
{
- int result = rtree();
+ int result = rtf();
if (DTM.NULL == result)
{
@@ -361,13 +361,55 @@
return result;
}
+
+ /**
+ * Cast result object to a result tree fragment.
+ *
+ * @param support XPath context to use for the conversion
+ *
+ * @return the objec as a result tree fragment.
+ */
+ public DocumentFragment rtree(XPathContext support)
+ {
+ DocumentFragment docFrag = null;
+ int result = rtf();
+
+ if (DTM.NULL == result)
+ {
+ DTM frag = support.createDocumentFragment();
+
+ // %OPT%
+ frag.appendTextChild(str());
+
+ docFrag = (DocumentFragment)frag.getNode(frag.getDocument());
+ }
+ else
+ {
+ DTM frag = support.getDTM(result);
+ docFrag = (DocumentFragment)frag.getNode(frag.getDocument());
+ }
+
+ return docFrag;
+ }
+
+
+
+ /**
+ * For functions to override.
+ *
+ * @return null
+ */
+ public DocumentFragment rtree()
+ {
+ return null;
+ }
/**
* For functions to override.
*
* @return null
*/
- public int rtree()
+ public int rtf()
{
return DTM.NULL;
}
@@ -389,8 +431,24 @@
* @return null
*
* @throws javax.xml.transform.TransformerException
+ */
+ public DTMIterator iter() throws javax.xml.transform.TransformerException
+ {
+
+ error(XPATHErrorResources.ER_CANT_CONVERT_TO_NODELIST,
+ new Object[]{ getTypeString() }); //"Can not convert
"+getTypeString()+" to a NodeList!");
+
+ return null;
+ }
+
+ /**
+ * Cast result object to a nodelist. Always issues an error.
+ *
+ * @return null
+ *
+ * @throws javax.xml.transform.TransformerException
*/
- public DTMIterator nodeset() throws
javax.xml.transform.TransformerException
+ public NodeIterator nodeset() throws
javax.xml.transform.TransformerException
{
error(XPATHErrorResources.ER_CANT_CONVERT_TO_NODELIST,
@@ -441,7 +499,7 @@
result = new Double(num());
break;
case CLASS_NODESET :
- result = nodeset();
+ result = iter();
break;
case CLASS_BOOLEAN :
result = new Boolean(bool());
1.16 +1 -1
xml-xalan/java/src/org/apache/xpath/objects/XRTreeFrag.java
Index: XRTreeFrag.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xpath/objects/XRTreeFrag.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- XRTreeFrag.java 2001/06/15 05:15:54 1.15
+++ XRTreeFrag.java 2001/06/15 17:54:27 1.16
@@ -286,7 +286,7 @@
*
* @return The document fragment this wraps
*/
- public int rtree()
+ public int rtf()
{
return m_dtmRoot;
}
1.3 +2 -2
xml-xalan/java/src/org/apache/xpath/objects/XRTreeFragSelectWrapper.java
Index: XRTreeFragSelectWrapper.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xpath/objects/XRTreeFragSelectWrapper.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- XRTreeFragSelectWrapper.java 2001/06/12 19:16:53 1.2
+++ XRTreeFragSelectWrapper.java 2001/06/15 17:54:27 1.3
@@ -110,9 +110,9 @@
*
* @return The document fragment this wraps
*/
- public int rtree()
+ public int rtf()
{
- throw new RuntimeException("rtree() not supported by
XRTreeFragSelectWrapper!");
+ throw new RuntimeException("rtf() not supported by
XRTreeFragSelectWrapper!");
}
/**
1.8 +1 -1 xml-xalan/java/src/org/apache/xpath/objects/XString.java
Index: XString.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/objects/XString.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- XString.java 2001/06/12 19:16:53 1.7
+++ XString.java 2001/06/15 17:54:28 1.8
@@ -279,7 +279,7 @@
*
* @return A document fragment with this string as a child node
*/
- public int rtree(XPathContext support)
+ public int rtf(XPathContext support)
{
DTM frag = support.createDocumentFragment();
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]