XML Vol 2 Issue 3 - pg.38 
Converting Your Client/Server Applications To The Internet, Victor Rasputnis & Anatole Tartakovsky

Listing  1    ­
...<COLUMNS>
<column name="id"  javatype="Int" xsltype="number" dbtype="int" updatekey="yes" updatable="yes" colId="1"/>...
</COLUMNS>
<QUERY  Method="allupdatable" Table="customer"> <SELECT>SELECT id, fname, lname, address, city, state, zip, phone, company_name FROM customer </SELECT></QUERY>
<PRESENTATION ><LAYOUT>Grid</LAYOUT>...
<LAYER name="Header0"><STYLE POSITION="relative" TOP="0" HEIGHT="18px" />
<STATICTEXT><NAME>fname_t</NAME><X>4px</X><Y>2px</Y><W>98px
</W> <H>15px</H> <ALIGN>center</ALIGN><WEIGHT>bold</WEIGHT><SIZE>8pt</SIZE>
<FONT>&quot;MS Sans Serif&quot;</FONT><VALUE>First Name</VALUE> </STATICTEXT>
...<DATAFIELD><NAME>state</NAME><TABORDER>0</TABORDER><X>576px
</X> <Y>2px</Y><W>75px</W><H>16px</H> <ALIGN>left</ALIGN><SIZE>8pt</SIZE>
<FONT>&quot;MS Sans Serif&quot;</FONT><VALUE>state</VALUE>
<LOOKUP><NAME>d_dddw_state</NAME><CASE>any</CASE><EDITABLE>no
</EDITABLE>
<DATA>state</DATA><DISPLAY>state_id</DISPLAY></LOOKUP>
<CONTROLTYPE>lookup</CONTROLTYPE><LABEL>State</LABEL>
</DATAFIELD>...</LAYER></PRESENTATION>




Listing  2
<xsl:template match="SELECT">
  public PreparedStatement getPreparedStatement(Connection conn) throws Exception  {
   PreparedStatement st = null;
   String sSQL = "<xsl:value-of select="." disable-output-escaping="yes"/>";
   st=conn.prepareStatement(sSQL);
   return st;  }
public ResultSet doRetrieve(PreparedStatement st,ServletParameters parms) throws Exception{
   java.sql.ResultSet rs=null;
   rs = st.executeQuery();
   return rs;   }
</xsl:template>
<xsl:template match="COLUMNS" ">
public String getXML() throws Exception {
   StringBuffer sb = new StringBuffer();
   rowId++;
   sb.append("&lt;Detail id=\""+rowId+"\">");
  <xsl:for-each select="column">
   sb.append("&lt;<xsl:value-of select="@name"/>>"+<xsl:value-of select="@name"/>+"&lt;/<xsl:value-of select="@name"/>>");
   sb.append("&lt;/Detail">");
   return sb.toString(); };
</xsl:template>



Listing  3
public PreparedStatement getPreparedStatement(Connection conn) throws Exception  {
   PreparedStatement st = null;
   String sSQL = SELECT id, fname, lname, address, city, state, zip, phone, company_name FROM  customer ";
   st=conn.prepareStatement(sSQL);
   return st;   }
public ResultSet doRetrieve(PreparedStatement st,ServletParameters parms) throws Exception{
  java.sql.ResultSet rs=null;
    rs = st.executeQuery();
   return rs;  }
public String getXML() throws Exception {
   StringBuffer sb = new StringBuffer();
   rowId++;
   sb.append("<Detail id=\""+rowId+"\">");
   sb.append("<id>"+id+"</id>");...//other columns to follow
   sb.append("</Detail">");
   return sb.toString(); };



Listing  4
<DocumentRoot xmlns:dt="urn:schemas-microsoft-com:datatypes">
<Header id="3" />
<Detail status="Primary" id="4">  <id>102</id> <city>Rutherford</city>   <state>NJ</state>   <zip>07070</zip> <phone>2015558966</phone>
  <company_name>The Power Group</company_name>
  <address>3114 Pioneer Avenue</address>
  <fname>Michaels</fname> <lname>Devlin</lname>
  </Detail>...</DocumentRoot>



Listing  5
<xsl:template match="Detail">
<xsl:if test=" @status='Primary'">
<DIV name="Detail" id="{@id}" onclick="customerList.setRow
( {@id})"  style=" HEIGHT:20px; POSITION:relative;">
<SPAN name="fname" id="fname_{@id}" STYLE="POSITION:absolute; LEFT:4px;TOP:2px; WIDTH:98px;HEIGHT:16px;FONT:8pt&quot;MS Sans Serif&quot;,sans-serif;TEXT-ALIGN:left; overflow:hidden; "><xsl:value-of select="fname" /></SPAN>
<SPAN name="lname" id="lname_{@id}" STYLE="POSITION:absolute;LEFT:102px;TOP:2px; WIDTH:128px; HEIGHT:16px;FONT:8pt&quot;MS Sans Serif&quot;,sans-serif;TEXT-ALIGN:left; overflow:hidden; "><xsl:value-of select="lname" /></SPAN>...</xsl:template>



Listing  6
  <xsl:namespace-alias stylesheet-prefix="alt" result-prefix="xsl"/>
<xsl:whentest="CONTROL='radiobuttons'">
<SPAN><xsl:attribute name="STYLE"><xsl:call-template name="CONTROLSTYLE"/></xsl:attribute>
<xsl:for-each select="OPTIONS/OPTION">
  <INPUT name="{../../NAME}_{{@id}}" type="radio" value="{@value}" onclick="{//DocumentRoot/@javaclass}.itemChanged( {{@id}}, '{../../NAME}, '{@value}'')" id="{../../NAME}_{{@id}}_{position()}">
<xsl:iftest="TABORDER='0'">  <xsl:attribute name="disabled"></xsl:attribute></xsl:if>
<alt:iftest="{../../NAME}='{@value}'"> <alt:attribute name="CHECKED"/></alt:if>
</INPUT>
<LABEL for="{../../NAME}_{{@id}}_{position()}">
<xsl:value-of select="."/></LABEL>
</xsl:for-each></SPAN></xsl:when>



Listing  7
<SPAN STYLE="POSITION:absolute;LEFT:33px;TOP:1px;WIDTH:144px;HEIGHT:19px; FONT:10pt"Arial",sans-serif;TEXT-ALIGN:left; overflow:hidden; ">
<INPUT name="gender_{@id}" type="radio" value="M" onclick="sample.itemChanged( {@id}, 'gender', 'M' )" id= "gender_{@id}_1"><xsl:iftest="gender='M'">  <xsl:attribute name="CHECKED" />   </xsl:if>  </INPUT>  <LABEL for="gender_{@id}_1">Male:</LABEL>
<INPUT name="gender_{@id}" type="radio" value="F" onclick="sample.itemChanged( {@id}, 'gender', 'F')" id= "gender_{@id}_2"><xsl:iftest="gender='F'"><xsl:attribute name="CHECKED" /></xsl:if>  </INPUT> <LABEL for="gender_{@id}_2">Female:</LABEL></SPAN>



Listing  8
<SPAN STYLE="POSITION:absolute; LEFT:33px;TOP:1px;WIDTH:144px;HEIGHT:19px; FONT:10pt"Arial", sans-serif; TEXT-ALIGN:left; overflow:hidden; ">
<INPUT name="gender_1" type="radio" value="M" onclick="sample.itemChanged( 1, 'gender', 'M' )" id= "gender_1_1"><xsl:iftest="gender='M'">  <xsl:attribute name="CHECKED" />   </xsl:if></INPUT>  <LABEL for="gender_1_1">Male:</LABEL>
<INPUT name="gender_1" type="radio" value="F" onclick="sample.itemChanged( 1, 'gender', 'F')" id= "gender_1_2"><xsl:iftest="gender='F'"><xsl:attribute name="CHECKED" /></xsl:if>  </INPUT> <LABEL for="gender_1_2">Female:</LABEL></SPAN>



Listing  9
function loadLookup(url) {
  if ((allLookups[url]!=null)   return "";  // Avoid reloading existing data
  allLookups[url] = new  ActiveXObject("MSXML.DOMDocument");
  allLookups[url].async = false;
  allLookups[url].load(url);
  if (allLookups[url].xml != "")   return "";
  else  return "Error loading \"" + url + "\"" ;   }



Listing  10
function showLookup(nodeToTranslate, ddUrl, display_column) {
  // Get key as text of the first item in nodeList
  var key = nodeToTranslate.item(0).text;
  err = loadLookup(ddUrl);
  if (err!="")    return key;
  rootElement=allLookups[ddUrl].documentElement;
   var lookupRow = rootElement.selectSingleNode(
     "key[@id='" + key + "']");
   if (lookupRow == null)  s return key;
   return lookupRow.selectSingleNode( "selection[
        @name='" + display_column+"']").text;}



Listing  11
function Lookup () { var this.allLookups = new Array();}
Lookup.prototype.showLookup=showLookup; Lookup.prototype.loadLookup=loadLookup;
function Lookup () { var this.allLookups = new Array();}
Lookup.prototype.showLookup=showLookup; Lookup.prototype.loadLookup=loadLookup;
function loadLookup(url) {
  if ((this.allLookups[url]!=null)   return "";  // Avoid reloading existing data
  this.allLookups[url] = new ActiveXObject("MSXML.DOMDocument");
  this.allLookups[url].async = false;  this.allLookups[url].load(url);
  if (this.allLookups[url].xml != "")   return "";    else  return "Error loading \"" + url + "\"" ;   }
function showLookup(column, ddUrl, display_column) {
  var key = column.item(0).text;  // Get key as text of the first item in nodeList
  err = this.loadLookup(ddUrl);   if (err!="")    return key;
  rootElement= this.allLookups[ddUrl].documentElement;
   var lookupRow = rootElement.selectSingleNode(  "key[@id='" + key + "']");
   if (lookupRow == null)   return key;
   return lookupRow.selectSingleNode( "selection[@name='" + display_column+"']").text;}