[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Abstracting XSLT to generate multiple forms for the sa

Subject: Abstracting XSLT to generate multiple forms for the same data schema
From: "Johnathon Wright" <jw@xxxxxxxxxxxxx>
Date: Tue, 31 Jan 2006 11:29:16 -0600
xslt hidden input
I'm trying to make my life easier. This is something which invariables leaves it more complicated. Anyway, our web stores run off an XSLT / XML engine in PHP. It works well, but coding each of tables I needed for different data types (users, configurations, etc., etc.) was a mess... so I'm trying to abstract all that. The XML and XSLT for one thing I've already got working is below.

My question is this: I now want to create a template that looks at the data types, creates a row for displaying such data, and displays it all. But that would require loops running through seperate nodes and I totally don't understand how to do that. Any comments about or help with the idea or the implementation would be appreciated.

Johnathon

<web_document>
<web_store>
<store_name>Test Site</store_name>
<domain>testsite.com</domain>
<checkout_url>http://www.testsite.com/</checkout_url>
</web_store>
<template>
<public_template_name>test</public_template_name>
<seller_template_name>llf</seller_template_name>
</template>
<environmental_variables>
<short_date>2006-01-31</short_date>
<long_date>Tuesday, January 31st, 2006</long_date>
<year>2006</year>
<visitor_session_id>27q6pucofq09dnej48kt2sd1q5</visitor_session_id>
<cart_id></cart_id>
</environmental_variables>
<request>
<display>manage</display>
<display_type>user</display_type>
<display_format>formatted_xml</display_format>
<PHPSESSID>27q6pucofq09dnej48kt2sd1q5</PHPSESSID>
</request>
<form_template>
<form_name>Add User</form_name>
<description>Please be certain about the type of user you are creating. Also, be aware that adding a duplicate customer will cause an unsightly error.</description>
<submit_details>
<display>manage</display>
<display_format>seller</display_format>
<display_type>user</display_type>
<action>add</action>
<action_type_a>user</action_type_a>
</submit_details>
<define_field>
<field_name>first_name</field_name>
<field_name_formatted>First Name</field_name_formatted>
<field_type>text</field_type>
<max_length>100</max_length>
</define_field>
<define_field>
<field_name>last_name</field_name>
<field_name_formatted>Last Name</field_name_formatted>
<field_type>text</field_type>
<max_length>40</max_length>
</define_field>
<define_field>
<field_name>username</field_name>
<field_name_formatted>e-mail Address</field_name_formatted>
<field_type>text</field_type>
<max_length>100</max_length>
</define_field>
<define_field>
<field_name>password</field_name>
<field_name_formatted>Password</field_name_formatted>
<field_type>password</field_type>
<max_length>40</max_length>
</define_field>
<define_field>
<field_name>seller_id</field_name>
<field_name_formatted>Seller</field_name_formatted>
<field_type>select</field_type>
<options>
<option>
<name>a Smarter Buy</name>
<value>1</value>
</option>
</options>
</define_field>
<define_field>
<field_name>user_type</field_name>
<field_name_formatted>User Type</field_name_formatted>
<field_type>select</field_type>
<options>
<option>
<name>Customer</name>
<value>8</value>
</option>
<option>
<name>Seller</name>
<value>16</value>
</option>
<option>
<name>Administrator</name>
<value>32</value>
</option>
</options>
</define_field>
<define_field>
<field_name>opt_in</field_name>
<field_name_formatted>Mailing List</field_name_formatted>
<field_type>select</field_type>
<options>
<option>
<name>Yes - Receive all bulk emails</name>
<value>1</value>
</option>
<option>
<name>No - Do not received bulk emails</name>
<value>0</value>
</option>
</options>
</define_field>
<data_set> <data> <username>jw@xxxxxxxxxxxxx</username>
<first_name>Johnathon</first_name>
<last_name>Wright</last_name>
<user_type>032</user_type>
<last_login>2006-01-31 10:43:32</last_login>
<opt_in>0</opt_in>
</data> <data> <username>lacy@xxxxxxxxxxxxx</username>
<first_name>Lacy</first_name>
<last_name>Tylock</last_name>
<user_type>032</user_type>
<last_login>2006-01-25 15:59:16</last_login>
<opt_in>0</opt_in>
</data> <data> <username>brian@xxxxxxxxxxxxx</username>
<first_name>Brian Leleux</first_name>
<last_name></last_name>
<user_type>008</user_type>
<last_login>0000-00-00 00:00:00</last_login>
<opt_in>1</opt_in>
</data> <data> <username>leslie@xxxxxxxxxxxxxxxxxxx</username>
<first_name>Leslie</first_name>
<last_name>Leonpacher</last_name>
<user_type>016</user_type>
<last_login>0000-00-00 00:00:00</last_login>
<opt_in>0</opt_in>
</data> <data> <username>derek@xxxxxxxxxxxxx</username>
<first_name>Derek</first_name>
<last_name>Hernandez</last_name>
<user_type>000</user_type>
<last_login>0000-00-00 00:00:00</last_login>
<opt_in>1</opt_in>
</data> <data> <username>kelly@xxxxxxxxxxxxx</username>
<first_name>Kelly</first_name>
<last_name>Fowler</last_name>
<user_type>016</user_type>
<last_login>0000-00-00 00:00:00</last_login>
<opt_in>1</opt_in>
</data> </data_set> </form_template>
</web_document>XSLT for the ADD DATA form, which is called by another template, user/add.xslt (which explains why the template isn't web_document):<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="form_template"><link href="/seller_templates/generic/basic.css" rel="stylesheet" type="text/css" /><div class="Main_Container"><h1><xsl:value-of select="form_name" /></h1><p><xsl:value-of select="description" /></p><form action="/" method="post"><input type="hidden" name="display" value="{submit_details/display}" /><input type="hidden" name="display_format" value="{submit_details/display_format}" /><input type="hidden" name="display_type" value="{submit_details/display_type}" /><input type="hidden" name="action" value="{submit_details/action}" /><input type="hidden" name="action_type_a" value="{submit_details/action_type_a}" /><input type="hidden" name="action_id_a1" value="{submit_details/action_id_a1}" /><input type="hidden" name="action_id_a2" value="{submit_details/action_id_a2}" /><xsl:if test="action_type_b"><input type="hidden" name="action_type_b" value="{submit_details/action_type_b}" /></xsl:if><xsl:if test="action_id_b1"><input type="hidden" name="action_id_b1" value="{submit_details/action_id_b1}" /></xsl:if><xsl:if test="action_id_b2"><input type="hidden" name="action_id_b2" value="{submit_details/action_id_b2}" /></xsl:if><table width="500" border="0" align="center" cellpadding="4" cellspacing="1"><xsl:for-each select="define_field"> <xsl:choose> <xsl:when test="field_type = 'text'"> <tr> <td align="right"><xsl:value-of select="field_name_formatted" /></td> <td align="left"><input type="text" name="{field_name}" value="{value}" /></td> </tr> </xsl:when> <xsl:when test="field_type = 'password'"> <tr> <td align="right"><xsl:value-of select="field_name_formatted" /></td> <td align="left"><input type="password" name="{field_name}" /></td> </tr> </xsl:when> <xsl:when test="field_type = 'select'"> <tr> <td align="right"><xsl:value-of select="field_name_formatted" /></td> <td align="left"> <select name="{field_name}"> <xsl:for-each select="options/option"> <option value="{value}"> <xsl:if test="selected"> <xsl:attribute name="selected">TRUE</xsl:attribute> </xsl:if> <xsl:value-of select="name" /> </option> </xsl:for-each> </select> </td> </tr> </xsl:when> <!-- SELECT BOX --> </xsl:choose></xsl:for-each> <tr> <td> </td> <td> <input type="submit" name="Submit" /> <xsl:for-each select="define_field"> <xsl:if test="field_type = 'hidden'"> <input type="hidden" name="{field_name}" value="{value}" /> </xsl:if> </xsl:for-each> </td> </tr> </table></form></div><!-- main container --></xsl:template></xsl:stylesheet>


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.