[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
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>
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|