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>"MS Sans Serif"</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>"MS Sans Serif"</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("<Detail id=\""+rowId+"\">");
<xsl:for-each select="column">
sb.append("<<xsl:value-of select="@name"/>>"+<xsl:value-of
select="@name"/>+"</<xsl:value-of select="@name"/>>");
sb.append("</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"MS Sans Serif",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"MS Sans Serif",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;}