tinyWSDL does not parse XML Schemas so working with XML Schema is similar to working with unknown extensions.
Types types = description.getTypes();
List<Element> elements = types.getExtensionElements(SchemaTypesExtensions.XML_SCHEMA_ELEM);
Note that even SchemaTypesExtensions is defined there is no implementation provided,
so the code below returns an empty list.
SchemaTypesExtensions extensions = (SchemaTypesExtensions)types.getComponentExtensions(WSDLPredefinedExtension.SCHEMA.URI);
List<? extends Schema> schemas = extensions.getSchemas();
This is done to do not depend on any particular XML Schema parser.
tinyXMLSchema is an XML Schema extension based on Apache XML Schema 2 library and provided as an extension package.
When tinyXMLSchema is present, the code above works and it is possible to get Apache XmlSchema object:
SchemaTypesExtensions extensions = (SchemaTypesExtensions)types.getComponentExtensions(WSDLPredefinedExtension.SCHEMA.URI);
for (Schema schema : extensions.getSchemas()) {
XmlSchema xmlSchema = schema.getSchema();
}
Inserting a new XML Schema:
SchemaTypesExtensions extensions = (SchemaTypesExtensions)types.getComponentExtensions(WSDLPredefinedExtension.SCHEMA.URI);
Schema schema = extensions.newSchema();
XmlSchema xmlSchema = (XmlSchema)schema.getSchema();
xmlSchema.setTargetNamespace("http://example.com");
extensions.addSchema(schema);
Also ElementDeclaration object (for example obtained from InterfaceFault) will return XmlSchemaElement as its content:
ElementDeclaration elementDeclaration = interfaceFault.getElementDeclaration();
XmlSchemaElement xmlSchemaElement = elementDeclaration.getContent();
Obviously when tinyXmlSchema extension is used Apache Xml Schema 2.0 core library must be also present.