public String getXMLResultXSD()

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;
  }