Wrox Programmer Forums
Go Back   Wrox Programmer Forums > XML > XSLT
|
XSLT General questions and answers about XSLT. For issues strictly specific to the book XSLT 1.1 Programmers Reference, please post to that forum instead.
Welcome to the p2p.wrox.com Forums.

You are currently viewing the XSLT section of the Wrox Programmer to Programmer discussions. This is a community of software programmers and website developers including Wrox book authors and readers. New member registration was closed in 2019. New posts were shut off and the site was archived into this static format as of October 1, 2020. If you require technical support for a Wrox book please contact http://hub.wiley.com
 
Old January 11th, 2012, 06:13 PM
Registered User
 
Join Date: Jan 2012
Posts: 8
Thanks: 0
Thanked 0 Times in 0 Posts
Default form builder with xslt

HI everybody,

I have this:

XML
Code:
<?xml version="1.0" encoding="utf-8" ?>

<FORM ID="1" Formtitle="Form Builder">
  <FIELDS>
    <!--Label Form-->
    <FIELDSET Legend ="Form for contact" >
      <PAGE title="Page Title" id="page_1">
      <!--end label-->
      <Field type ="formTitle1"  Label ="Title"/>      
      <Button type ="Button" Label ="btnSave" Text="Save" Required ="0"/>

        <!--TEXTFIELD EMAIL-->
        <FIELD type="TextBox" label="Email:" required="true">
          <PROPERTIES>
            <PROPERTY name="ID">EMAIL_ADRESS</PROPERTY>
          </PROPERTIES>
        </FIELD>
        <!--TEXTFIELD EMAIL-->       
        <!--TEXTFIELD FIRST NAME-->
        <FIELD type="TextBox" label="First Name:" required="true">
          <PROPERTIES>
            <PROPERTY name="ID">FIRST_NAME</PROPERTY>
          </PROPERTIES>
        </FIELD>
      <!--END TEXTFIELD FIRST NAME-->     
      <!--TextField lastname-->
      <FIELD type="TextBox" label="Last Name:" required="true">
        <PROPERTIES>
          <PROPERTY name="ID">LAST_NAME</PROPERTY>
        </PROPERTIES>
      </FIELD>
      <!--END-->      
      <!--TextArea description-->
      <FIELD type="TextBox" label="Description:">
        <PROPERTIES>
          <PROPERTY name="ID">DESCRIPTION</PROPERTY>
          <PROPERTY name="TextMode">MultiLine</PROPERTY>
          <PROPERTY name="Cols">40</PROPERTY>
          <PROPERTY name="Rows">4</PROPERTY>
        </PROPERTIES>
      </FIELD>
      <!--End description-->     
      <!--RadioButtons-->
        <FIELD Type="RadioButtonList" label="Gender">
          <PROPERTIES>
            <PROPERTY name="ID">IS_GENDER</PROPERTY>
            <PROPERTY name="RepeatColumns">1</PROPERTY>
            <PROPERTY name="RepeatDirection">Vertical</PROPERTY>
            <PROPERTY name="RepeatLayout">Table</PROPERTY>
            <PROPERTY name="TextAlign">Right</PROPERTY>                    
          </PROPERTIES>
          <LISTITEM value ="1">Female</LISTITEM>
          <LISTITEM value ="0">Man</LISTITEM>          
        </FIELD>      
      <!--DropDownBox1-->
      <FIELD type="DropDownList" id="DropDownList1" label="testDrop">
        <OPTION value="1">Niels, Engelen</OPTION>
        <OPTION value="2">Marilyn, VosSavant</OPTION>
      </FIELD>
      <!-- creating select box Test -->
      <FIELD type="DropDownList" label="Title:">
        <PROPERTIES>
          <PROPERTY name="ID">TITLE</PROPERTY>
        </PROPERTIES>
        <LISTITEMS>
          <LISTITEM value="">HAllO1</LISTITEM>
          <LISTITEM value="1">HALLO2</LISTITEM>
          <LISTITEM value="2">HALLO3</LISTITEM>
          <LISTITEM value="3">HALLO4</LISTITEM>
          <LISTITEM value="4">HALLO5</LISTITEM>
        </LISTITEMS>
      </FIELD>
      </PAGE>
      </FIELDSET>   
  </FIELDS> 
</FORM>
and xslt:

Code:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="html"/>
  <xsl:template match="/">
    <xsl:param name="pageid"/>
    <html>
      <body>
        <h1>
          <xsl:value-of select="@Formtitle"/>
        </h1>
        
        
        <!--TEST-->

        <!-- start form page -->
        <table cellpadding="0" cellspacing="5">

          <!-- set title of the current page -->
          <tr>
            <td colspan="3" align="center" style="font-size:25px">
              <xsl:value-of select="FORM/FIELDS/PAGE[@id=$pageid]/@title" />
            </td>
          </tr>
          <tr>
            <td colspan="3" style="height:20px"></td>
          </tr>

          <!-- iterate through page fields -->
          <xsl:for-each select="FORM/FIELDS/PAGE[@id=$pageid]/FIELDS/FIELD">

            <xsl:element name="tr">

              <xsl:attribute name="id">
                TR_<xsl:value-of select="PROPERTIES/PROPERTY[@name='ID']"></xsl:value-of>
              </xsl:attribute>

              <!-- hide the row -->
              <xsl:if test="@display='none'">
                <xsl:attribute name="style">display:none;</xsl:attribute>
              </xsl:if>

              <xsl:choose>

                <!-- html control -->
                <xsl:when test="@type='HTML'">
                  <td colspan="3">
                    &lt;!-- #include file="<xsl:value-of select="@src"></xsl:value-of>" --&gt;
                  </td>
                </xsl:when>


                <!-- other controls -->
                <xsl:otherwise>

                  <!-- field label column -->
                  <td valign="top">
                    <xsl:value-of select="@label" />
                  </td>

                  <!-- field column -->
                  <td>

                    <!-- field element -->
                    <xsl:element name="{@type}">
                      <xsl:attribute name="runat">server</xsl:attribute>
                      <xsl:for-each select="./PROPERTIES/PROPERTY">
                        <xsl:attribute name="{@name}">
                          <xsl:value-of select="current()"></xsl:value-of>
                        </xsl:attribute>
                      </xsl:for-each>
                      <xsl:for-each select="./LISTITEMS/LISTITEM">
                        <ListItem value="{@value}">
                          <xsl:value-of select="current()"></xsl:value-of>
                        </ListItem>
                      </xsl:for-each>
                    </xsl:element>

                  </td>

                  <!-- validation message column -->
                  <td>
                    <xsl:if test="@required='true'">
                      <RequiredFieldValidator ErrorMessage="Required" runat="server" ControlToValidate="{PROPERTIES/PROPERTY[@name='ID']}" />
                    </xsl:if>

                    <xsl:if test="@validation='Date'">
                      <CompareValidator ErrorMessage="Dates Only" runat="server" Operator="DataTypeCheck" Type="Date" ControlToValidate="{PROPERTIES/PROPERTY[@name='ID']}" />
                    </xsl:if>

                    <xsl:if test="@validation='Number'">
                      <CompareValidator ErrorMessage="Numbers Only" runat="server" Operator="DataTypeCheck" Type="Integer" ControlToValidate="{PROPERTIES/PROPERTY[@name='ID']}" />
                    </xsl:if>

                    <xsl:if test="@validation='Currency'">
                      <CompareValidator ErrorMessage="Currency Only" runat="server" Operator="DataTypeCheck" Type="Currency" ControlToValidate="{PROPERTIES/PROPERTY[@name='ID']}" />
                    </xsl:if>
                  </td>
                </xsl:otherwise>

              </xsl:choose>
            </xsl:element>

          </xsl:for-each>
        </table>

        <!--END TEST-->
        
        
        
        <form id="1" action="myurl.com">
          <fieldset>
            <legend>
              <xsl:value-of select="Fields/Fieldset/@Legend"/>
            </legend>
           
            <!--TextFieldAchternaam-->
            <xsl:for-each select="Fields/Fieldset/Field">
              <xsl:if test="@Type = 'Text'">
                <xsl:if test="@Required='1'">
                  <label>
                    <xsl:value-of select="@Label"/>
                  </label>
                  <br/>
                  <input type="text" name="{@FieldName}" class="jqueryValidate"/>
                </xsl:if>
                <xsl:if test="@Required='0'">
                  <br/>

                  <!--TextFieldVoornaam-->
                  <label>
                    <xsl:value-of select="@Label1"/>                    
                  </label>
                  <br/>
                  <input type="text" name="{@FieldName}" class ="jqueryValidate"/>
                </xsl:if>
              </xsl:if>

                <xsl:if test="@Required='0'">                  
                  <xsl:for-each select="Option">
                    <label>
                      <xsl:value-of select="Label"/>
                      
                    </label>
                    <input type="text" name="Field2"/>
                  </xsl:for-each>
                </xsl:if>
                <br/>

                <xsl:if test="@Type = 'Radio'">
                  <xsl:if test="@Required='1'">
                    <label>
                      <xsl:value-of select="@Label"/>
                    </label>
                    <input type="radio" name="{@FieldName}" class="jqueryValidate"/>
                    <br/>
                  </xsl:if>
                  <br/>

                  <!--RadioButtonGeslacht-->
                  <xsl:if test="@Required='0'">
                    <label>
                      <xsl:value-of select="@Label"/>
                    </label>
                    <xsl:for-each select="Option">
                      <label>
                        <xsl:value-of select="@Text"/>
                      </label>
                      <input type="radio" name="Field4" Value="1"/>
                    </xsl:for-each>
                  </xsl:if>
                  <br/>

                  <!--DropDownList1-->
                  <xsl:if test="@Required='0'">
                    <label>
                      <xsl:value-of select="@DropDownList1"/>                      
                    </label>
                    <xsl:for-each select="Option">
                      <input type="DropDownList" name="DropDownList1"/>
                    </xsl:for-each>
                  </xsl:if>
                  <br/>
                
                  <!--DropDownList2-->
                  <xsl:if test="@Required='0'">
                    <label>
                      <xsl:value-of select="@DropDownList"/>
                    </label>
                    <xsl:for-each select="@PROPERTIES/PROPERTY">
                      <xsl:for-each select="./LISTITEMS/LISTITEM">
                      
                      <input type="DropDownList" name="ID"/>
                      </xsl:for-each>
                    </xsl:for-each>
                  </xsl:if>
                  <br/>


                  <!--Button Send-->
                  <xsl:if test="@Required='0'">
                    <label>
                      <xsl:value-of select="@Text"/>
                    </label>
                    <xsl:for-each select="@PROPERTIES/PROPERTY">
                      
                      <input type="button" name="Button1"  Select="@Label"/>
                    </xsl:for-each>
                  </xsl:if>
                  <br/>
                 
                  
                  <!--Validation Form-->

                </xsl:if>
              </xsl:for-each>          
          </fieldset>
        </form>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>
But I dont see the form contrlols.

thx for helping!!
 
Old January 23rd, 2012, 12:30 PM
joefawcett's Avatar
Wrox Author
 
Join Date: Jun 2003
Posts: 3,074
Thanks: 1
Thanked 38 Times in 37 Posts
Default

Instead of:
Code:
FORM/FIELDS/PAGE[@id=$pageid]
shouldn't it be:
Code:
FORM/FIELDS/FIELDSET/PAGE[@id=$pageid]
__________________
Joe
http://joe.fawcett.name/





Similar Threads
Thread Thread Starter Forum Replies Last Post
XSLT for parsing XHTML Form shahbhat XSLT 6 August 26th, 2008 06:22 PM
Form on XSLT Page ALG4 XSLT 2 June 15th, 2007 12:10 PM
C++ Builder 6 - Contolling the Main Form rowin C++ Programming 0 January 30th, 2006 08:30 AM
How to Query XML Data from XSLT Form kwilliams XSLT 1 December 3rd, 2005 06:14 AM
HELP ME PLEASE!!! XML to XSLT FORM GEN elysio XSLT 1 November 15th, 2003 05:37 PM





Powered by vBulletin®
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Copyright (c) 2020 John Wiley & Sons, Inc.