diff --git a/extensions/transformiix/source/xml/XMLDOMUtils.cpp b/extensions/transformiix/source/xml/XMLDOMUtils.cpp
index 236cc70b316a..05cb7e5c9d37 100644
--- a/extensions/transformiix/source/xml/XMLDOMUtils.cpp
+++ b/extensions/transformiix/source/xml/XMLDOMUtils.cpp
@@ -21,13 +21,13 @@
* Keith Visco
* -- original author.
*
- * $Id: XMLDOMUtils.cpp,v 1.12 2001/04/03 12:37:44 peterv%netscape.com Exp $
+ * $Id: XMLDOMUtils.cpp,v 1.13 2001/05/14 14:22:41 axel%pike.org Exp $
*/
/**
* XMLDOMUtils
* @author Keith Visco
- * @version $Revision: 1.12 $ $Date: 2001/04/03 12:37:44 $
+ * @version $Revision: 1.13 $ $Date: 2001/05/14 14:22:41 $
**/
#include "XMLDOMUtils.h"
@@ -44,7 +44,7 @@ Node* XMLDOMUtils::copyNode(Node* node, Document* owner, NamespaceResolver* reso
//-- make sure owner exists if we are copying nodes other than
//-- document nodes
- if ((nodeType != Node::DOCUMENT_NODE) && (!owner)) return 0;
+ if (nodeType != Node::DOCUMENT_NODE && !owner) return 0;
Node* newNode = 0;
UInt32 i = 0;
switch ( nodeType ) {
@@ -76,9 +76,10 @@ Node* XMLDOMUtils::copyNode(Node* node, Document* owner, NamespaceResolver* reso
case Node::DOCUMENT_FRAGMENT_NODE :
{
newNode = owner->createDocumentFragment();
- NodeList* nl = node->getChildNodes();
- for (i = 0; i < nl->getLength(); i++) {
- newNode->appendChild(copyNode(nl->item(i), owner, resolver));
+ Node* tmpNode = node->getFirstChild();
+ while (tmpNode) {
+ newNode->appendChild(copyNode(tmpNode, owner, resolver));
+ tmpNode = tmpNode->getNextSibling();
}
break;
}
@@ -108,9 +109,10 @@ Node* XMLDOMUtils::copyNode(Node* node, Document* owner, NamespaceResolver* reso
}
}
//-- copy children
- NodeList* nl = element->getChildNodes();
- for (i = 0; i < nl->getLength(); i++) {
- newElement->appendChild(copyNode(nl->item(i), owner, resolver));
+ Node* tmpNode = element->getFirstChild();
+ while (tmpNode) {
+ newElement->appendChild(copyNode(tmpNode, owner, resolver));
+ tmpNode = tmpNode->getNextSibling();
}
newNode = newElement;
break;
@@ -143,7 +145,6 @@ void XMLDOMUtils::getNodeValue(Node* node, String* target) {
int nodeType = node->getNodeType();
Element* element = 0;
- NodeList* nl = 0;
switch ( nodeType ) {
case Node::ATTRIBUTE_NODE :
@@ -155,15 +156,15 @@ void XMLDOMUtils::getNodeValue(Node* node, String* target) {
case Node::DOCUMENT_FRAGMENT_NODE :
case Node::ELEMENT_NODE :
{
- nl = node->getChildNodes();
- for (UInt32 i = 0; i < nl->getLength(); i++) {
- nodeType = nl->item(i)->getNodeType();
- if ((nodeType == Node::TEXT_NODE) ||
- (nodeType == Node::ELEMENT_NODE) ||
- (nodeType == Node::CDATA_SECTION_NODE))
- {
- getNodeValue(nl->item(i),target);
- }
+ Node* tmpNode = node->getFirstChild();
+ while (tmpNode) {
+ nodeType = tmpNode->getNodeType();
+ if (nodeType == Node::TEXT_NODE ||
+ nodeType == Node::ELEMENT_NODE ||
+ nodeType == Node::CDATA_SECTION_NODE) {
+ getNodeValue(tmpNode,target);
+ };
+ tmpNode = tmpNode->getNextSibling();
}
break;
}
diff --git a/extensions/transformiix/source/xml/dom/standalone/Attr.cpp b/extensions/transformiix/source/xml/dom/standalone/Attr.cpp
index c43721b762cb..683891c25b30 100644
--- a/extensions/transformiix/source/xml/dom/standalone/Attr.cpp
+++ b/extensions/transformiix/source/xml/dom/standalone/Attr.cpp
@@ -1,4 +1,4 @@
-/*
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
* (C) Copyright The MITRE Corporation 1999 All rights reserved.
*
* The contents of this file are subject to the Mozilla Public License
@@ -63,21 +63,19 @@ MBool Attr::getSpecified() const
//
const String& Attr::getValue()
{
- Int32 valueLoop;
nodeValue = NULL_STRING;
- NodeList* childList = getChildNodes();
- Int32 numChildren = childList->getLength();
- for (valueLoop=0;valueLoopitem(valueLoop)->getNodeType() != Node::ENTITY_REFERENCE_NODE)
- {
- nodeValue.append(childList->item(valueLoop)->getNodeValue());
- if (valueLoop < (numChildren-1))
+ Node* child = getFirstChild();
+ while (child) {
+ if (child->getNodeType() != Node::ENTITY_REFERENCE_NODE) {
+ nodeValue.append(child->getNodeValue());
+ child = child->getNextSibling();
+ if (child)
nodeValue.append(",");
- }
+ } else {
+ child = child->getNextSibling();
}
-
+ }
return nodeValue;
}
diff --git a/extensions/transformiix/source/xml/printer/HTMLPrinter.cpp b/extensions/transformiix/source/xml/printer/HTMLPrinter.cpp
index c440592a5186..e834e3e34411 100644
--- a/extensions/transformiix/source/xml/printer/HTMLPrinter.cpp
+++ b/extensions/transformiix/source/xml/printer/HTMLPrinter.cpp
@@ -21,7 +21,7 @@
*
* Michel Casabianca, casa@sdv.fr
* -- added additional empty elements to the HTML tag list
- * $Id: HTMLPrinter.cpp,v 1.5 2001/04/08 14:37:24 peterv%netscape.com Exp $
+ * $Id: HTMLPrinter.cpp,v 1.6 2001/05/14 14:22:44 axel%pike.org Exp $
*/
#include "printers.h"
@@ -34,7 +34,7 @@
* A class for printing XML nodes.
* This class was ported from XSL:P Java source
* @author Keith Visco
- * @version $Revision: 1.5 $ $Date: 2001/04/08 14:37:24 $
+ * @version $Revision: 1.6 $ $Date: 2001/05/14 14:22:44 $
**/
//---------------/
//- Contructors -/
@@ -120,8 +120,6 @@ MBool HTMLPrinter::print(Node* node, String& currentIndent) {
//-- if (node == null) return false;
- NodeList* nl;
-
switch(node->getNodeType()) {
//-- print Document Node
@@ -131,9 +129,10 @@ MBool HTMLPrinter::print(Node* node, String& currentIndent) {
out <" <getChildNodes();
- for (int i = 0; i < nl->getLength(); i++) {
- print(nl->item(i),currentIndent);
+ Node* tmpNode = doc->getFirstChild();
+ while (tmpNode) {
+ print(tmpNode,currentIndent);
+ tmpNode = tmpNode->getNextSibling();
}
break;
}
@@ -166,27 +165,25 @@ MBool HTMLPrinter::print(Node* node, String& currentIndent) {
}
}
out << R_ANGLE_BRACKET;
- NodeList* nl = element->getChildNodes();
+ Node* child = element->getFirstChild();
if (useFormat) out<getLength(); i++) {
- Node* child = nl->item(i);
- switch(child->getNodeType()) {
- case Node::COMMENT_NODE:
- {
- out << COMMENT_START;
- out << ((CharacterData*)child)->getData();
- out << COMMENT_END;
- break;
- }
- case Node::TEXT_NODE:
- case Node::CDATA_SECTION_NODE:
- {
- out << ((Text*)child)->getData();
- break;
- }
- default:
- break;
- }
+ while (child) {
+ switch(child->getNodeType()) {
+ case Node::COMMENT_NODE: {
+ out << COMMENT_START;
+ out << ((CharacterData*)child)->getData();
+ out << COMMENT_END;
+ break;
+ }
+ case Node::TEXT_NODE:
+ case Node::CDATA_SECTION_NODE: {
+ out << ((Text*)child)->getData();
+ break;
+ }
+ default:
+ break;
+ }
+ child = child->getNextSibling();
}
out << flush;
if (useFormat) {
diff --git a/extensions/transformiix/source/xml/printer/XMLPrinter.cpp b/extensions/transformiix/source/xml/printer/XMLPrinter.cpp
index 022627958a2c..3219cb3de5f1 100644
--- a/extensions/transformiix/source/xml/printer/XMLPrinter.cpp
+++ b/extensions/transformiix/source/xml/printer/XMLPrinter.cpp
@@ -23,7 +23,7 @@
* Bob Miller, kbob@oblix.com
* -- plugged core leak.
*
- * $Id: XMLPrinter.cpp,v 1.7 2000/09/07 03:40:24 kvisco%ziplink.net Exp $
+ * $Id: XMLPrinter.cpp,v 1.8 2001/05/14 14:22:45 axel%pike.org Exp $
*/
#include "printers.h"
@@ -36,7 +36,7 @@
* A class for printing XML nodes.
* This class was ported from XSL:P Java source
* @author Keith Visco
- * @version $Revision: 1.7 $ $Date: 2000/09/07 03:40:24 $
+ * @version $Revision: 1.8 $ $Date: 2001/05/14 14:22:45 $
**/
/**
@@ -194,8 +194,6 @@ MBool XMLPrinter::print(Node* node, String& currentIndent) {
//-- if (node == null) return false;
- NodeList* nl;
-
switch(node->getNodeType()) {
//-- print Document Node
@@ -206,9 +204,10 @@ MBool XMLPrinter::print(Node* node, String& currentIndent) {
out << version;
out << DOUBLE_QUOTE << PI_END << endl;
//-- printDoctype(doc.getDoctype());
- nl = doc->getChildNodes();
- for (int i = 0; i < nl->getLength(); i++) {
- print(nl->item(i),currentIndent);
+ Node *node = doc->getFirstChild();
+ while (node) {
+ print(node,currentIndent);
+ node = node->getNextSibling();
}
break;
}
@@ -250,9 +249,8 @@ MBool XMLPrinter::print(Node* node, String& currentIndent) {
}
}
- NodeList* childList = element->getChildNodes();
- int size = childList->getLength();
- if ((size == 0) && (useEmptyElementShorthand))
+ Node* child = element->getFirstChild();
+ if (!child && (useEmptyElementShorthand))
{
out << FORWARD_SLASH << R_ANGLE_BRACKET;
if (useFormat) {
@@ -264,35 +262,35 @@ MBool XMLPrinter::print(Node* node, String& currentIndent) {
// Either children, or no shorthand
MBool newLine = MB_FALSE;
out << R_ANGLE_BRACKET;
- if ((useFormat) && (size > 0)) {
+ if (useFormat && child) {
// Fix formatting of PCDATA elements by Peter Marks and
// David King Lassman
// -- add if statement to check for text node before
// adding line break
- if (childList->item(0)->getNodeType() != Node::TEXT_NODE) {
+ if (child->getNodeType() != Node::TEXT_NODE) {
out << endl;
newLine = MB_TRUE;
}
}
- Node* child = 0;
String newIndent(indent);
newIndent.append(currentIndent);
- for (int i = 0; i < size; i++) {
- child = childList->item(i);
- if ((useFormat) && newLine)
- {
+ Node *lastChild = child;
+ while (child) {
+ if (useFormat && newLine) {
out << newIndent;
}
newLine = print(child,newIndent);
+ lastChild = child;
+ child = child->getNextSibling();
}
if (useFormat) {
// Fix formatting of PCDATA elements by Peter Marks and
// David King Lassman
// -- add if statement to check for text node before
// adding line break
- if (child) {
- if (child->getNodeType() != Node::TEXT_NODE) {
+ if (lastChild) {
+ if (lastChild->getNodeType() != Node::TEXT_NODE) {
out << currentIndent;
}
}
@@ -302,8 +300,8 @@ MBool XMLPrinter::print(Node* node, String& currentIndent) {
out << R_ANGLE_BRACKET;
if (useFormat) {
Node* sibling = node->getNextSibling();
- if ((!sibling) ||
- (sibling->getNodeType() != Node::TEXT_NODE))
+ if (!sibling ||
+ sibling->getNodeType() != Node::TEXT_NODE)
{
out<Keith Visco
- * @version $Revision: 1.3 $ $Date: 2001/04/11 15:00:57 $
+ * @version $Revision: 1.4 $ $Date: 2001/05/14 14:22:46 $
**/
//- Constructors -/
@@ -66,10 +66,11 @@ BasicNodeExpr::~BasicNodeExpr() {};
ExprResult* BasicNodeExpr::evaluate(Node* context, ContextState* cs) {
NodeSet* nodeSet = new NodeSet();
if ( !context ) return nodeSet;
- NodeList* nl = context->getChildNodes();
- for (UInt32 i = 0; i < nl->getLength(); i++ ) {
- Node* node = nl->item(i);
- if (matches(node, context, cs)) nodeSet->add(node);
+ Node* node = context->getFirstChild();
+ while (node) {
+ if (matches(node, context, cs))
+ nodeSet->add(node);
+ node = node->getNextSibling();
}
return nodeSet;
} //-- evaluate
diff --git a/extensions/transformiix/source/xpath/ElementExpr.cpp b/extensions/transformiix/source/xpath/ElementExpr.cpp
index 629eb6e45097..b3f72b1e4122 100644
--- a/extensions/transformiix/source/xpath/ElementExpr.cpp
+++ b/extensions/transformiix/source/xpath/ElementExpr.cpp
@@ -1,4 +1,4 @@
-/*
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
@@ -21,7 +21,7 @@
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
- * $Id: ElementExpr.cpp,v 1.5 2001/04/08 14:37:18 peterv%netscape.com Exp $
+ * $Id: ElementExpr.cpp,v 1.6 2001/05/14 14:22:46 axel%pike.org Exp $
*/
#include "Expr.h"
@@ -68,11 +68,11 @@ ExprResult* ElementExpr::evaluate(Node* context, ContextState* cs) {
if ( !context ) return nodeSet;
- NodeList* nl = context->getChildNodes();
-
- for (UInt32 i = 0; i < nl->getLength(); i++ ) {
- Node* node = nl->item(i);
- if (matches(node, context, cs)) nodeSet->add(node);
+ Node* node = context->getFirstChild();
+ while (node) {
+ if (matches(node, context, cs))
+ nodeSet->add(node);
+ node = node->getNextSibling();
}
return nodeSet;
} //-- evaluate
diff --git a/extensions/transformiix/source/xpath/LocationStep.cpp b/extensions/transformiix/source/xpath/LocationStep.cpp
index a9f358cb7814..d2105becbf9b 100644
--- a/extensions/transformiix/source/xpath/LocationStep.cpp
+++ b/extensions/transformiix/source/xpath/LocationStep.cpp
@@ -1,4 +1,4 @@
-/*
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
@@ -21,12 +21,12 @@
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
- * $Id: LocationStep.cpp,v 1.5 2001/04/11 15:00:58 axel%pike.org Exp $
+ * $Id: LocationStep.cpp,v 1.6 2001/05/14 14:22:47 axel%pike.org Exp $
*/
/*
Implementation of an XPath LocationStep
- @version $Revision: 1.5 $ $Date: 2001/04/11 15:00:58 $
+ @version $Revision: 1.6 $ $Date: 2001/05/14 14:22:47 $
*/
#include "Expr.h"
@@ -211,10 +211,11 @@ ExprResult* LocationStep::evaluate(Node* context, ContextState* cs) {
break;
default: //-- Children Axis
{
- NodeList* nl = context->getChildNodes();
- for ( UInt32 i = 0; i < nl->getLength(); i++ ) {
- if ( nodeExpr->matches(nl->item(i), context, cs) )
- nodes->add(nl->item(i));
+ Node* tmpNode = context->getFirstChild();
+ while (tmpNode) {
+ if ( nodeExpr->matches(tmpNode, context, cs) )
+ nodes->add(tmpNode);
+ tmpNode = tmpNode->getNextSibling();
}
break;
}
diff --git a/extensions/transformiix/source/xpath/TextExpr.cpp b/extensions/transformiix/source/xpath/TextExpr.cpp
index 9a6a7796ae97..8998fa2a2525 100644
--- a/extensions/transformiix/source/xpath/TextExpr.cpp
+++ b/extensions/transformiix/source/xpath/TextExpr.cpp
@@ -21,7 +21,7 @@
* Keith Visco, kvisco@ziplink.net
* -- original author.
*
- * $Id: TextExpr.cpp,v 1.3 2001/04/11 15:01:03 axel%pike.org Exp $
+ * $Id: TextExpr.cpp,v 1.4 2001/05/14 14:22:47 axel%pike.org Exp $
*/
#include "Expr.h"
@@ -39,12 +39,11 @@ ExprResult* TextExpr::evaluate(Node* context, ContextState* cs) {
if ( !context ) return nodeSet;
- NodeList* nl = context->getChildNodes();
-
- for ( UInt32 i = 0; i < nl->getLength(); i++ ) {
- Node* node = nl->item(i);
+ Node* node = context->getFirstChild();
+ while (node) {
if ( node->getNodeType() == Node::TEXT_NODE )
nodeSet->add(node);
+ node = node->getNextSibling();
}
return nodeSet;
diff --git a/extensions/transformiix/source/xslt/ProcessorState.cpp b/extensions/transformiix/source/xslt/ProcessorState.cpp
index 445305f33387..a13c9763327c 100644
--- a/extensions/transformiix/source/xslt/ProcessorState.cpp
+++ b/extensions/transformiix/source/xslt/ProcessorState.cpp
@@ -25,13 +25,13 @@
* -- added code in ::resolveFunctionCall to support the
* document() function.
*
- * $Id: ProcessorState.cpp,v 1.25 2001/04/12 14:04:49 peterv%netscape.com Exp $
+ * $Id: ProcessorState.cpp,v 1.26 2001/05/14 14:22:49 axel%pike.org Exp $
*/
/**
* Implementation of ProcessorState
* Much of this code was ported from XSL:P
- * @version $Revision: 1.25 $ $Date: 2001/04/12 14:04:49 $
+ * @version $Revision: 1.26 $ $Date: 2001/05/14 14:22:49 $
**/
#include "ProcessorState.h"
@@ -138,9 +138,8 @@ void ProcessorState::addAttributeSet(Element* attributeSet) {
}
//-- add xsl:attribute elements to attSet
- NodeList* nl = attributeSet->getChildNodes();
- for ( UInt32 i = 0; i < nl->getLength(); i++) {
- Node* node = nl->item(i);
+ Node* node = attributeSet->getFirstChild();
+ while (node) {
if ( node->getNodeType() == Node::ELEMENT_NODE) {
String nodeName = node->getNodeName();
String ns;
@@ -150,6 +149,7 @@ void ProcessorState::addAttributeSet(Element* attributeSet) {
XMLUtils::getLocalPart(nodeName, localPart);
if ( ATTRIBUTE.isEqual(localPart) ) attSet->add(node);
}
+ node = node->getNextSibling();
}
} //-- addAttributeSet
diff --git a/extensions/transformiix/source/xslt/XSLTProcessor.cpp b/extensions/transformiix/source/xslt/XSLTProcessor.cpp
index 2bacc9efdbef..8ef269cded23 100644
--- a/extensions/transformiix/source/xslt/XSLTProcessor.cpp
+++ b/extensions/transformiix/source/xslt/XSLTProcessor.cpp
@@ -38,7 +38,7 @@
* Olivier Gerardin
* -- Changed behavior of passing parameters to templates
*
- * $Id: XSLTProcessor.cpp,v 1.44 2001/05/12 12:00:31 peterv%netscape.com Exp $
+ * $Id: XSLTProcessor.cpp,v 1.45 2001/05/14 14:22:49 axel%pike.org Exp $
*/
#include "XSLTProcessor.h"
@@ -72,7 +72,7 @@
/**
* XSLTProcessor is a class for Processing XSL stylesheets
* @author Keith Visco
- * @version $Revision: 1.44 $ $Date: 2001/05/12 12:00:31 $
+ * @version $Revision: 1.45 $ $Date: 2001/05/14 14:22:49 $
**/
/**
@@ -207,11 +207,10 @@ String& XSLTProcessor::getAppVersion() {
**/
void XSLTProcessor::getHrefFromStylesheetPI(Document& xmlDocument, String& href) {
- NodeList* nl = xmlDocument.getChildNodes();
+ Node* node = xmlDocument.getFirstChild();
String type;
String tmpHref;
- for ( UInt32 i = 0; i < nl->getLength(); i++ ) {
- Node* node = nl->item(i);
+ while (node) {
if ( node->getNodeType() == Node::PROCESSING_INSTRUCTION_NODE ) {
String target = ((ProcessingInstruction*)node)->getTarget();
if ( STYLESHEET_PI.isEqual(target) ||
@@ -226,6 +225,7 @@ void XSLTProcessor::getHrefFromStylesheetPI(Document& xmlDocument, String& href)
}
}
}
+ node = node->getNextSibling();
}
} //-- getHrefFromStylesheetPI
@@ -401,9 +401,8 @@ void XSLTProcessor::processTopLevel
{
if (!stylesheet) return;
- NodeList* nl = stylesheet->getChildNodes();
- for (UInt32 i = 0; i < nl->getLength(); i++) {
- Node* node = nl->item(i);
+ Node* node = stylesheet->getFirstChild();
+ while (node) {
if (node->getNodeType() == Node::ELEMENT_NODE) {
Element* element = (Element*)node;
String name = element->getNodeName();
@@ -533,6 +532,7 @@ void XSLTProcessor::processTopLevel
break;
}
}
+ node = node->getNextSibling();
}
} //-- process(Document, ProcessorState)
@@ -768,9 +768,8 @@ MBool XSLTProcessor::getText
MBool flag = MB_TRUE;
if ( deep ) XMLDOMUtils::getNodeValue(dfrag, &dest);
else {
- NodeList* nl = dfrag->getChildNodes();
- for ( UInt32 i = 0; i < nl->getLength(); i++ ) {
- Node* node = nl->item(i);
+ Node* node = dfrag->getFirstChild();
+ while (node) {
switch(node->getNodeType()) {
case Node::CDATA_SECTION_NODE:
case Node::TEXT_NODE :
@@ -780,6 +779,7 @@ MBool XSLTProcessor::getText
if (allowOnlyTextNodes) flag = MB_FALSE;
break;
}
+ node = node->getNextSibling();
}
}
return flag;
@@ -1006,11 +1006,13 @@ void XSLTProcessor::processAction
// xsl:if
case XSLType::CHOOSE :
{
- NodeList* nl = actionElement->getChildNodes();
+ Node* tmp = actionElement->getFirstChild();
Element* xslTemplate = 0;
- for ( UInt32 i = 0; i < nl->getLength(); i++ ) {
- Node* tmp = nl->item(i);
- if ( tmp->getNodeType() != Node::ELEMENT_NODE ) continue;
+ while (tmp) {
+ if ( tmp->getNodeType() != Node::ELEMENT_NODE ) {
+ tmp = tmp->getNextSibling();
+ continue;
+ }
xslTemplate = (Element*)tmp;
String nodeName = xslTemplate->getNodeName();
switch ( getElementType(nodeName, ps) ) {
@@ -1030,6 +1032,7 @@ void XSLTProcessor::processAction
default: //-- invalid xsl:choose child
break;
}
+ tmp = tmp->getNextSibling();
} //-- end for-each child of xsl:choose
break;
}
@@ -1369,9 +1372,10 @@ void XSLTProcessor::processAction
}
}
//-- process children
- NodeList* nl = xslAction->getChildNodes();
- for ( UInt32 i = 0; i < nl->getLength(); i++) {
- processAction(node, nl->item(i),ps);
+ Node* tmp = xslAction->getFirstChild();
+ while (tmp) {
+ processAction(node,tmp,ps);
+ tmp = tmp->getNextSibling();
}
ps->getNodeStack()->pop();
#ifdef MOZ_XSL
@@ -1461,9 +1465,8 @@ NamedMap* XSLTProcessor::processParameters(Element* xslAction, Node* context, Pr
}
//-- handle xsl:with-param elements
- NodeList* nl = xslAction->getChildNodes();
- for (UInt32 i = 0; i < nl->getLength(); i++) {
- Node* tmpNode = nl->item(i);
+ Node* tmpNode = xslAction->getFirstChild();
+ while (tmpNode) {
int nodeType = tmpNode->getNodeType();
if ( nodeType == Node::ELEMENT_NODE ) {
Element* action = (Element*)tmpNode;
@@ -1490,6 +1493,7 @@ NamedMap* XSLTProcessor::processParameters(Element* xslAction, Node* context, Pr
}
}
}
+ tmpNode = tmpNode->getNextSibling();
}
return params;
} //-- processParameters
@@ -1514,9 +1518,11 @@ void XSLTProcessor::processTemplate(Node* node, Node* xslTemplate, ProcessorStat
localBindings.setObjectDeletion(MB_TRUE);
bindings->push(&localBindings);
processTemplateParams(xslTemplate, node, ps, params);
- NodeList* nl = xslTemplate->getChildNodes();
- for (UInt32 i = 0; i < nl->getLength(); i++)
- processAction(node, nl->item(i), ps);
+ Node* tmp = xslTemplate->getFirstChild();
+ while (tmp) {
+ processAction(node,tmp,ps);
+ tmp = tmp->getNextSibling();
+ }
bindings->pop();
}
} //-- processTemplate
@@ -1536,10 +1542,9 @@ void XSLTProcessor::processTemplateParams
{
if ( xslTemplate ) {
- NodeList* nl = xslTemplate->getChildNodes();
+ Node* tmpNode = xslTemplate->getFirstChild();
//-- handle params
- for (UInt32 i = 0; i < nl->getLength(); i++) {
- Node* tmpNode = nl->item(i);
+ while (tmpNode) {
int nodeType = tmpNode->getNodeType();
if ( nodeType == Node::ELEMENT_NODE ) {
Element* action = (Element*)tmpNode;
@@ -1573,6 +1578,7 @@ void XSLTProcessor::processTemplateParams
if (!XMLUtils::isWhitespace(((Text*)tmpNode)->getData())) break;
}
else break;
+ tmpNode = tmpNode->getNextSibling();
}
}
} //-- processTemplateParams
@@ -1601,12 +1607,13 @@ ExprResult* XSLTProcessor::processVariable
return expr->evaluate(node, ps);
}
else {
- NodeList* nl = xslVariable->getChildNodes();
+ Node* tmpNode = xslVariable->getFirstChild();
Document* resultTree = ps->getResultDocument();
NodeStack* nodeStack = ps->getNodeStack();
nodeStack->push(resultTree->createDocumentFragment());
- for (UInt32 i = 0; i < nl->getLength(); i++) {
- processAction(node, nl->item(i), ps);
+ while (tmpNode) {
+ processAction(node, tmpNode, ps);
+ tmpNode = tmpNode->getNextSibling();
}
Node* node = nodeStack->pop();
//-- add clean up for This new NodeSet;