private void addCrossImports(XmlSchema schema, XmlSchemaContentModel contentModel) { if (contentModel == null) { return; } XmlSchemaContent content = contentModel.getContent(); if (content == null) { return; } if (content instanceof XmlSchemaComplexContentExtension) { XmlSchemaComplexContentExtension extension = (XmlSchemaComplexContentExtension) content; XmlSchemaUtils.addImportIfNeeded(schema, extension.getBaseTypeName()); addCrossImportsAttributeList(schema, extension.getAttributes()); XmlSchemaParticle particle = extension.getParticle(); if (particle instanceof XmlSchemaSequence) { addCrossImports(schema, (XmlSchemaSequence) particle); } else if (particle instanceof XmlSchemaChoice) { addCrossImports(schema, (XmlSchemaChoice) particle); } else if (particle instanceof XmlSchemaAll) { addCrossImports(schema, (XmlSchemaAll) particle); } } else if (content instanceof XmlSchemaComplexContentRestriction) { XmlSchemaComplexContentRestriction restriction = (XmlSchemaComplexContentRestriction) content; XmlSchemaUtils.addImportIfNeeded(schema, restriction.getBaseTypeName()); addCrossImportsAttributeList(schema, restriction.getAttributes()); } else if (content instanceof XmlSchemaSimpleContentExtension) { XmlSchemaSimpleContentExtension extension = (XmlSchemaSimpleContentExtension) content; XmlSchemaUtils.addImportIfNeeded(schema, extension.getBaseTypeName()); addCrossImportsAttributeList(schema, extension.getAttributes()); } else if (content instanceof XmlSchemaSimpleContentRestriction) { XmlSchemaSimpleContentRestriction restriction = (XmlSchemaSimpleContentRestriction) content; XmlSchemaUtils.addImportIfNeeded(schema, restriction.getBaseTypeName()); addCrossImportsAttributeList(schema, restriction.getAttributes()); } }
private void addCrossImportsType(XmlSchema schema, XmlSchemaType schemaType) { // the base type might cross schemas. if (schemaType instanceof XmlSchemaComplexType) { XmlSchemaComplexType complexType = (XmlSchemaComplexType) schemaType; XmlSchemaUtils.addImportIfNeeded(schema, complexType.getBaseSchemaTypeName()); addCrossImports(schema, complexType.getContentModel()); addCrossImportsAttributeList(schema, complexType.getAttributes()); // could it be a choice or something else? if (complexType.getParticle() instanceof XmlSchemaChoice) { XmlSchemaChoice choice = (XmlSchemaChoice) complexType.getParticle(); addCrossImports(schema, choice); } else if (complexType.getParticle() instanceof XmlSchemaAll) { XmlSchemaAll all = (XmlSchemaAll) complexType.getParticle(); addCrossImports(schema, all); } else if (complexType.getParticle() instanceof XmlSchemaSequence) { XmlSchemaSequence sequence = (XmlSchemaSequence) complexType.getParticle(); addCrossImports(schema, sequence); } } }