Java Code Examples for com.sun.org.apache.xpath.internal.XPathContext#getContextNode()
The following examples show how to use
com.sun.org.apache.xpath.internal.XPathContext#getContextNode() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: FuncCurrent.java From jdk1.8-source-analysis with Apache License 2.0 | 6 votes |
/** * Execute the function. The function must return * a valid object. * @param xctxt The current execution context. * @return A valid XObject. * * @throws javax.xml.transform.TransformerException */ public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException { SubContextList subContextList = xctxt.getCurrentNodeList(); int currentNode = DTM.NULL; if (null != subContextList) { if (subContextList instanceof PredicatedNodeTest) { LocPathIterator iter = ((PredicatedNodeTest)subContextList) .getLocPathIterator(); currentNode = iter.getCurrentContextNode(); } else if(subContextList instanceof StepPattern) { throw new RuntimeException(XSLMessages.createMessage( XSLTErrorResources.ER_PROCESSOR_ERROR,null)); } } else { // not predicate => ContextNode == CurrentNode currentNode = xctxt.getContextNode(); } return new XNodeSet(currentNode, xctxt.getDTMManager()); }
Example 2
Source File: FuncCurrent.java From openjdk-8-source with GNU General Public License v2.0 | 6 votes |
/** * Execute the function. The function must return * a valid object. * @param xctxt The current execution context. * @return A valid XObject. * * @throws javax.xml.transform.TransformerException */ public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException { SubContextList subContextList = xctxt.getCurrentNodeList(); int currentNode = DTM.NULL; if (null != subContextList) { if (subContextList instanceof PredicatedNodeTest) { LocPathIterator iter = ((PredicatedNodeTest)subContextList) .getLocPathIterator(); currentNode = iter.getCurrentContextNode(); } else if(subContextList instanceof StepPattern) { throw new RuntimeException(XSLMessages.createMessage( XSLTErrorResources.ER_PROCESSOR_ERROR,null)); } } else { // not predicate => ContextNode == CurrentNode currentNode = xctxt.getContextNode(); } return new XNodeSet(currentNode, xctxt.getDTMManager()); }
Example 3
Source File: FuncCurrent.java From hottub with GNU General Public License v2.0 | 6 votes |
/** * Execute the function. The function must return * a valid object. * @param xctxt The current execution context. * @return A valid XObject. * * @throws javax.xml.transform.TransformerException */ public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException { SubContextList subContextList = xctxt.getCurrentNodeList(); int currentNode = DTM.NULL; if (null != subContextList) { if (subContextList instanceof PredicatedNodeTest) { LocPathIterator iter = ((PredicatedNodeTest)subContextList) .getLocPathIterator(); currentNode = iter.getCurrentContextNode(); } else if(subContextList instanceof StepPattern) { throw new RuntimeException(XSLMessages.createMessage( XSLTErrorResources.ER_PROCESSOR_ERROR,null)); } } else { // not predicate => ContextNode == CurrentNode currentNode = xctxt.getContextNode(); } return new XNodeSet(currentNode, xctxt.getDTMManager()); }
Example 4
Source File: FuncCurrent.java From openjdk-jdk9 with GNU General Public License v2.0 | 6 votes |
/** * Execute the function. The function must return * a valid object. * @param xctxt The current execution context. * @return A valid XObject. * * @throws javax.xml.transform.TransformerException */ public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException { SubContextList subContextList = xctxt.getCurrentNodeList(); int currentNode = DTM.NULL; if (null != subContextList) { if (subContextList instanceof PredicatedNodeTest) { LocPathIterator iter = ((PredicatedNodeTest)subContextList) .getLocPathIterator(); currentNode = iter.getCurrentContextNode(); } else if(subContextList instanceof StepPattern) { throw new RuntimeException(XSLMessages.createMessage( XSLTErrorResources.ER_PROCESSOR_ERROR,null)); } } else { // not predicate => ContextNode == CurrentNode currentNode = xctxt.getContextNode(); } return new XNodeSet(currentNode, xctxt.getDTMManager()); }
Example 5
Source File: FuncCurrent.java From openjdk-8 with GNU General Public License v2.0 | 6 votes |
/** * Execute the function. The function must return * a valid object. * @param xctxt The current execution context. * @return A valid XObject. * * @throws javax.xml.transform.TransformerException */ public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException { SubContextList subContextList = xctxt.getCurrentNodeList(); int currentNode = DTM.NULL; if (null != subContextList) { if (subContextList instanceof PredicatedNodeTest) { LocPathIterator iter = ((PredicatedNodeTest)subContextList) .getLocPathIterator(); currentNode = iter.getCurrentContextNode(); } else if(subContextList instanceof StepPattern) { throw new RuntimeException(XSLMessages.createMessage( XSLTErrorResources.ER_PROCESSOR_ERROR,null)); } } else { // not predicate => ContextNode == CurrentNode currentNode = xctxt.getContextNode(); } return new XNodeSet(currentNode, xctxt.getDTMManager()); }
Example 6
Source File: FuncCurrent.java From Bytecoder with Apache License 2.0 | 6 votes |
/** * Execute the function. The function must return * a valid object. * @param xctxt The current execution context. * @return A valid XObject. * * @throws javax.xml.transform.TransformerException */ public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException { SubContextList subContextList = xctxt.getCurrentNodeList(); int currentNode = DTM.NULL; if (null != subContextList) { if (subContextList instanceof PredicatedNodeTest) { LocPathIterator iter = ((PredicatedNodeTest)subContextList) .getLocPathIterator(); currentNode = iter.getCurrentContextNode(); } else if(subContextList instanceof StepPattern) { throw new RuntimeException(XSLMessages.createMessage( XSLTErrorResources.ER_PROCESSOR_ERROR,null)); } } else { // not predicate => ContextNode == CurrentNode currentNode = xctxt.getContextNode(); } return new XNodeSet(currentNode, xctxt.getDTMManager()); }
Example 7
Source File: FuncCurrent.java From openjdk-jdk8u-backup with GNU General Public License v2.0 | 6 votes |
/** * Execute the function. The function must return * a valid object. * @param xctxt The current execution context. * @return A valid XObject. * * @throws javax.xml.transform.TransformerException */ public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException { SubContextList subContextList = xctxt.getCurrentNodeList(); int currentNode = DTM.NULL; if (null != subContextList) { if (subContextList instanceof PredicatedNodeTest) { LocPathIterator iter = ((PredicatedNodeTest)subContextList) .getLocPathIterator(); currentNode = iter.getCurrentContextNode(); } else if(subContextList instanceof StepPattern) { throw new RuntimeException(XSLMessages.createMessage( XSLTErrorResources.ER_PROCESSOR_ERROR,null)); } } else { // not predicate => ContextNode == CurrentNode currentNode = xctxt.getContextNode(); } return new XNodeSet(currentNode, xctxt.getDTMManager()); }
Example 8
Source File: FuncCurrent.java From openjdk-jdk8u with GNU General Public License v2.0 | 6 votes |
/** * Execute the function. The function must return * a valid object. * @param xctxt The current execution context. * @return A valid XObject. * * @throws javax.xml.transform.TransformerException */ public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException { SubContextList subContextList = xctxt.getCurrentNodeList(); int currentNode = DTM.NULL; if (null != subContextList) { if (subContextList instanceof PredicatedNodeTest) { LocPathIterator iter = ((PredicatedNodeTest)subContextList) .getLocPathIterator(); currentNode = iter.getCurrentContextNode(); } else if(subContextList instanceof StepPattern) { throw new RuntimeException(XSLMessages.createMessage( XSLTErrorResources.ER_PROCESSOR_ERROR,null)); } } else { // not predicate => ContextNode == CurrentNode currentNode = xctxt.getContextNode(); } return new XNodeSet(currentNode, xctxt.getDTMManager()); }
Example 9
Source File: FuncCurrent.java From JDKSourceCode1.8 with MIT License | 6 votes |
/** * Execute the function. The function must return * a valid object. * @param xctxt The current execution context. * @return A valid XObject. * * @throws javax.xml.transform.TransformerException */ public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException { SubContextList subContextList = xctxt.getCurrentNodeList(); int currentNode = DTM.NULL; if (null != subContextList) { if (subContextList instanceof PredicatedNodeTest) { LocPathIterator iter = ((PredicatedNodeTest)subContextList) .getLocPathIterator(); currentNode = iter.getCurrentContextNode(); } else if(subContextList instanceof StepPattern) { throw new RuntimeException(XSLMessages.createMessage( XSLTErrorResources.ER_PROCESSOR_ERROR,null)); } } else { // not predicate => ContextNode == CurrentNode currentNode = xctxt.getContextNode(); } return new XNodeSet(currentNode, xctxt.getDTMManager()); }
Example 10
Source File: FuncCurrent.java From jdk8u60 with GNU General Public License v2.0 | 6 votes |
/** * Execute the function. The function must return * a valid object. * @param xctxt The current execution context. * @return A valid XObject. * * @throws javax.xml.transform.TransformerException */ public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException { SubContextList subContextList = xctxt.getCurrentNodeList(); int currentNode = DTM.NULL; if (null != subContextList) { if (subContextList instanceof PredicatedNodeTest) { LocPathIterator iter = ((PredicatedNodeTest)subContextList) .getLocPathIterator(); currentNode = iter.getCurrentContextNode(); } else if(subContextList instanceof StepPattern) { throw new RuntimeException(XSLMessages.createMessage( XSLTErrorResources.ER_PROCESSOR_ERROR,null)); } } else { // not predicate => ContextNode == CurrentNode currentNode = xctxt.getContextNode(); } return new XNodeSet(currentNode, xctxt.getDTMManager()); }
Example 11
Source File: FuncCurrent.java From TencentKona-8 with GNU General Public License v2.0 | 6 votes |
/** * Execute the function. The function must return * a valid object. * @param xctxt The current execution context. * @return A valid XObject. * * @throws javax.xml.transform.TransformerException */ public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException { SubContextList subContextList = xctxt.getCurrentNodeList(); int currentNode = DTM.NULL; if (null != subContextList) { if (subContextList instanceof PredicatedNodeTest) { LocPathIterator iter = ((PredicatedNodeTest)subContextList) .getLocPathIterator(); currentNode = iter.getCurrentContextNode(); } else if(subContextList instanceof StepPattern) { throw new RuntimeException(XSLMessages.createMessage( XSLTErrorResources.ER_PROCESSOR_ERROR,null)); } } else { // not predicate => ContextNode == CurrentNode currentNode = xctxt.getContextNode(); } return new XNodeSet(currentNode, xctxt.getDTMManager()); }
Example 12
Source File: FuncPosition.java From openjdk-jdk8u with GNU General Public License v2.0 | 4 votes |
/** * Get the position in the current context node list. * * @param xctxt Runtime XPath context. * * @return The current position of the itteration in the context node list, * or -1 if there is no active context node list. */ public int getPositionInContextNodeList(XPathContext xctxt) { // System.out.println("FuncPosition- entry"); // If we're in a predicate, then this will return non-null. SubContextList iter = m_isTopLevel ? null : xctxt.getSubContextList(); if (null != iter) { int prox = iter.getProximityPosition(xctxt); // System.out.println("FuncPosition- prox: "+prox); return prox; } DTMIterator cnl = xctxt.getContextNodeList(); if (null != cnl) { int n = cnl.getCurrentNode(); if(n == DTM.NULL) { if(cnl.getCurrentPos() == 0) return 0; // Then I think we're in a sort. See sort21.xsl. So the iterator has // already been spent, and is not on the node we're processing. // It's highly possible that this is an issue for other context-list // functions. Shouldn't be a problem for last(), and it shouldn't be // a problem for current(). try { cnl = cnl.cloneWithReset(); } catch(CloneNotSupportedException cnse) { throw new com.sun.org.apache.xml.internal.utils.WrappedRuntimeException(cnse); } int currentNode = xctxt.getContextNode(); // System.out.println("currentNode: "+currentNode); while(DTM.NULL != (n = cnl.nextNode())) { if(n == currentNode) break; } } // System.out.println("n: "+n); // System.out.println("FuncPosition- cnl.getCurrentPos(): "+cnl.getCurrentPos()); return cnl.getCurrentPos(); } // System.out.println("FuncPosition - out of guesses: -1"); return -1; }
Example 13
Source File: FuncPosition.java From openjdk-jdk8u-backup with GNU General Public License v2.0 | 4 votes |
/** * Get the position in the current context node list. * * @param xctxt Runtime XPath context. * * @return The current position of the itteration in the context node list, * or -1 if there is no active context node list. */ public int getPositionInContextNodeList(XPathContext xctxt) { // System.out.println("FuncPosition- entry"); // If we're in a predicate, then this will return non-null. SubContextList iter = m_isTopLevel ? null : xctxt.getSubContextList(); if (null != iter) { int prox = iter.getProximityPosition(xctxt); // System.out.println("FuncPosition- prox: "+prox); return prox; } DTMIterator cnl = xctxt.getContextNodeList(); if (null != cnl) { int n = cnl.getCurrentNode(); if(n == DTM.NULL) { if(cnl.getCurrentPos() == 0) return 0; // Then I think we're in a sort. See sort21.xsl. So the iterator has // already been spent, and is not on the node we're processing. // It's highly possible that this is an issue for other context-list // functions. Shouldn't be a problem for last(), and it shouldn't be // a problem for current(). try { cnl = cnl.cloneWithReset(); } catch(CloneNotSupportedException cnse) { throw new com.sun.org.apache.xml.internal.utils.WrappedRuntimeException(cnse); } int currentNode = xctxt.getContextNode(); // System.out.println("currentNode: "+currentNode); while(DTM.NULL != (n = cnl.nextNode())) { if(n == currentNode) break; } } // System.out.println("n: "+n); // System.out.println("FuncPosition- cnl.getCurrentPos(): "+cnl.getCurrentPos()); return cnl.getCurrentPos(); } // System.out.println("FuncPosition - out of guesses: -1"); return -1; }
Example 14
Source File: FuncPosition.java From JDKSourceCode1.8 with MIT License | 4 votes |
/** * Get the position in the current context node list. * * @param xctxt Runtime XPath context. * * @return The current position of the itteration in the context node list, * or -1 if there is no active context node list. */ public int getPositionInContextNodeList(XPathContext xctxt) { // System.out.println("FuncPosition- entry"); // If we're in a predicate, then this will return non-null. SubContextList iter = m_isTopLevel ? null : xctxt.getSubContextList(); if (null != iter) { int prox = iter.getProximityPosition(xctxt); // System.out.println("FuncPosition- prox: "+prox); return prox; } DTMIterator cnl = xctxt.getContextNodeList(); if (null != cnl) { int n = cnl.getCurrentNode(); if(n == DTM.NULL) { if(cnl.getCurrentPos() == 0) return 0; // Then I think we're in a sort. See sort21.xsl. So the iterator has // already been spent, and is not on the node we're processing. // It's highly possible that this is an issue for other context-list // functions. Shouldn't be a problem for last(), and it shouldn't be // a problem for current(). try { cnl = cnl.cloneWithReset(); } catch(CloneNotSupportedException cnse) { throw new com.sun.org.apache.xml.internal.utils.WrappedRuntimeException(cnse); } int currentNode = xctxt.getContextNode(); // System.out.println("currentNode: "+currentNode); while(DTM.NULL != (n = cnl.nextNode())) { if(n == currentNode) break; } } // System.out.println("n: "+n); // System.out.println("FuncPosition- cnl.getCurrentPos(): "+cnl.getCurrentPos()); return cnl.getCurrentPos(); } // System.out.println("FuncPosition - out of guesses: -1"); return -1; }
Example 15
Source File: FuncPosition.java From Bytecoder with Apache License 2.0 | 4 votes |
/** * Get the position in the current context node list. * * @param xctxt Runtime XPath context. * * @return The current position of the itteration in the context node list, * or -1 if there is no active context node list. */ public int getPositionInContextNodeList(XPathContext xctxt) { // System.out.println("FuncPosition- entry"); // If we're in a predicate, then this will return non-null. SubContextList iter = m_isTopLevel ? null : xctxt.getSubContextList(); if (null != iter) { int prox = iter.getProximityPosition(xctxt); // System.out.println("FuncPosition- prox: "+prox); return prox; } DTMIterator cnl = xctxt.getContextNodeList(); if (null != cnl) { int n = cnl.getCurrentNode(); if(n == DTM.NULL) { if(cnl.getCurrentPos() == 0) return 0; // Then I think we're in a sort. See sort21.xsl. So the iterator has // already been spent, and is not on the node we're processing. // It's highly possible that this is an issue for other context-list // functions. Shouldn't be a problem for last(), and it shouldn't be // a problem for current(). try { cnl = cnl.cloneWithReset(); } catch(CloneNotSupportedException cnse) { throw new com.sun.org.apache.xml.internal.utils.WrappedRuntimeException(cnse); } int currentNode = xctxt.getContextNode(); // System.out.println("currentNode: "+currentNode); while(DTM.NULL != (n = cnl.nextNode())) { if(n == currentNode) break; } } // System.out.println("n: "+n); // System.out.println("FuncPosition- cnl.getCurrentPos(): "+cnl.getCurrentPos()); return cnl.getCurrentPos(); } // System.out.println("FuncPosition - out of guesses: -1"); return -1; }
Example 16
Source File: FuncPosition.java From jdk8u60 with GNU General Public License v2.0 | 4 votes |
/** * Get the position in the current context node list. * * @param xctxt Runtime XPath context. * * @return The current position of the itteration in the context node list, * or -1 if there is no active context node list. */ public int getPositionInContextNodeList(XPathContext xctxt) { // System.out.println("FuncPosition- entry"); // If we're in a predicate, then this will return non-null. SubContextList iter = m_isTopLevel ? null : xctxt.getSubContextList(); if (null != iter) { int prox = iter.getProximityPosition(xctxt); // System.out.println("FuncPosition- prox: "+prox); return prox; } DTMIterator cnl = xctxt.getContextNodeList(); if (null != cnl) { int n = cnl.getCurrentNode(); if(n == DTM.NULL) { if(cnl.getCurrentPos() == 0) return 0; // Then I think we're in a sort. See sort21.xsl. So the iterator has // already been spent, and is not on the node we're processing. // It's highly possible that this is an issue for other context-list // functions. Shouldn't be a problem for last(), and it shouldn't be // a problem for current(). try { cnl = cnl.cloneWithReset(); } catch(CloneNotSupportedException cnse) { throw new com.sun.org.apache.xml.internal.utils.WrappedRuntimeException(cnse); } int currentNode = xctxt.getContextNode(); // System.out.println("currentNode: "+currentNode); while(DTM.NULL != (n = cnl.nextNode())) { if(n == currentNode) break; } } // System.out.println("n: "+n); // System.out.println("FuncPosition- cnl.getCurrentPos(): "+cnl.getCurrentPos()); return cnl.getCurrentPos(); } // System.out.println("FuncPosition - out of guesses: -1"); return -1; }
Example 17
Source File: FuncPosition.java From hottub with GNU General Public License v2.0 | 4 votes |
/** * Get the position in the current context node list. * * @param xctxt Runtime XPath context. * * @return The current position of the itteration in the context node list, * or -1 if there is no active context node list. */ public int getPositionInContextNodeList(XPathContext xctxt) { // System.out.println("FuncPosition- entry"); // If we're in a predicate, then this will return non-null. SubContextList iter = m_isTopLevel ? null : xctxt.getSubContextList(); if (null != iter) { int prox = iter.getProximityPosition(xctxt); // System.out.println("FuncPosition- prox: "+prox); return prox; } DTMIterator cnl = xctxt.getContextNodeList(); if (null != cnl) { int n = cnl.getCurrentNode(); if(n == DTM.NULL) { if(cnl.getCurrentPos() == 0) return 0; // Then I think we're in a sort. See sort21.xsl. So the iterator has // already been spent, and is not on the node we're processing. // It's highly possible that this is an issue for other context-list // functions. Shouldn't be a problem for last(), and it shouldn't be // a problem for current(). try { cnl = cnl.cloneWithReset(); } catch(CloneNotSupportedException cnse) { throw new com.sun.org.apache.xml.internal.utils.WrappedRuntimeException(cnse); } int currentNode = xctxt.getContextNode(); // System.out.println("currentNode: "+currentNode); while(DTM.NULL != (n = cnl.nextNode())) { if(n == currentNode) break; } } // System.out.println("n: "+n); // System.out.println("FuncPosition- cnl.getCurrentPos(): "+cnl.getCurrentPos()); return cnl.getCurrentPos(); } // System.out.println("FuncPosition - out of guesses: -1"); return -1; }
Example 18
Source File: FuncPosition.java From TencentKona-8 with GNU General Public License v2.0 | 4 votes |
/** * Get the position in the current context node list. * * @param xctxt Runtime XPath context. * * @return The current position of the itteration in the context node list, * or -1 if there is no active context node list. */ public int getPositionInContextNodeList(XPathContext xctxt) { // System.out.println("FuncPosition- entry"); // If we're in a predicate, then this will return non-null. SubContextList iter = m_isTopLevel ? null : xctxt.getSubContextList(); if (null != iter) { int prox = iter.getProximityPosition(xctxt); // System.out.println("FuncPosition- prox: "+prox); return prox; } DTMIterator cnl = xctxt.getContextNodeList(); if (null != cnl) { int n = cnl.getCurrentNode(); if(n == DTM.NULL) { if(cnl.getCurrentPos() == 0) return 0; // Then I think we're in a sort. See sort21.xsl. So the iterator has // already been spent, and is not on the node we're processing. // It's highly possible that this is an issue for other context-list // functions. Shouldn't be a problem for last(), and it shouldn't be // a problem for current(). try { cnl = cnl.cloneWithReset(); } catch(CloneNotSupportedException cnse) { throw new com.sun.org.apache.xml.internal.utils.WrappedRuntimeException(cnse); } int currentNode = xctxt.getContextNode(); // System.out.println("currentNode: "+currentNode); while(DTM.NULL != (n = cnl.nextNode())) { if(n == currentNode) break; } } // System.out.println("n: "+n); // System.out.println("FuncPosition- cnl.getCurrentPos(): "+cnl.getCurrentPos()); return cnl.getCurrentPos(); } // System.out.println("FuncPosition - out of guesses: -1"); return -1; }
Example 19
Source File: FuncPosition.java From openjdk-8 with GNU General Public License v2.0 | 4 votes |
/** * Get the position in the current context node list. * * @param xctxt Runtime XPath context. * * @return The current position of the itteration in the context node list, * or -1 if there is no active context node list. */ public int getPositionInContextNodeList(XPathContext xctxt) { // System.out.println("FuncPosition- entry"); // If we're in a predicate, then this will return non-null. SubContextList iter = m_isTopLevel ? null : xctxt.getSubContextList(); if (null != iter) { int prox = iter.getProximityPosition(xctxt); // System.out.println("FuncPosition- prox: "+prox); return prox; } DTMIterator cnl = xctxt.getContextNodeList(); if (null != cnl) { int n = cnl.getCurrentNode(); if(n == DTM.NULL) { if(cnl.getCurrentPos() == 0) return 0; // Then I think we're in a sort. See sort21.xsl. So the iterator has // already been spent, and is not on the node we're processing. // It's highly possible that this is an issue for other context-list // functions. Shouldn't be a problem for last(), and it shouldn't be // a problem for current(). try { cnl = cnl.cloneWithReset(); } catch(CloneNotSupportedException cnse) { throw new com.sun.org.apache.xml.internal.utils.WrappedRuntimeException(cnse); } int currentNode = xctxt.getContextNode(); // System.out.println("currentNode: "+currentNode); while(DTM.NULL != (n = cnl.nextNode())) { if(n == currentNode) break; } } // System.out.println("n: "+n); // System.out.println("FuncPosition- cnl.getCurrentPos(): "+cnl.getCurrentPos()); return cnl.getCurrentPos(); } // System.out.println("FuncPosition - out of guesses: -1"); return -1; }
Example 20
Source File: FuncPosition.java From jdk1.8-source-analysis with Apache License 2.0 | 4 votes |
/** * Get the position in the current context node list. * * @param xctxt Runtime XPath context. * * @return The current position of the itteration in the context node list, * or -1 if there is no active context node list. */ public int getPositionInContextNodeList(XPathContext xctxt) { // System.out.println("FuncPosition- entry"); // If we're in a predicate, then this will return non-null. SubContextList iter = m_isTopLevel ? null : xctxt.getSubContextList(); if (null != iter) { int prox = iter.getProximityPosition(xctxt); // System.out.println("FuncPosition- prox: "+prox); return prox; } DTMIterator cnl = xctxt.getContextNodeList(); if (null != cnl) { int n = cnl.getCurrentNode(); if(n == DTM.NULL) { if(cnl.getCurrentPos() == 0) return 0; // Then I think we're in a sort. See sort21.xsl. So the iterator has // already been spent, and is not on the node we're processing. // It's highly possible that this is an issue for other context-list // functions. Shouldn't be a problem for last(), and it shouldn't be // a problem for current(). try { cnl = cnl.cloneWithReset(); } catch(CloneNotSupportedException cnse) { throw new com.sun.org.apache.xml.internal.utils.WrappedRuntimeException(cnse); } int currentNode = xctxt.getContextNode(); // System.out.println("currentNode: "+currentNode); while(DTM.NULL != (n = cnl.nextNode())) { if(n == currentNode) break; } } // System.out.println("n: "+n); // System.out.println("FuncPosition- cnl.getCurrentPos(): "+cnl.getCurrentPos()); return cnl.getCurrentPos(); } // System.out.println("FuncPosition - out of guesses: -1"); return -1; }