You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by ca...@apache.org on 2005/07/28 20:55:18 UTC
svn commit: r225848 -
/xerces/c/branches/xerces-2.7/src/xercesc/validators/schema/TraverseSchema.cpp
Author: cargilld
Date: Thu Jul 28 11:55:15 2005
New Revision: 225848
URL: http://svn.apache.org/viewcvs?rev=225848&view=rev
Log:
Synthetic generation fix to get namespaces from all enclosing elements.
Modified:
xerces/c/branches/xerces-2.7/src/xercesc/validators/schema/TraverseSchema.cpp
Modified: xerces/c/branches/xerces-2.7/src/xercesc/validators/schema/TraverseSchema.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/validators/schema/TraverseSchema.cpp?rev=225848&r1=225847&r2=225848&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/validators/schema/TraverseSchema.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/validators/schema/TraverseSchema.cpp Thu Jul 28 11:55:15 2005
@@ -8764,7 +8764,7 @@
, ValueVectorOf<DOMNode*>* nonXSAttList)
{
const XMLCh* prefix = elem->getPrefix();
- ValueVectorOf<unsigned int>* listOfURIs = new (fMemoryManager) ValueVectorOf<unsigned int>(16, fMemoryManager);
+ ValueHashTableOf<unsigned int>* listOfURIs = new (fMemoryManager) ValueHashTableOf<unsigned int>(29, fMemoryManager);
bool sawXMLNS = false;
fBuffer.reset();
@@ -8792,76 +8792,43 @@
}
// next is the namespaces on the elem
- DOMNamedNodeMap* eltAttrs = elem->getAttributes();
- int attrCount = eltAttrs->getLength();
- int j;
- for (j = 0; j < attrCount; j++)
- {
- DOMNode* attribute = eltAttrs->item(j);
- const XMLCh* attName = attribute->getNodeName();
-
- if (XMLString::startsWith(attName, XMLUni::fgXMLNSColonString))
- {
- fBuffer.append(chSpace);
- fBuffer.append(attName);
- fBuffer.append(chEqual);
- fBuffer.append(chDoubleQuote);
- processAttValue(attribute->getNodeValue(), fBuffer);
- fBuffer.append(chDoubleQuote);
-
- int offsetIndex = XMLString::indexOf(attName, chColon);
- int prefixId = fNamespaceScope->getNamespaceForPrefix(attName + offsetIndex + 1, fSchemaInfo->getNamespaceScopeLevel());
- if (prefixId)
- listOfURIs->addElement(prefixId);
- }
- else if (XMLString::equals(attName, XMLUni::fgXMLNSString))
+ DOMElement* currentElem = (DOMElement*) elem;
+ DOMNamedNodeMap* eltAttrs;
+ int attrCount;
+ do {
+ eltAttrs = currentElem->getAttributes();
+ attrCount = eltAttrs->getLength();
+ for (int j = 0; j < attrCount; j++)
{
- fBuffer.append(chSpace);
- fBuffer.append(attName);
- fBuffer.append(chEqual);
- fBuffer.append(chDoubleQuote);
- processAttValue(attribute->getNodeValue(), fBuffer);
- fBuffer.append(chDoubleQuote);
- sawXMLNS = true;
- }
- }
-
- // next is the namespaces on the fSchemaRoot
- eltAttrs = fSchemaInfo->getRoot()->getAttributes();
- attrCount = eltAttrs->getLength();
-
- for (j = 0; j < attrCount; j++)
- {
- DOMNode* attribute = eltAttrs->item(j);
- if (!attribute) {
- break;
- }
- const XMLCh* attName = attribute->getNodeName();
+ DOMNode* attribute = eltAttrs->item(j);
+ const XMLCh* attName = attribute->getNodeName();
- if (XMLString::startsWith(attName, XMLUni::fgXMLNSColonString))
- {
- int offsetIndex = XMLString::indexOf(attName, chColon);
- int prefixId = fNamespaceScope->getNamespaceForPrefix(attName + offsetIndex + 1, fSchemaInfo->getNamespaceScopeLevel());
-
- if (!listOfURIs->containsElement(prefixId)) {
+ if (XMLString::startsWith(attName, XMLUni::fgXMLNSColonString))
+ {
+ if (!listOfURIs->containsKey((void*) attName)) {
+ listOfURIs->put((void*) attName, 0);
+ fBuffer.append(chSpace);
+ fBuffer.append(attName);
+ fBuffer.append(chEqual);
+ fBuffer.append(chDoubleQuote);
+ processAttValue(attribute->getNodeValue(), fBuffer);
+ fBuffer.append(chDoubleQuote);
+ }
+ }
+ else if (!sawXMLNS && XMLString::equals(attName, XMLUni::fgXMLNSString))
+ {
fBuffer.append(chSpace);
fBuffer.append(attName);
fBuffer.append(chEqual);
fBuffer.append(chDoubleQuote);
processAttValue(attribute->getNodeValue(), fBuffer);
- fBuffer.append(chDoubleQuote);
+ fBuffer.append(chDoubleQuote);
+ sawXMLNS = true;
}
- }
- else if (!sawXMLNS && XMLString::equals(attName, XMLUni::fgXMLNSString))
- {
- fBuffer.append(chSpace);
- fBuffer.append(attName);
- fBuffer.append(chEqual);
- fBuffer.append(chDoubleQuote);
- processAttValue(attribute->getNodeValue(), fBuffer);
- fBuffer.append(chDoubleQuote);
- }
+ }
+ currentElem = (DOMElement*) currentElem->getParentNode();
}
+ while (currentElem != fSchemaInfo->getRoot()->getParentNode());
delete listOfURIs;
fBuffer.append(chCloseAngle);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org