You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by kn...@apache.org on 2002/05/27 22:23:48 UTC
cvs commit: xml-xerces/c/src/xercesc/validators/schema SchemaInfo.cpp SchemaInfo.hpp TraverseSchema.cpp
knoaman 02/05/27 13:23:48
Modified: c/src/xercesc/validators/schema SchemaInfo.cpp
SchemaInfo.hpp TraverseSchema.cpp
Log:
Performance: lazily store top-level components to eliminate unnecessary traversal
of DOM tree when looking up for a top level component.
Revision Changes Path
1.6 +65 -16 xml-xerces/c/src/xercesc/validators/schema/SchemaInfo.cpp
Index: SchemaInfo.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SchemaInfo.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- SchemaInfo.cpp 21 May 2002 19:30:47 -0000 1.5
+++ SchemaInfo.cpp 27 May 2002 20:23:48 -0000 1.6
@@ -56,6 +56,10 @@
/*
* $Log: SchemaInfo.cpp,v $
+ * Revision 1.6 2002/05/27 20:23:48 knoaman
+ * Performance: lazily store top-level components to eliminate unnecessary traversal
+ * of DOM tree when looking up for a top level component.
+ *
* Revision 1.5 2002/05/21 19:30:47 tng
* DOM Reorganization: modify to use the new DOM interface.
*
@@ -113,6 +117,7 @@
XMLStringPool* const stringPool,
const DOMElement* const root)
: fAdoptInclude(false)
+ , fProcessed(false)
, fElemAttrDefaultQualified(elemAttrDefaultQualified)
, fBlockDefault(blockDefault)
, fFinalDefault(finalDefault)
@@ -132,6 +137,8 @@
, fRecursingTypeNames(0)
{
fImportingInfoList = new RefVectorOf<SchemaInfo>(4, false);
+ for (unsigned int i = 0; i < C_Count; i++)
+ fTopLevelComponents[i] = 0;
}
@@ -158,18 +165,25 @@
delete fRecursingTypeNames;
fRecursingTypeNames = 0;
+
+ for (unsigned int i = 0; i < C_Count; i++) {
+
+ delete fTopLevelComponents[i];
+ fTopLevelComponents[i] = 0;
+ }
}
// ---------------------------------------------------------------------------
// SchemaInfo:
// ---------------------------------------------------------------------------
DOMElement*
-SchemaInfo::getTopLevelComponent(const XMLCh* const compCategory,
+SchemaInfo::getTopLevelComponent(const unsigned short compCategory,
+ const XMLCh* const compName,
const XMLCh* const name,
SchemaInfo** enclosingSchema) {
SchemaInfo* currentInfo = this;
- DOMElement* child = getTopLevelComponent(compCategory, name);
+ DOMElement* child = getTopLevelComponent(compCategory, compName, name);
if (child == 0) {
@@ -182,7 +196,7 @@
if (currentInfo == this)
continue;
- child = currentInfo->getTopLevelComponent(compCategory, name);
+ child = currentInfo->getTopLevelComponent(compCategory, compName, name);
if (child != 0) {
@@ -197,17 +211,50 @@
DOMElement*
-SchemaInfo::getTopLevelComponent(const XMLCh* const compCategory,
- const XMLCh* const name) {
+SchemaInfo::getTopLevelComponent(const unsigned short compCategory,
+ const XMLCh* const compName,
+ const XMLCh* const name) {
+
+ if (compCategory >= C_Count)
+ return 0;
DOMElement* child = XUtil::getFirstChildElement(fSchemaRootElement);
+ if (!child)
+ return 0;
+
+ ValueVectorOf<DOMElement*>* compList = fTopLevelComponents[compCategory];
+
+ if (fTopLevelComponents[compCategory] == 0) {
+
+ compList= new ValueVectorOf<DOMElement*>(16);
+ fTopLevelComponents[compCategory] = compList;
+ }
+ else {
+ unsigned int listLen = compList->size();
+
+ for (unsigned int i= 0; i < listLen; i++) {
+
+ child = compList->elementAt(i);
+ if (!XMLString::compareString(child->getAttribute(SchemaSymbols::fgATT_NAME), name))
+ return child;
+ }
+ }
+
+ DOMElement* redefParent = (DOMElement*) child->getParentNode();
+
+ // Parent is not "redefine"
+ if (XMLString::compareString(redefParent->getLocalName(),SchemaSymbols::fgELT_REDEFINE))
+ redefParent = 0;
+
while (child != 0) {
- if (!XMLString::compareString(child->getLocalName(), compCategory)) {
+ if (!XMLString::compareString(child->getLocalName(), compName)) {
+
+ compList->addElement(child);
if (!XMLString::compareString(child->getAttribute(SchemaSymbols::fgATT_NAME), name))
- break;
+ return child;
}
else if (!XMLString::compareString(child->getLocalName(),SchemaSymbols::fgELT_REDEFINE)
&& (!fFailedRedefineList || !fFailedRedefineList->containsElement(child))) { // if redefine
@@ -217,22 +264,25 @@
while (redefineChild != 0) {
if ((!fFailedRedefineList || !fFailedRedefineList->containsElement(redefineChild))
- && !XMLString::compareString(redefineChild->getLocalName(), compCategory)
- && !XMLString::compareString(redefineChild->getAttribute(SchemaSymbols::fgATT_NAME), name)) {
- break;
- }
+ && !XMLString::compareString(redefineChild->getLocalName(), compName)) {
- redefineChild = XUtil::getNextSiblingElement(redefineChild);
- }
+ compList->addElement(redefineChild);
- if (redefineChild != 0) {
+ if (!XMLString::compareString(redefineChild->getAttribute(SchemaSymbols::fgATT_NAME), name))
+ return redefineChild;
+ }
- child = redefineChild;
- break;
+ redefineChild = XUtil::getNextSiblingElement(redefineChild);
}
}
child = XUtil::getNextSiblingElement(child);
+
+ if (child == 0 && redefParent) {
+
+ child = XUtil::getNextSiblingElement(redefParent);
+ redefParent = 0;
+ }
}
return child;
1.7 +81 -32 xml-xerces/c/src/xercesc/validators/schema/SchemaInfo.hpp
Index: SchemaInfo.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SchemaInfo.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- SchemaInfo.hpp 21 May 2002 19:30:47 -0000 1.6
+++ SchemaInfo.hpp 27 May 2002 20:23:48 -0000 1.7
@@ -55,7 +55,7 @@
*/
/*
- * $Id: SchemaInfo.hpp,v 1.6 2002/05/21 19:30:47 tng Exp $
+ * $Id: SchemaInfo.hpp,v 1.7 2002/05/27 20:23:48 knoaman Exp $
*/
#if !defined(SCHEMAINFO_HPP)
@@ -92,6 +92,18 @@
INCLUDE = 2
};
+ enum {
+ C_ComplexType,
+ C_SimpleType,
+ C_Group,
+ C_Attribute,
+ C_AttributeGroup,
+ C_Element,
+ C_Notation,
+
+ C_Count
+ };
+
// -----------------------------------------------------------------------
// Constructor/Destructor
// -----------------------------------------------------------------------
@@ -111,22 +123,24 @@
// -----------------------------------------------------------------------
// Getter methods
// -----------------------------------------------------------------------
- XMLCh* getCurrentSchemaURL() const;
- const XMLCh* const getTargetNSURIString() const;
- const DOMElement* getRoot() const;
- int getBlockDefault() const;
- int getFinalDefault() const;
- int getTargetNSURI() const;
- int getScopeCount() const;
- unsigned int getNamespaceScopeLevel() const;
- unsigned short getElemAttrDefaultQualified() const;
- RefVectorEnumerator<SchemaInfo> getImportingListEnumerator() const;
+ XMLCh* getCurrentSchemaURL() const;
+ const XMLCh* const getTargetNSURIString() const;
+ const DOMElement* getRoot() const;
+ bool getProcessed() const;
+ int getBlockDefault() const;
+ int getFinalDefault() const;
+ int getTargetNSURI() const;
+ int getScopeCount() const;
+ unsigned int getNamespaceScopeLevel() const;
+ unsigned short getElemAttrDefaultQualified() const;
+ RefVectorEnumerator<SchemaInfo> getImportingListEnumerator() const;
ValueVectorOf<const DOMElement*>* getRecursingAnonTypes() const;
- ValueVectorOf<const XMLCh*>* getRecursingTypeNames() const;
+ ValueVectorOf<const XMLCh*>* getRecursingTypeNames() const;
// -----------------------------------------------------------------------
// Setter methods
// -----------------------------------------------------------------------
+ void setProcessed(const bool aValue = true);
void setScopeCount(const int aValue);
void setBlockDefault(const int aValue);
void setFinalDefault(const int aValue);
@@ -138,11 +152,13 @@
void addSchemaInfo(SchemaInfo* const toAdd, const ListType aListType);
bool containsInfo(const SchemaInfo* const toCheck, const ListType aListType) const;
SchemaInfo* getImportInfo(const unsigned int namespaceURI) const;
- DOMElement* getTopLevelComponent(const XMLCh* const compCategory,
- const XMLCh* const name);
- DOMElement* getTopLevelComponent(const XMLCh* const compCategory,
- const XMLCh* const name,
- SchemaInfo** enclosingSchema);
+ DOMElement* getTopLevelComponent(const unsigned short compCategory,
+ const XMLCh* const compName,
+ const XMLCh* const name);
+ DOMElement* getTopLevelComponent(const unsigned short compCategory,
+ const XMLCh* const compName,
+ const XMLCh* const name,
+ SchemaInfo** enclosingSchema);
void updateImportingInfo(SchemaInfo* const importingInfo);
bool circularImportExist(const unsigned int nameSpaceURI);
bool isFailedRedefine(const DOMElement* const anElem);
@@ -153,26 +169,33 @@
private:
// -----------------------------------------------------------------------
+ // Private helper methods
+ // -----------------------------------------------------------------------
+ void clearTopLevelComponents();
+
+ // -----------------------------------------------------------------------
// Private data members
// -----------------------------------------------------------------------
- bool fAdoptInclude;
- unsigned short fElemAttrDefaultQualified;
- int fBlockDefault;
- int fFinalDefault;
- int fTargetNSURI;
- int fScopeCount;
- unsigned int fNamespaceScopeLevel;
- XMLCh* fCurrentSchemaURL;
- const XMLCh* fTargetNSURIString;
- XMLStringPool* fStringPool;
+ bool fAdoptInclude;
+ bool fProcessed;
+ unsigned short fElemAttrDefaultQualified;
+ int fBlockDefault;
+ int fFinalDefault;
+ int fTargetNSURI;
+ int fScopeCount;
+ unsigned int fNamespaceScopeLevel;
+ XMLCh* fCurrentSchemaURL;
+ const XMLCh* fTargetNSURIString;
+ XMLStringPool* fStringPool;
const DOMElement* fSchemaRootElement;
- RefVectorOf<SchemaInfo>* fIncludeInfoList;
- RefVectorOf<SchemaInfo>* fImportedInfoList;
- RefVectorOf<SchemaInfo>* fImportingInfoList;
+ RefVectorOf<SchemaInfo>* fIncludeInfoList;
+ RefVectorOf<SchemaInfo>* fImportedInfoList;
+ RefVectorOf<SchemaInfo>* fImportingInfoList;
ValueVectorOf<const DOMElement*>* fFailedRedefineList;
- ValueVectorOf<int>* fImportedNSList;
+ ValueVectorOf<int>* fImportedNSList;
ValueVectorOf<const DOMElement*>* fRecursingAnonTypes;
- ValueVectorOf<const XMLCh*>* fRecursingTypeNames;
+ ValueVectorOf<const XMLCh*>* fRecursingTypeNames;
+ ValueVectorOf<DOMElement*>* fTopLevelComponents[C_Count];
};
// ---------------------------------------------------------------------------
@@ -183,6 +206,11 @@
return fElemAttrDefaultQualified;
}
+inline bool SchemaInfo::getProcessed() const {
+
+ return fProcessed;
+}
+
inline int SchemaInfo::getBlockDefault() const {
return fBlockDefault;
@@ -264,6 +292,18 @@
fElemAttrDefaultQualified = aValue;
}
+inline void SchemaInfo::setProcessed(const bool aValue) {
+
+ fProcessed = aValue;
+
+/* if (fProcessed && fIncludeInfoList) {
+
+ unsigned int includeListLen = fIncludeInfoList->size());
+ for (unsigned int i = 0; i < includeListLen; i++) {
+ fIncludeInfoList->elementAt(i)->clearTopLevelComponents();
+ }
+ }*/
+}
// ---------------------------------------------------------------------------
// SchemaInfo: Access methods
@@ -386,6 +426,15 @@
fRecursingAnonTypes->addElement(elem);
fRecursingTypeNames->addElement(name);
+}
+
+inline void SchemaInfo::clearTopLevelComponents() {
+
+ for (unsigned int i = 0; i < C_Count; i++) {
+
+ delete fTopLevelComponents[i];
+ fTopLevelComponents[i] = 0;
+ }
}
#endif
1.18 +39 -27 xml-xerces/c/src/xercesc/validators/schema/TraverseSchema.cpp
Index: TraverseSchema.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/TraverseSchema.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- TraverseSchema.cpp 27 May 2002 19:54:57 -0000 1.17
+++ TraverseSchema.cpp 27 May 2002 20:23:48 -0000 1.18
@@ -55,7 +55,7 @@
*/
/*
- * $Id: TraverseSchema.cpp,v 1.17 2002/05/27 19:54:57 knoaman Exp $
+ * $Id: TraverseSchema.cpp,v 1.18 2002/05/27 20:23:48 knoaman Exp $
*/
// ---------------------------------------------------------------------------
@@ -282,6 +282,8 @@
}
}
}
+
+ fSchemaInfo->setProcessed();
}
void TraverseSchema::preprocessSchema(DOMElement* const schemaRoot,
@@ -436,7 +438,7 @@
fAttributeCheck.checkAttributes(child, GeneralAttributeCheck::E_Documentation, this);
}
else {
-// reportSchemaError(XMLUni::fgXMLErrDomain, 0, 0); //"an <annotation> can only contain <appinfo> and <documentation> elements"
+ reportSchemaError(child, XMLUni::fgXMLErrDomain, XMLErrs::InvalidAnnotationContent);
}
}
}
@@ -1970,7 +1972,8 @@
if (dv == 0 && XMLString::stringLen(typeURI) == 0) {
- DOMElement* topLevelType = fSchemaInfo->getTopLevelComponent(SchemaSymbols::fgELT_SIMPLETYPE, localPart, &fSchemaInfo);
+ DOMElement* topLevelType = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_SimpleType,
+ SchemaSymbols::fgELT_SIMPLETYPE, localPart, &fSchemaInfo);
if (topLevelType != 0) {
@@ -1991,7 +1994,8 @@
if (dv == 0 && !XMLString::compareString(typeURI, fTargetNSURIString)) {
- DOMElement* topLevelType = fSchemaInfo->getTopLevelComponent(SchemaSymbols::fgELT_SIMPLETYPE, localPart, &fSchemaInfo);
+ DOMElement* topLevelType = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_SimpleType,
+ SchemaSymbols::fgELT_SIMPLETYPE, localPart, &fSchemaInfo);
if (topLevelType != 0) {
@@ -2679,7 +2683,7 @@
SchemaInfo* impInfo = fSchemaInfo->getImportInfo(uriId);
- if (!impInfo) {
+ if (!impInfo || impInfo->getProcessed()) {
reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::TypeNotFound, uriStr, name);
return 0;
@@ -2689,7 +2693,8 @@
fTargetNSURI = fSchemaInfo->getTargetNSURI();
}
- DOMElement* notationElem = fSchemaInfo->getTopLevelComponent(SchemaSymbols::fgELT_NOTATION, name, &fSchemaInfo);
+ DOMElement* notationElem = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_Notation,
+ SchemaSymbols::fgELT_NOTATION, name, &fSchemaInfo);
if (notationElem == 0) {
@@ -2860,7 +2865,7 @@
}
catch (...) {
- reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::ListUnionRestrictionError, typeName);
+ reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::InvalidFacetName, facetName);
content = XUtil::getNextSiblingElement(content);
continue;
}
@@ -4379,8 +4384,8 @@
if (baseValidator == 0) {
SchemaInfo* saveInfo = fSchemaInfo;
- DOMElement* baseTypeNode =
- fSchemaInfo->getTopLevelComponent(SchemaSymbols::fgELT_SIMPLETYPE, localPart, &fSchemaInfo);
+ DOMElement* baseTypeNode = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_SimpleType,
+ SchemaSymbols::fgELT_SIMPLETYPE, localPart, &fSchemaInfo);
if (baseTypeNode != 0) {
@@ -4469,7 +4474,8 @@
if (!refElemDecl) {
SchemaInfo* saveInfo = fSchemaInfo;
- DOMElement* targetElem = fSchemaInfo->getTopLevelComponent(SchemaSymbols::fgELT_ELEMENT, localPart, &fSchemaInfo);
+ DOMElement* targetElem = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_Element,
+ SchemaSymbols::fgELT_ELEMENT, localPart, &fSchemaInfo);
if (targetElem == 0) {
@@ -4712,7 +4718,7 @@
SchemaInfo* impInfo = fSchemaInfo->getImportInfo(uriId);
- if (!impInfo) {
+ if (!impInfo || impInfo->getProcessed()) {
reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::TypeNotFound, typeURI, localPart);
return 0;
@@ -4734,7 +4740,8 @@
|| XMLString::compareString(fTargetNSURIString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) == 0) {
SchemaInfo* saveInfo = fSchemaInfo;
- DOMElement* typeElem = fSchemaInfo->getTopLevelComponent(SchemaSymbols::fgELT_SIMPLETYPE, localPart, &fSchemaInfo);
+ DOMElement* typeElem = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_SimpleType,
+ SchemaSymbols::fgELT_SIMPLETYPE, localPart, &fSchemaInfo);
if (typeElem != 0 && traverseSimpleTypeDecl(typeElem) != -1) {
dv = getDatatypeValidator(typeURI, localPart);
@@ -4799,7 +4806,7 @@
SchemaInfo* impInfo = fSchemaInfo->getImportInfo(uriId);
- if (!impInfo) {
+ if (!impInfo || impInfo->getProcessed()) {
return 0;
}
@@ -4815,7 +4822,8 @@
if (XMLString::compareString(typeURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) != 0 ||
XMLString::compareString(fTargetNSURIString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) == 0) {
- DOMElement* typeNode = fSchemaInfo->getTopLevelComponent(SchemaSymbols::fgELT_COMPLEXTYPE, localPart, &fSchemaInfo);
+ DOMElement* typeNode = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_ComplexType,
+ SchemaSymbols::fgELT_COMPLEXTYPE, localPart, &fSchemaInfo);
if (typeNode) {
@@ -4873,7 +4881,7 @@
SchemaInfo* impInfo = fSchemaInfo->getImportInfo(uriId);
- if (!impInfo) {
+ if (!impInfo || impInfo->getProcessed()) {
reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::TypeNotFound, nameURI, localPart);
return 0;
@@ -4890,7 +4898,8 @@
if (!elemDecl) {
- DOMElement* subsGroupElem = fSchemaInfo->getTopLevelComponent(SchemaSymbols::fgELT_ELEMENT,localPart, &fSchemaInfo);
+ DOMElement* subsGroupElem = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_Element,
+ SchemaSymbols::fgELT_ELEMENT,localPart, &fSchemaInfo);
if (subsGroupElem != 0) {
@@ -5150,7 +5159,7 @@
SchemaInfo* impInfo = fSchemaInfo->getImportInfo(attURI);
- if (!impInfo) {
+ if (!impInfo || impInfo->getProcessed()) {
reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::TopLevelAttributeNotFound, refName);
return;
@@ -5167,8 +5176,8 @@
if (fAttributeDeclRegistry->containsKey(localPart) == false) {
- DOMElement* referredAttribute =
- fSchemaInfo->getTopLevelComponent(SchemaSymbols::fgELT_ATTRIBUTE, localPart, &fSchemaInfo);
+ DOMElement* referredAttribute = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_Attribute,
+ SchemaSymbols::fgELT_ATTRIBUTE, localPart, &fSchemaInfo);
if (referredAttribute != 0) {
traverseAttributeDecl(referredAttribute, 0, true);
@@ -5702,7 +5711,7 @@
SchemaInfo* impInfo = fSchemaInfo->getImportInfo(fURIStringPool->addOrFind(uriStr));
- if (!impInfo) {
+ if (!impInfo || impInfo->getProcessed()) {
reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BaseTypeNotFound, baseName);
throw TraverseSchema::InvalidComplexTypeInfo;
}
@@ -5749,8 +5758,8 @@
if (baseDTValidator == 0) {
- DOMElement* baseTypeNode =
- fSchemaInfo->getTopLevelComponent(SchemaSymbols::fgELT_COMPLEXTYPE, localPart, &fSchemaInfo);
+ DOMElement* baseTypeNode = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_ComplexType,
+ SchemaSymbols::fgELT_COMPLEXTYPE, localPart, &fSchemaInfo);
if (baseTypeNode != 0) {
@@ -5759,7 +5768,8 @@
}
else {
- baseTypeNode = fSchemaInfo->getTopLevelComponent(SchemaSymbols::fgELT_SIMPLETYPE, localPart, &fSchemaInfo);
+ baseTypeNode = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_SimpleType,
+ SchemaSymbols::fgELT_SIMPLETYPE, localPart, &fSchemaInfo);
if (baseTypeNode != 0) {
@@ -6368,7 +6378,7 @@
SchemaInfo* impInfo = fSchemaInfo->getImportInfo(fURIStringPool->addOrFind(uriStr));
- if (!impInfo) {
+ if (!impInfo || impInfo->getProcessed()) {
reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DeclarationNotFound,
SchemaSymbols::fgELT_GROUP, uriStr, localPart);
@@ -6385,7 +6395,8 @@
if (!groupInfo) {
- DOMElement* groupElem = fSchemaInfo->getTopLevelComponent(SchemaSymbols::fgELT_GROUP, localPart, &fSchemaInfo);
+ DOMElement* groupElem = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_Group,
+ SchemaSymbols::fgELT_GROUP, localPart, &fSchemaInfo);
if (groupElem != 0) {
@@ -6454,7 +6465,7 @@
if (!attGroupInfo) {
SchemaInfo* impInfo = fSchemaInfo->getImportInfo(fURIStringPool->addOrFind(uriStr));
- if (!impInfo) {
+ if (!impInfo || impInfo->getProcessed()) {
reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DeclarationNotFound,
SchemaSymbols::fgELT_ATTRIBUTEGROUP, uriStr, localPart);
@@ -6484,7 +6495,8 @@
if (!attGroupInfo) {
// traverse top level attributeGroup - if found
- DOMElement* attGroupElem = fSchemaInfo->getTopLevelComponent(SchemaSymbols::fgELT_ATTRIBUTEGROUP, localPart, &fSchemaInfo);
+ DOMElement* attGroupElem = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_AttributeGroup,
+ SchemaSymbols::fgELT_ATTRIBUTEGROUP, localPart, &fSchemaInfo);
if (attGroupElem != 0) {
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org