Код пользовательского интерфейса к отчету XMLP
<form name="params" method="POST" action="http://advanta.homeip.net:8080/xmlpserver/servlet/xdo"
target= "_blank" onsubmit= "return(go());">
 
<input type="hidden" name="id" value="guest">
<input type="hidden" name="passwd" value="">
 
<input type="hidden" name="_xuil" value="ru">
<input type="hidden" name="_mode" value="4">
<input type="hidden" name="_xpf" value="">    
<input type="hidden" name="_xpt" value="0">
<input type="hidden" name="_xdo" value="/~XMLP_GUEST/invalid/invalid/invalid.xdo"
 
<table><tr><td>
<table>
<tr><td>Уровень истории</td>
  <td><select name="pH" onchange="onlevel(this)">
    <option value="h1">10-минутный уровень</option>
    <option value="h2">Часовой уровень</option>
    <option value="h3">Сменный уровень</option>
    <option value="h4">Суточный уровень</option>
    <option value="h5">Месячный уровень</option>
  </select></td>
  <td><input type="hidden" name="hName" readonly></td></tr>
<tr><td>Тип сигнала</td>
  <td><select name="pType">
    <option value="a">Аналоговые сигналы</option>
    <option value="m">Расчетные значения</option>
    <option value="d">Дискретные сигналы</option>
    <option value="s">Специальные значения</option>
  </select></td>
  <td><input type="hidden" name="typeName" readonly></td></tr>
<tr><td>Группа оборудования</td>
  <td><select name="pServ">
    <option value="0">Общестанционное оборудование</option>  
    <option value="1">Оборудование блока № 1</option>  
    <option value="2">Оборудование блока № 2</option>
    <option value="3">Оборудование блока № 3</option>
  </select></td>
  <td><input type="hidden" name="servName" style="width: 7cm;" readonly></td></tr>
<tr><td onclick="getStamps()" style="cursor: pointer;"><u>Получить временные ряды</u></td>
  <td><select name="pStamp" style="width: 5cm;">
  </select></td>
  <td><input type="hidden" name="stampName" readonly></td></tr>
<tr><td>Шаблон разметки</td>
  <td colspan=2><select name="_xt">
    <option value="invalid-MS">invalid-MS</option>
  </select></td></tr>
<tr><td>Формат вывода</td>
  <td colspan=2><select name="_xf">
    <option value="html">HTML</option>
    <option value="pdf">PDF</option>
    <option value="rtf">RTF</option>
    <option value="excel">Excel</option>
    <option value="excel2000">Excel2000</option>
    <option value="ppt">PowerPoint</option>
    <option value="mhtml">MHTML</option>
    <option value="csv">CSV</option>
    <option value="xml">Данные</option>
    </select></td></tr>
<tr><td colspan=3><input type="submit" value="Получите отчет!" style="width:100%;"></td>
</tr>
</table></td>
<td>
<IMG id="preloader" style="display:none;" src="" border=0>
</td></tr>
</table>
</form>
 
<script type="text/javascript">
var params= document.forms["params"];
var login= document.forms["login"];
var preloader= document.getElementById("preloader");
function go(){  
  params.hName.value= params.pH.options[params.pH.selectedIndex].text;
  params.typeName.value= params.pType.options[params.pType.selectedIndex].text;
  params.servName.value= params.pServ.options[params.pServ.selectedIndex].text;
  if(params.pStamp.selectedIndex<0){
    alert("Не выбран временной ряд!");
    return false;
  }
  params.stampName.value= params.pStamp.options[params.pStamp.selectedIndex].text;
  return true;
}
 
function onlevel(t1){
  params.pStamp.length= 0;
}
 
var JSONurl= "http://advanta.homeip.net:8080/execsql.py?callback()&&";
function getStamps(){
  /* Организация JSONP-запроса */
  preloader.src= "";
  var script = document.createElement("script");
  script.src = JSONurl+ encodeURIComponent("select distinct(tstamp) from "+ 
    params.pH.value+ " order by 1 desc;");
  script.type = 'text/javascript';
  document.body.appendChild(script);
  preloader.src= "http://advanta.homeip.net:8080/img/preloader-"+ params.pH.value+ ".gif"
  preloader.style.display= "block";  
}
function callback(oRS){
  function timestr(stamp){
    return stamp.substring(6,8)+ '.'+ 
      stamp.substring(4,6)+ '.'+ 
      stamp.substring(0,4)+ ' '+
      stamp.substring(8,10)+ ':'+ 
      stamp.substring(10,12);
  }  
  params.pStamp.length= 0; params.stampName.value= "";
    for (x1 in oRS){
        params.pStamp[x1] = new Option(timestr(oRS[x1].tstamp), oRS[x1].tstamp);
    }
  preloader.style.display= "none";
}
</script>