/**
   * Transforms an xml document based on the xsl deign element specified.
   *
   * @param xmlData
   * @param sDesignElement
   * @return a transformed lock of XML
   */
  public StringBuilder xmlTransform(StringBuilder xmlData, String sDesignElement) {

    DesignElement de = getDesignObject(sDesignElement, DesignElement.DESIGN_TYPE_RESOURCE);

    if (de == null) {
      // get the xml columns
      String sColumns[] = TableManager.getXMLColumnNames(xmlData);
      // for(int i=0; i<sColumns.length; i++) System.out.println(sColumns[i]);
      // make a stylesheet and save it to the design collection
      // if it saved ok, then recall this method, cause we'll find the sheet next time
      if (saveXSLDesignElement(sDesignElement, sColumns))
        return xmlTransform(xmlData, sDesignElement);

      return null;
    }
    // maybe check the contenttype is xsl ??
    String sXML = null;
    try {
      sXML = new String(de.getContent(), "UTF-8");
      if (sXML != null && (sXML.indexOf("<P@") >= 0 || sXML.indexOf("<p@") >= 0)) {
        // FIXME parse out the <P@ST tags
        HTMLDocument docHTML = new HTMLDocument(this);
        docHTML.designObject = de;
        docHTML.rPath = new RequestPath(getRequestPath().getFullPath());
        docHTML.setParameters(getRequestPath().Parameters);
        docHTML.prepare();
        docHTML.renderDocument(false);
        sXML = new String(docHTML.getContent(), "UTF-8");
      }
    } catch (Exception e) {
    }
    StringBuilder xslData = new StringBuilder(sXML);
    return Util.xmlTransform(m_SysCtx, xmlData, xslData);
  }
 /**
  * Sets the design element that will be returned to the client
  *
  * @param doc
  * @param de
  */
 public void setDesignObject(HTMLDocument doc, DesignElement de) {
   doc.designObject = de;
   doc.removeParsedParts();
   doc.prepare();
 }