You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by db...@apache.org on 2004/01/17 02:08:06 UTC
cvs commit: xml-xalan/c/src/xalanc/XalanSourceTree XalanSourceTreeDocument.cpp XalanSourceTreeDocument.hpp
dbertoni 2004/01/16 17:08:06
Modified: c/src/xalanc/XalanSourceTree XalanSourceTreeDocument.cpp
XalanSourceTreeDocument.hpp
Log:
Changes for Bugzilla 26207.
Revision Changes Path
1.5 +70 -11 xml-xalan/c/src/xalanc/XalanSourceTree/XalanSourceTreeDocument.cpp
Index: XalanSourceTreeDocument.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/xalanc/XalanSourceTree/XalanSourceTreeDocument.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- XalanSourceTreeDocument.cpp 6 Jan 2004 02:41:43 -0000 1.4
+++ XalanSourceTreeDocument.cpp 17 Jan 2004 01:08:06 -0000 1.5
@@ -643,7 +643,8 @@
const AttributeListType& attrs,
size_t theStartIndex,
XalanSourceTreeElement* theOwnerElement,
- bool fCreateNamespaces)
+ bool fCreateNamespaces,
+ const PrefixResolver* thePrefixResolver)
{
const unsigned int theSAXAttributeCount = attrs.getLength();
@@ -664,14 +665,59 @@
attrs.getValue(i);
assert(theValue != 0);
- theAttributeVector[theStartIndex] =
- m_attributeAllocator.create(
- m_namesStringPool.get(theName),
- m_valuesStringPool.get(theValue),
- theOwnerElement,
- m_nextIndexValue++);
+ if (thePrefixResolver == 0)
+ {
+ theAttributeVector[theStartIndex] =
+ m_attributeAllocator.create(
+ m_namesStringPool.get(theName),
+ m_valuesStringPool.get(theValue),
+ theOwnerElement,
+ m_nextIndexValue++);
- assert(theAttributeVector[theStartIndex] != 0);
+ assert(theAttributeVector[theStartIndex] != 0);
+ }
+ else
+ {
+ const XalanDOMChar* theLocalName = 0;
+
+ const XalanDOMString* const theNamespace =
+ getNamespaceForPrefix(
+ theName,
+ *thePrefixResolver,
+ m_stringBuffer,
+ false,
+ &theLocalName);
+
+ if (theNamespace == 0 || length(*theNamespace) == 0)
+ {
+ // the prefix was returned by getNamespaceForPrefix()...
+ assert(length(m_stringBuffer) == 0);
+
+ theAttributeVector[theStartIndex] =
+ m_attributeAllocator.create(
+ m_namesStringPool.get(theName),
+ m_valuesStringPool.get(theValue),
+ theOwnerElement,
+ m_nextIndexValue++);
+
+ assert(theAttributeVector[theStartIndex] != 0);
+ }
+ else
+ {
+ assert(theLocalName != 0);
+
+ theAttributeVector[theStartIndex] =
+ m_attributeNSAllocator.create(
+ m_namesStringPool.get(theName),
+ m_namesStringPool.get(theLocalName),
+ m_namesStringPool.get(*theNamespace),
+ // This is the prefix...
+ m_namesStringPool.get(m_stringBuffer),
+ m_valuesStringPool.get(theValue),
+ theOwnerElement,
+ m_nextIndexValue++);
+ }
+ }
++theStartIndex;
}
@@ -866,7 +912,8 @@
attrs,
theIndex,
theNewElement,
- true);
+ true,
+ &thePrefixResolver);
// Now, create the attribute "nodes"...
theIndex = createAttributes(
@@ -874,7 +921,8 @@
attrs,
theIndex,
theNewElement,
- false);
+ false,
+ &thePrefixResolver);
return theNewElement;
}
@@ -1114,7 +1162,8 @@
const XalanDOMChar* theName,
const PrefixResolver& thePrefixResolver,
XalanDOMString& thePrefix,
- bool fUseDefault)
+ bool fUseDefault,
+ const XalanDOMChar** theLocalName)
{
const XalanDOMString::size_type theLength = length(theName);
const XalanDOMString::size_type theColonIndex = indexOf(theName, XalanUnicode::charColon);
@@ -1125,11 +1174,21 @@
assign(thePrefix, theName, theColonIndex);
assert(length(thePrefix) != 0);
+ if (theLocalName != 0)
+ {
+ *theLocalName = theName + theColonIndex + 1;
+ }
+
return thePrefixResolver.getNamespaceForPrefix(thePrefix);
}
else
{
clear(thePrefix);
+
+ if (theLocalName != 0)
+ {
+ *theLocalName = theName;
+ }
if (fUseDefault == false)
{
1.3 +4 -2 xml-xalan/c/src/xalanc/XalanSourceTree/XalanSourceTreeDocument.hpp
Index: XalanSourceTreeDocument.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/xalanc/XalanSourceTree/XalanSourceTreeDocument.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- XalanSourceTreeDocument.hpp 6 Jan 2004 02:41:43 -0000 1.2
+++ XalanSourceTreeDocument.hpp 17 Jan 2004 01:08:06 -0000 1.3
@@ -496,7 +496,8 @@
const AttributeListType& attrs,
size_t theStartIndex,
XalanSourceTreeElement* theOwnerElement,
- bool fCreateNamespaces);
+ bool fCreateNamespaces,
+ const PrefixResolver* thePrefixResolver = 0);
XalanSourceTreeElement*
createElementNode(
@@ -533,7 +534,8 @@
const XalanDOMChar* theName,
const PrefixResolver& thePrefixResolver,
XalanDOMString& thePrefix,
- bool fUseDefault);
+ bool fUseDefault,
+ const XalanDOMChar** theLocalName = 0);
// Not implemented...
XalanSourceTreeDocument(const XalanSourceTreeDocument& theSource);
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org