Author: knoaman
Date: Fri Sep 16 18:51:45 2011
New Revision: 1171718
URL: http://svn.apache.org/viewvc?rev=1171718&view=rev
Log:
For dynamic EDC, check for local elements in current type as well as the base
type chain. Jira issue 1535
(https://issues.apache.org/jira/browse/XERCESJ-1535)
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java?rev=1171718&r1=1171717&r2=1171718&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java
Fri Sep 16 18:51:45 2011
@@ -2382,7 +2382,7 @@ public class XMLSchemaValidator
// EDC rule
if (isSchema11) {
if (wildcard != null && fCurrentCM != null) {
- XSElementDecl elemDecl =
fCurrentCM.findMatchingElemDecl(element, fSubGroupHandler);
+ XSElementDecl elemDecl = findLocallyDeclaredType(element,
fCurrentCM, fTypeStack[fElementDepth-1].getBaseType());
if (elemDecl != null) {
final XSTypeDefinition elemType =
elemDecl.getTypeDefinition();
// types need to be equivalent
@@ -2566,6 +2566,19 @@ public class XMLSchemaValidator
return augs;
} // handleStartElement(QName,XMLAttributes,boolean)
+
+ private XSElementDecl findLocallyDeclaredType(QName element,
+ XSCMValidator currentCM, XSTypeDefinition baseType) {
+ XSElementDecl elemDecl = currentCM.findMatchingElemDecl(element,
fSubGroupHandler);
+ if (elemDecl == null) {
+ if (baseType.getTypeCategory() != XSTypeDefinition.SIMPLE_TYPE &&
+ baseType != SchemaGrammar.getXSAnyType(fSchemaVersion)) {
+ currentCM = ((XSComplexTypeDecl)
baseType).getContentModel(fCMBuilder);
+ return findLocallyDeclaredType(element, currentCM,
baseType.getBaseType());
+ }
+ }
+ return elemDecl;
+ }
/*
* Delegate to assertions validator startElement handler.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]