in src/main/java/org/apache/ws/commons/schema/XmlSchema.java [596:630]
protected XmlSchemaAttribute getAttributeByName(QName name, boolean deep, Stack<XmlSchema> schemaStack) {
if (schemaStack != null && schemaStack.contains(this)) {
// recursive schema - just return null
return null;
}
XmlSchemaAttribute attribute = (XmlSchemaAttribute)attributes.get(name);
if (deep) {
if (attribute == null) {
// search the imports
for (XmlSchemaExternal item : externals) {
XmlSchema schema = getSchema(item);
if (schema != null) {
// create an empty stack - push the current parent in
// and
// use the protected method to process the schema
if (schemaStack == null) {
schemaStack = new Stack<XmlSchema>();
}
schemaStack.push(this);
attribute = schema.getAttributeByName(name, deep, schemaStack);
if (attribute != null) {
return attribute;
}
}
}
} else {
return attribute;
}
}
return attribute;
}