PHP Classes

File: Datalus/XSL/edit_ajax.xsl

Recommend this page to a friend!
  Classes of Abbey Sparrow   Datalus   Datalus/XSL/edit_ajax.xsl   Download  
File: Datalus/XSL/edit_ajax.xsl
Role: Auxiliary data
Content type: text/plain
Description: edit transformation (AJAX login)
Class: Datalus
Build Web applications from XML definitions
Author: By
Last change:
Date: 17 years ago
Size: 36,416 bytes
 

Contents

Class file image Download
<?xml version="1.0" encoding="iso-8859-1" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="container"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title><xsl:value-of select="@title" /></title> <script type="text/javascript" src="Datalus/Javascript/ImageInput/ImageInput.js" > dummy(); </script> <script language="javascript" type="text/javascript" src="Datalus/Javascript/tiny_mce/tiny_mce.js" > dummy(); </script> <script language="javascript" type="text/javascript" src="Datalus/Javascript/Debugger/Debugger.js" > dummy(); </script> <script type="text/javascript" src="Datalus/Javascript/TableSort/Event.js"> dummy(); </script> <script type="text/javascript" src="Datalus/Javascript/ibox/ibox.js"> dummy(); </script> <script type="text/javascript" src="Datalus/Javascript/TableSort/SortedTable.js"> dummy(); </script> <script type="text/javascript"> var sourceTable, destTable; onload = function() { sourceTable = new SortedTable('s'); destTable = new SortedTable('d'); mySorted = new SortedTable(); } function moveRows(s,d) { var a = new Array(); for (var o in s.selectedElements) { a.push(s.selectedElements[o]); } for (var o in a) { var elm = a[o]; var tds = elm.getElementsByTagName('td'); for (var i in tds) { if (tds[i].headers) tds[i].headers = d.table.id+''+tds[i].headers.substr(d.table.id.length); } d.body.appendChild(a[o]); d.deselect(a[o]); d.init(d.table); d.sort(); s.deselect(a[o]); s.init(s.table); } } </script> <script language="javascript" type="text/javascript"> var READY_STATE_UNINITIALIZED=0; var READY_STATE_LOADING=1; var READY_STATE_LOADED=2; var READY_STATE_INTERACTIVE=3; var READY_STATE_COMPLETE=4; var req; function getXMLHTTPRequest(){ var xRequest=null; if (window.XMLHttpRequest){ xRequest = new XMLHttpRequest(); }else if (typeof ActiveXObject != "undefined"){ XRequest = new ActiveXObject("Microsoft.XMLHTTP"); } return xRequest; } function sendRequest(url, params, callback, method){ if(!method){ method = "GET"; } req = getXMLHTTPRequest(); if(req){ req.onreadystatechange=callback; req.open(method,url,true); req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); req.send(params); } } function login(){ sendRequest("ajax_server.php", "loginname="+document.account.loginname.value+ "<xsl:text disable-output-escaping="yes">&#38;</xsl:text>loginpassword="+ document.account.loginpassword.value, onLogin, "POST"); } function onLogin(){ var ready = req.readyState; var data = null; if (ready == READY_STATE_COMPLETE){ data = req.responseText; document.getElementById("accountpane").innerHTML=data; updateMenus(); } } function logout(){ sendRequest("ajax_server.php", "loginname="+document.account.loginname.value, onLogout, "POST"); } function onLogout(){ var ready = req.readyState; var data = null; if (ready == READY_STATE_COMPLETE){ data = req.responseText; document.getElementById("accountpane").innerHTML=data; updateMenus(); } } function updateMenus(){ sendRequest("ajax_server.php", "updatemenus=true", onUpdateMenus, "POST"); } function onUpdateMenus(){ var ready = req.readyState; var data = null; if (ready == READY_STATE_COMPLETE){ data = req.responseText; document.getElementById("topmenu").innerHTML=data; } } function onReadyStateChange(){ var ready = req.readyState; var data = null; if (ready == READY_STATE_COMPLETE){ data = req.responseText; alert(data); }else{ data = "loading...["+ready+"]"; } //... do something with the data... } </script> <script language="javascript" type="text/javascript"> tinyMCE.init({ mode : "textareas", safari_warning : "false", encoding: "xml", entity_encoding : "named" }); function fileBrowserCallBack(field_name, url, type, win) { // This is where you insert your custom filebrowser logic alert("Example of filebrowser callback: field_name: " + field_name + ", url: " + url + ", type: " + type); // Insert new URL, this would normaly be done in a popup win.document.forms[0].elements[field_name].value = "someurl.htm"; } </script> <!-- <script type="text/javascript" src="Datalus/Javascript/DateTimeInput/DateTimeInput.js" > dummy(); </script> --> <script type="text/javascript" src="Datalus/Javascript/DateTimeInput/calendarDateInput.js" > dummy(); </script> <script type="text/javascript" src="Datalus/Javascript/LocationInput/locationInput.js" > dummy(); </script> <!-- <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAEFe1FuUCfjkzjXLE9fmzrBTzuve9KbFvn86cdc7W7sQljw9c9hS8YUpUpkBggYcUeb0U52T35M5UWw" type="text/javascript"> dummy(); </script> <script type="text/javascript" src="Datalus/Javascript/LocationInput/gmapInput.js" > dummy(); </script> --> <xsl:apply-templates select="verifiers"/> <link rel="stylesheet" type="text/css" href="{@style}" /> <link rel="stylesheet" href="Datalus/Javascript/ibox/ibox.css" type="text/css" media="screen"/> <link media="all" type="text/css" href="Datalus/Javascript/TextEditor/rte.css" rel="stylesheet" /> </head> <body> <div id="titlebar"><img src="Graphics/logo.png" /></div> <xsl:apply-templates select="account"/> <xsl:apply-templates select="menu"/> <div id="container"> <xsl:copy-of select="div|p|img|br|ol|ul|li|i|b|a"/> <xsl:apply-templates select="chat"/> <xsl:apply-templates select="object"/> <xsl:apply-templates select="object/list"/> <xsl:apply-templates select="object/object"/> <xsl:apply-templates select="list"/> <xsl:apply-templates select="pages"/> <xsl:apply-templates select="footnote"/> </div> <div id="fixed_container"> <xsl:apply-templates select="fixed"/> </div> <div id="badges"> <xsl:apply-templates select="badge"/> </div> </body> </html> </xsl:template> <xsl:template match="badge"> <img src="{@image}"/> </xsl:template> <xsl:template match="account[@loggedin='true']"> <div id="accountpane"><form name="account" method="post" onsubmit="logout(); return false;"> <input type="hidden" name="loginname" value="logout" /> <xsl:value-of select="@name" /> <input type="submit" value="Logout" class="loginbtn" /> </form></div> </xsl:template> <xsl:template match="account"> <div id="accountpane"><form name="account" method="post" onsubmit="login(); return false;"> <input type="text" name="loginname" size="15" /> <input type="password" name="loginpassword" size="15" /> <input type="submit" value="Login" /></form></div> </xsl:template> <xsl:template match="chat"> <div class="object" id="chat"> <div id="object_header"><xsl:value-of select="object/@name" />Chat</div> <center><applet codebase="chat" archive="chat.jar" code="Chat" width="85%" height="500px"> <param name="config" value="config.txt" /> <param name="smiles" value="on" /> <param name="multi-rooms" value="on" /> <param name="fgColor" value="#{@fgcolor}" /> <param name="bgColor" value="#{@bgcolor}" /> <param name="auto-login" value="{@user}" /> Your browser is NOT Java enabled </applet></center> </div> </xsl:template> <xsl:template match="pages"> <div class="object"> <xsl:value-of select="text()" /> </div> </xsl:template> <!--match all menus with submenu attr & menu children--> <xsl:template match="menu"> <div id="topmenu"> <div id="{@type}bar"> <div id="object_header"><xsl:value-of select="@name" /></div> <xsl:apply-templates /> </div> </div> </xsl:template> <!--match all menus with a ancestor menu and a child menu--> <xsl:template match="submenu"> <div id="{@type}item"><a href="{@location}"><xsl:value-of select="@name" /></a> <div id="{@type}submenu"><xsl:apply-templates /></div> </div> </xsl:template> <!--match all menus without children--> <xsl:template match="menuitem"><div id="{@type}item"><a href="{@location}"><xsl:value-of select="@name" /></a></div></xsl:template> <xsl:template match="list[@expand='true']"> <form action="view.php" onsubmit="return submitForm();"> <div class="object"> <div id="object_header"><xsl:value-of select="object/@name" /> list</div> <table class="sorted" cellspacing="0" cellpadding="0"> <thead> <xsl:apply-templates select="tabhead" /> </thead> <tbody> <xsl:apply-templates select="object" /> </tbody> </table> <table cellspacing="0" cellpadding="0"> <tr> <td><form name="addGroup" method="get"> <input type="hidden" name="type" value="{object/@name}" /> <input type="hidden" name="groupid" value="{@id}" /> <input type="hidden" name="groupname" value="{@groupname}" /> <input type="submit" value="Insert {object/@name}" name="addgroup" /> </form></td> <td><form name="newObject" method="get"> <input type="hidden" name="type" value="{object/@name}" /> <input type="hidden" name="id" value="{@id}" /> <input type="hidden" name="groupname" value="{@groupname}" /> <input type="submit" value="New {object/@name}" name="addgroup" /> </form></td> </tr> </table> </div> </form> </xsl:template> <xsl:template match="list"> <form action="view.php" onsubmit="return submitForm();"> <div class="object"> <div id="object_header"><xsl:value-of select="object/@name" /> list</div> <table class="sorted" cellspacing="0" cellpadding="0"> <thead> <xsl:apply-templates select="tabhead" /> </thead> <tbody> <xsl:apply-templates select="object" /> </tbody> </table> </div> </form> </xsl:template> <xsl:template match="list[@expand='matrix']"> <form action="{@target}" onsubmit="return submitForm();"> <div class="object"> <div id="object_header"><xsl:value-of select="@name" /> list</div> <table class="sorted" cellspacing="0" cellpadding="0"> <thead> <xsl:apply-templates select="tabhead" /> </thead> <tbody> <xsl:apply-templates select="row" /> <xsl:apply-templates select="object" /> </tbody> </table> <form name="addrow" method="get"> <input type="hidden" name="groupid" value="{@id}" /> <input type="submit" value="new" name="mode" /> </form> </div> </form> </xsl:template> <xsl:template match="list[@expand='matrix']//row"> <tr> <xsl:apply-templates /> <td><form action="{@target}"><input type="hidden" name="id" value="{@id}" /><input type="submit" value="edit..." name="edit" /></form></td> </tr> </xsl:template> <xsl:template match="list[@expand='true']//tabhead"> <tr> <xsl:apply-templates /> <th></th> </tr> </xsl:template> <xsl:template match="list[not(@expand='true')]//tabhead"> <tr> <xsl:apply-templates /> </tr> </xsl:template> <xsl:template match="list//colhead"> <th id="{@name}"><span> <xsl:value-of select="text()" /> </span></th> </xsl:template> <xsl:template match="list[@expand='true']//object"> <tr> <xsl:apply-templates /> <td><form action="view.php"><input type="hidden" name="type" value="{@name}" /><input type="hidden" name="id" value="{*[@name='id']/text()}" /><input type="submit" value="edit..." name="edit" /></form></td> </tr> </xsl:template> <xsl:template match="list[not(@expand='true')]//object"> <tr> <xsl:apply-templates /> </tr> </xsl:template> <xsl:template match="list//string"> <td axis="string" headers="{@name}"> <xsl:value-of select="text()" /> </td> </xsl:template> <xsl:template match="list//userlink"> <td axis="string" headers="{@name}"> <form action="users.php" mode="get"><input type="hidden" name="mode" value="edit" /><input type="hidden" name="id" value="{@id}" /><input type="submit" value="edit..." name="edit" /></form> </td> </xsl:template> <xsl:template match="list//image"> <td> <xsl:value-of select="text()" /> </td> </xsl:template> <xsl:template match="list//instant"> <td axis="date" headers="{@name}"> <xsl:value-of select="text()" /> </td> </xsl:template> <xsl:template match="list//hidden"> </xsl:template> <xsl:template match="list//password"> <td> * </td> </xsl:template> <xsl:template match="list//string[@obscure='true']"> <td> * </td> </xsl:template> <xsl:template match="list//instance"> <td><xsl:value-of select="text()" /></td> </xsl:template> <xsl:template match="footnote"> <div id="footnote"> <p><xsl:copy-of select="br|h4|ol|ul|li|i|b|a|text()"/></p> </div> </xsl:template> <xsl:template match="fixed"> <div class="fixed"> <div id="object_header"><xsl:value-of select="@name" /></div> <div id="padded"> <xsl:copy-of select="text()|p|img|br|h4|ol|ul|li|i|b|a"/> </div> </div> </xsl:template> <xsl:template match="object[not(ancestor::list) and @editable='true']"> <form name="{@name}" enctype="multipart/form-data" method="post" onsubmit="tinyMCE.triggerSave(); return allowSubmit();"> <div class="object"> <div id="object_header"><xsl:value-of select="@lprepend" /><xsl:value-of select="@name" /><xsl:value-of select="@lappend" /></div> <div id="padded"> <xsl:copy-of select="p|img|br|h4|ol|ul|li|i|b|a|text()"/> <input type="hidden" value="{@name}" name="type"/> <table id="{@name}"> <xsl:apply-templates select="./*[@name]"/> <tr> <td> <input name="clear" type="reset" value="Clear" /> </td> <td> <input type="submit" value="Submit" name="submit" /> </td> </tr> </table> EDIT ME!!!! </div> </div> </form> <xsl:apply-templates select="comments"/> </xsl:template> <xsl:template match="object[not(ancestor::list) and not(@editable='true')]"> <form name="{@name}" enctype="multipart/form-data" method="post" onsubmit="tinyMCE.triggerSave(); return allowSubmit();"> <xsl:if test="descendant::file"> <script type="text/javascript" language="javascript"> document.<xsl:value-of select="@name"/>.target = 'UploadTarget'; //addEvent(document.<xsl:value-of select="@name"/>, "submit", function(){tinyMCE.triggerSave(); document.getElementById('upload_status').innerHTML='Uploading files...<br/><img src="img/progress_bar.gif"/>'; return allowSubmit();}); addEvent(document.<xsl:value-of select="@name"/>, "submit", submitWithFile); function submitWithFile(){ params = parseQuery("width=400;height=128"); url = "#upload_status"; title = "Uploading files..."; showBG(); showIbox(url,title,params); window.onscroll = maintPos; window.onresize = maintPos; return true; } var firstLoad = true; function loadIframe(){ if(firstLoad){ firstLoad = false; }else{ document.location.href=document.location.href.replace(/<xsl:text disable-output-escaping="yes">&#38;</xsl:text>?edit=true/, ''); } } </script> <iframe src="" name="UploadTarget" id="UploadTarget" style="width:0;height:0;border:0" onload="loadIframe()">dummy</iframe> <div id="upload_status" style="display:none;background:#000;"><div style="background:#fff;width=300px;height=128px;vertical-align:center;text-align:center;"><img src="Datalus/Javascript/ibox/images/indicator.gif" /></div></div> </xsl:if> <div class="object"> <div id="object_header"><xsl:value-of select="@lprepend" /><xsl:value-of select="@name" /><xsl:value-of select="@lappend" /></div> <div id="padded"> <xsl:copy-of select="div|p|img|br|h4|ol|ul|li|i|b|a"/> <input type="hidden" value="{@name}" name="type"/> <table id="{@name}"> <xsl:apply-templates select="./*[@name]"/> <tr> <td> <input name="clear" type="reset" value="Clear" /> </td> <td> <input type="submit" value="Submit" name="submit" /> </td> </tr> </table> </div> </div> </form> <xsl:apply-templates select="comments"/> </xsl:template> <xsl:template match="string[not(ancestor::list) and not(@obsfuscate) and not(@display)]"> <tr> <td> <xsl:value-of select="@name" /> </td> <td> <xsl:if test="@error"> <input class="error {@verifier} {@required}" type="text" name="{@name}" value="{text()}" /> <div class="error"> <xsl:value-of select="@error" /> </div> </xsl:if> <xsl:if test="not(@error)"> <input class="{@verifier} {@required}" type="text" name="{@name}" value="{text()}" /> </xsl:if> </td> </tr> </xsl:template> <xsl:template match="integer[not(ancestor::list) and not(@obsfuscate) and not(@display)]"> <tr> <td> <xsl:value-of select="@name" /> </td> <td> <xsl:if test="@error"> <input class="error {@verifier} {@required}" type="text" name="{@name}" value="{text()}" /> <div class="error"> <xsl:value-of select="@error" /> </div> </xsl:if> <xsl:if test="not(@error)"> <input class="{@verifier} {@required}" type="text" name="{@name}" value="{text()}" /> </xsl:if> </td> </tr> </xsl:template> <xsl:template match="string[@obscure='true' and not(ancestor::list) and not(@obsfuscate) and not(@display)]"> <tr> <td> <xsl:value-of select="@name" /> </td> <td> <xsl:if test="@error"> <input class="error {@verifier} {@required}" type="password" name="{@name}" value="{text()}" /> <div class="error"> <xsl:value-of select="@error" /> </div> </xsl:if> <xsl:if test="not(@error)"> <input class="{@verifier} {@required}" type="password" name="{@name}" value="{text()}" /> </xsl:if> </td> </tr> </xsl:template> <xsl:template match="user[not(ancestor::list) and not(@obsfuscate) and not(@display)]"> <tr> <td> <xsl:value-of select="@name" /> </td> <td> <xsl:if test="@error"> <input class="error {@verifier} {@required}" type="text" name="{@name}" value="{text()}" /> <div class="error"> <xsl:value-of select="@error" /> </div> </xsl:if> <xsl:if test="not(@error)"> <input class="{@verifier} {@required}" type="text" name="{@name}" value="{text()}" /> </xsl:if> </td> </tr> </xsl:template> <xsl:template match="invisible"> <input type="hidden" name="{@name}" value="{@value}" /> </xsl:template> <xsl:template match="hidden[not(ancestor::list)]"> <tr> <td> <xsl:value-of select="@name" /> </td> <td> <input type="hidden" name="{@name}" value="{text()}" /> </td> </tr> </xsl:template> <xsl:template match="*[not(ancestor::list) and @obsfuscate='true']"> <tr> <td> </td> <td> <input type="hidden" name="{@name}" value="{text()}" /> </td> </tr> </xsl:template> <xsl:template match="*[not(ancestor::list) and @display='true']"> <tr> <td> <xsl:value-of select="@name" /> </td> <td> <xsl:value-of select="text()" /><input type="hidden" name="{@name}" value="{text()}" /> </td> </tr> </xsl:template> <xsl:template match="image[not(ancestor::list) and not(@obsfuscate) and not(@display)]"> <tr> <td> <xsl:value-of select="@name" /> </td> <td> <xsl:if test="@error"> <input class="error {@verifier} {@required}" name="{@name}" type="file" onchange="showLocalImage(this.value)" value="{text()}" /> <div id="imagepreview"><img src="Images/{text()}" /></div> <div class="error"> <xsl:value-of select="@error" /> </div> </xsl:if> <xsl:if test="not(@error)"> <input class="{@verifier} {@required}" name="{@name}" type="file" onchange="showLocalImage(this.value)" value="{text()}" /> <div id="imagepreview"><img src="Images/{text()}" /></div> </xsl:if> </td> </tr> </xsl:template> <xsl:template match="file[not(ancestor::list) and not(@obsfuscate)]"> <tr> <td> <xsl:value-of select="@name" /> </td> <td> <xsl:if test="@error"> <input class="error {@verifier} {@required}" name="{@name}" type="file" value="{text()}" /> <div class="error"> <xsl:value-of select="@error" /> </div> </xsl:if> <xsl:if test="not(@error)"> <input class="{@verifier} {@required}" name="{@name}" type="file" value="{text()}" /> </xsl:if> </td> </tr> </xsl:template> <xsl:template match="password[not(ancestor::list) and not(@display)]"> <tr> <td> <xsl:value-of select="@name" /> </td> <td> <xsl:if test="@error"> <input class="error {@verifier} {@required}" type="password" name="{@name}" value="{text()}" /> <div class="error"> <xsl:value-of select="@error" /> </div> </xsl:if> <xsl:if test="not(@error)"> <input class="{@verifier} {@required}" type="password" name="{@name}" value="{text()}" /> </xsl:if> </td> </tr> </xsl:template> <xsl:template match="discriminator[not(ancestor::list)]"> <table border="0"> <tr> <td> <xsl:value-of select="@name" /> </td> <td> <xsl:apply-templates select="enumerator[@position='opOne']" /> </td> <td> <xsl:apply-templates select="enumerator[@position='op']" /> </td> <td> <xsl:apply-templates select="nakedstring" /> </td> </tr> </table> </xsl:template> <xsl:template match="action"> <input type="submit" value="{@value}" name="{@name}" /> </xsl:template> <xsl:template match="nakedstring"> <input type="text" name="{@name}" value="{text()}" /> </xsl:template> <xsl:template match="enumerator[not(ancestor::list)]"> <select name="{@name}" size="1"> <xsl:apply-templates select="option" /> </select> </xsl:template> <xsl:template match="enumeration[not(ancestor::list)]"> <tr> <td> <xsl:value-of select="@name" /> </td> <td> <select name="{@name}" size="1"> <xsl:apply-templates select="option" /> </select> </td> </tr> </xsl:template> <xsl:template match="option[not(ancestor::list)]"> <option value="{@value}"><xsl:value-of select="text()" /></option> </xsl:template> <xsl:template match="instant[not(ancestor::list) and not(@obsfuscate) and not(@display)]"> <tr> <td> <xsl:value-of select="@name" /> </td> <td> <xsl:if test="@error"> <script type="text/javascript">DateInput('<xsl:value-of select="@name" />', true, 'YYYY-MM-DD HH:NN:SS', '<xsl:value-of select="text()" />');</script> <div class="error"> <xsl:value-of select="@error" /> </div> </xsl:if> <xsl:if test="not(@error)"> <script type="text/javascript">DateInput('<xsl:value-of select="@name" />', true, 'YYYY-MM-DD HH:NN:SS', '<xsl:value-of select="text()" />');</script> </xsl:if> </td> </tr> </xsl:template> <xsl:template match="block[not(ancestor::list) and not(@obsfuscate) and not(@display)]"> <tr> <td> <xsl:value-of select="@name" /> </td> <td> <xsl:if test="@error"> <textarea class="error {@verifier} {@required}" id="elm1" name="{@name}" rows="15" cols="80" style="width: 100%"><xsl:value-of disable-output-escaping="no" select="text()" /><xsl:text> </xsl:text></textarea> <div class="error"> <xsl:value-of select="@error" /> </div> </xsl:if> <xsl:if test="not(@error)"> <textarea class="{@verifier} {@required}" id="elm1" name="{@name}" rows="15" cols="80" style="width: 100%"><xsl:value-of disable-output-escaping="no" select="text()" /><xsl:text> </xsl:text></textarea> </xsl:if> </td> </tr> </xsl:template> <xsl:template match="location[not(ancestor::list)]"> <tr> <td> <xsl:value-of select="@name" /> </td> <td> <xsl:if test="@error"> <div class="error"> <xsl:value-of select="@error" /> <script type="text/javascript">LocationInput('<xsl:value-of select="@name"/>', '<xsl:value-of select="text()"/>');</script> </div> </xsl:if> <xsl:if test="not(@error)"> <script type="text/javascript">LocationInput('<xsl:value-of select="@name"/>', '<xsl:value-of select="text()"/>');</script> </xsl:if> </td> </tr> </xsl:template> <xsl:template match="verifiers"> <script type="text/javascript" language="javascript" src="Datalus/Javascript/Verifiers/verifierCommon.js"> dummy(); </script> <xsl:for-each select="verifier"> <script type="text/javascript" language="javascript" src="Datalus/Javascript/Verifiers/{@file}"> dummy(); </script> </xsl:for-each> </xsl:template> <xsl:template match="comments"> <div class="object"> <div id="object_header">Comments</div> <div id="padded"> <xsl:for-each select="comment"> <div class="comment"> <table> <tr> <td> <div class="subject"> <xsl:value-of select="@subject"/> </div> </td> </tr> <tr> <td><xsl:value-of disable-output-escaping="yes" select="text()"/></td> </tr> <tr> <td> <div class="tagline"> Posted by: <xsl:value-of select="@handle"/> at <xsl:value-of select="@creationdate"/> </div> </td> </tr> </table> </div> </xsl:for-each> <h3>Add a comment</h3> <table> <form method="post" action="addComment.php" name="comments" onsubmit="return allowSubmit();"> <tr> <td> <label for="openidhandle">OpenID Handle</label> </td> <td> <input class="required" type="text" name="openidhandle" /> </td> </tr> <tr> <td> <label for="subject">Subject</label> </td> <td> <input class="required" type="text" name="subject" /> </td> </tr> <tr> <td> <label for="body">Body</label> </td> <td> <textarea name="body" rows="15" cols="80" style="width: 100%">blah</textarea> </td> </tr> <tr> <td> <input name="type" type="hidden" value="{@type}" /> <input name="id" type="hidden" value="{@id}" /> <input name="clear" type="reset" value="Clear" /> </td> <td> <input type="submit" value="Submit" name="submit" /> </td> </tr> </form> </table> </div> </div> </xsl:template> </xsl:stylesheet>