dbertoni 2003/06/05 16:58:10
Modified: c/src/XercesParserLiaison XercesDocumentWrapper.hpp
XercesElementWrapper.cpp XercesElementWrapper.hpp
Log:
Fix for Bugzilla 18553.
Revision Changes Path
1.10 +6 -0 xml-xalan/c/src/XercesParserLiaison/XercesDocumentWrapper.hpp
Index: XercesDocumentWrapper.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XercesParserLiaison/XercesDocumentWrapper.hpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- XercesDocumentWrapper.hpp 13 Feb 2003 02:34:07 -0000 1.9
+++ XercesDocumentWrapper.hpp 5 Jun 2003 23:58:09 -0000 1.10
@@ -494,6 +494,12 @@
const XalanDOMChar* theString,
XalanDOMString::size_type theLength /* =
XalanDOMString::npos */) const;
+ bool
+ getMappingMode() const
+ {
+ return m_mappingMode;
+ }
+
private:
// Destruction API...
1.5 +38 -3 xml-xalan/c/src/XercesParserLiaison/XercesElementWrapper.cpp
Index: XercesElementWrapper.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XercesParserLiaison/XercesElementWrapper.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- XercesElementWrapper.cpp 12 Feb 2003 23:05:40 -0000 1.4
+++ XercesElementWrapper.cpp 5 Jun 2003 23:58:09 -0000 1.5
@@ -59,6 +59,7 @@
#include <xercesc/dom/DOMElement.hpp>
+#include <xercesc/dom/DOMNodeList.hpp>
@@ -87,8 +88,6 @@
XalanElement(),
m_xercesNode(theXercesElement),
m_navigator(theNavigator),
- m_children(theXercesElement->getChildNodes(),
- theNavigator),
m_attributes(theXercesElement->getAttributes(),
theNavigator)
{
@@ -138,7 +137,7 @@
const XalanNodeList*
XercesElementWrapper::getChildNodes() const
{
- return &m_children;
+ return this;
}
@@ -476,6 +475,42 @@
throw XercesDOMWrapperException(XercesDOMWrapperException::NOT_SUPPORTED_ERR);
return 0;
+}
+
+
+
+XalanNode*
+XercesElementWrapper::item(unsigned int index) const
+{
+ assert(index < getLength());
+
+ if (m_navigator.getOwnerDocument()->getMappingMode() == true)
+ {
+ assert(m_xercesNode->getChildNodes()->item(index));
+
+ return m_navigator.mapNode(m_xercesNode->getChildNodes()->item(index));
+ }
+ else
+ {
+ XalanNode* child = getFirstChild();
+ assert(child != 0);
+
+ for(unsigned int i = 0; i < index; ++i)
+ {
+ child = child->getNextSibling();
+ assert(child != 0);
+ }
+
+ return child;
+ }
+}
+
+
+
+unsigned int
+XercesElementWrapper::getLength() const
+{
+ return m_xercesNode->getChildNodes()->getLength();
}
1.4 +10 -4 xml-xalan/c/src/XercesParserLiaison/XercesElementWrapper.hpp
Index: XercesElementWrapper.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XercesParserLiaison/XercesElementWrapper.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- XercesElementWrapper.hpp 12 Feb 2003 23:05:40 -0000 1.3
+++ XercesElementWrapper.hpp 5 Jun 2003 23:58:09 -0000 1.4
@@ -68,6 +68,7 @@
#include <XalanDOM/XalanElement.hpp>
+#include <XalanDOM/XalanNodeList.hpp>
@@ -76,7 +77,6 @@
#include <XercesParserLiaison/XercesNamedNodeMapWrapper.hpp>
-#include <XercesParserLiaison/XercesNodeListWrapper.hpp>
#include <XercesParserLiaison/XercesWrapperTypes.hpp>
@@ -89,7 +89,7 @@
-class XALAN_XERCESPARSERLIAISON_EXPORT XercesElementWrapper : public XalanElement
+class XALAN_XERCESPARSERLIAISON_EXPORT XercesElementWrapper : public XalanElement,
private XalanNodeList
{
public:
@@ -735,6 +735,14 @@
private:
+ // Implementation of XalanNodeList for children.
+ virtual XalanNode*
+ item(unsigned int index) const;
+
+ virtual unsigned int
+ getLength() const;
+
+
// Not implemented...
XercesElementWrapper(const XercesElementWrapper& theSource);
@@ -748,8 +756,6 @@
const DOMElementType* const m_xercesNode;
const XercesWrapperNavigator& m_navigator;
-
- XercesNodeListWrapper m_children;
XercesNamedNodeMapWrapper m_attributes;
};
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]