dbertoni 02/04/29 21:43:23
Modified: c/src/XSLT XSLTEngineImpl.cpp XSLTEngineImpl.hpp
Log:
Make sure the default namespace is fixed-up when copying RTFs.
Revision Changes Path
1.140 +38 -8 xml-xalan/c/src/XSLT/XSLTEngineImpl.cpp
Index: XSLTEngineImpl.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/XSLTEngineImpl.cpp,v
retrieving revision 1.139
retrieving revision 1.140
diff -u -r1.139 -r1.140
--- XSLTEngineImpl.cpp 11 Apr 2002 05:54:50 -0000 1.139
+++ XSLTEngineImpl.cpp 30 Apr 2002 04:43:23 -0000 1.140
@@ -2,7 +2,7 @@
* The Apache Software License, Version 1.1
*
*
- * Copyright (c) 1999-2001 The Apache Software Foundation. All rights
+ * Copyright (c) 1999-2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -2272,6 +2272,29 @@
void
+XSLTEngineImpl::checkDefaultNamespace(
+ const XalanDOMString& theElementName,
+ const XalanDOMString& theElementNamespaceURI)
+{
+ // Check for elements with no prefix...
+ if (indexOf(theElementName, XalanUnicode::charColon) ==
theElementName.length())
+ {
+ // Get the current default namespace URI..
+ const XalanDOMString* const theResultNamespace =
+ getResultNamespaceForPrefix(s_emptyString);
+
+ // If there is one, and the URIs are different, add a new
declaration. This
+ // will also "turn-off" the default namespace, if necessary.
+ if (theResultNamespace != 0 && theElementNamespaceURI !=
*theResultNamespace)
+ {
+ addResultAttribute(DOMServices::s_XMLNamespace,
theElementNamespaceURI);
+ }
+ }
+}
+
+
+
+void
XSLTEngineImpl::cloneToResultTree(
XalanNode& node,
XalanNode::NodeType nodeType,
@@ -2329,15 +2352,22 @@
break;
case XalanNode::ELEMENT_NODE:
- startElement(c_wstr(node.getNodeName()));
-
- if(shouldCloneAttributes == true)
{
- copyAttributesToAttList(
- node,
-
getPendingAttributesImpl());
+ const XalanDOMString& theElementName =
+ node.getNodeName();
+
+ startElement(c_wstr(theElementName));
+
+ if(shouldCloneAttributes == true)
+ {
+ copyAttributesToAttList(
+ node,
+ getPendingAttributesImpl());
+
+ copyNamespaceAttributes(node);
+ }
- copyNamespaceAttributes(node);
+ checkDefaultNamespace(theElementName,
node.getNamespaceURI());
}
break;
1.85 +5 -1 xml-xalan/c/src/XSLT/XSLTEngineImpl.hpp
Index: XSLTEngineImpl.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XSLT/XSLTEngineImpl.hpp,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -r1.84 -r1.85
--- XSLTEngineImpl.hpp 12 Apr 2002 04:44:36 -0000 1.84
+++ XSLTEngineImpl.hpp 30 Apr 2002 04:43:23 -0000 1.85
@@ -2,7 +2,7 @@
* The Apache Software License, Version 1.1
*
*
- * Copyright (c) 1999-2001 The Apache Software Foundation. All rights
+ * Copyright (c) 1999-2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -1619,6 +1619,10 @@
XalanDOMString::size_type length,
bool
isCDATA);
+ void
+ checkDefaultNamespace(
+ const XalanDOMString& theElementName,
+ const XalanDOMString& theElementNamespaceURI);
XMLParserLiaison& m_parserLiaison;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]