in SimpleServer/src/main/java/org/apache/uima/simpleserver/Service.java [174:240]
public String getXMLResultXSD() {
if (!this.initialized) {
logInitializationError();
return null;
}
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
DOMImplementation impl = builder.getDOMImplementation();
Document document = impl.createDocument(null, null, null);
Element root = document.createElement("schema");
root.setAttribute("xmlns", "http://www.w3.org/2001/XMLSchema");
document.appendChild(root);
Element resultElement = document.createElement("element");
resultElement.setAttribute("name", "result");
root.appendChild(resultElement);
Element complexTypeElement = document.createElement("complexType");
resultElement.appendChild(complexTypeElement);
Element sequenceElement = document.createElement("sequence");
complexTypeElement.appendChild(sequenceElement);
for (TypeMap tSpec : this.serviceSpec.getTypeSpecs()) {
Element element = document.createElement("element");
element.setAttribute("name", tSpec.getOutputTag());
element.setAttribute("maxOccurs", "unbounded");
element.setAttribute("minOccurs", "0");
Element complexType = document.createElement("complexType");
element.appendChild(complexType);
Element simpleContent = document.createElement("simpleContent");
complexType.appendChild(simpleContent);
Element extension = document.createElement("extension");
extension.setAttribute("base", "string");
simpleContent.appendChild(extension);
for (Output output : tSpec.getOutputs()) {
Element attributeElement = document.createElement("attribute");
extension.appendChild(attributeElement);
attributeElement.setAttribute("name", output.getAttribute());
attributeElement.setAttribute("type", "string");
attributeElement.setAttribute("use", "optional");
}
sequenceElement.appendChild(element);
}
DOMSource source = new DOMSource(document);
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
StringWriter stringWriter = new StringWriter();
StreamResult streamResult = new StreamResult(stringWriter);
transformer.transform(source, streamResult);
return stringWriter.toString();
} catch (TransformerException e) {
getLogger().log(Level.SEVERE, "", e);
} catch (ParserConfigurationException e) {
getLogger().log(Level.SEVERE, "", e);
}
return null;
}