<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration ="yes"/>
<xsl:template name="element">
<xsl:variable name="name"><xsl:value-of select="struct/var[@name='name']/string"/></xsl:variable>
<xsl:choose>
<!-- TEXT FIELD -->
<xsl:when test="var[@name='type']/string='text'">
<textbox type="text">
<xsl:attribute name="id"><xsl:value-of select="var[@name='name']/string"/>[1]</xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="var[@name='selected']/string"/></xsl:attribute>
<!-- INSERT NODE ATTRIBUTES -->
<xsl:for-each select="var[@name='node-attribute']/array/struct">
<xsl:attribute name="{var[@name='name']/string}"><xsl:value-of select="var[@name='value']/string"/></xsl:attribute>
</xsl:for-each >
</textbox>
</xsl:when>
<!-- PASSWORD FIELD -->
<xsl:when test="var[@name='type']/string='password'">
<textbox type="password">
<xsl:attribute name="id"><xsl:value-of select="var[@name='name']/string"/>[1]</xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="var[@name='selected']/string"/></xsl:attribute>
<!-- INSERT NODE ATTRIBUTES -->
<xsl:for-each select="var[@name='node-attribute']/array/struct">
<xsl:attribute name="{var[@name='name']/string}"><xsl:value-of select="var[@name='value']/string"/></xsl:attribute>
</xsl:for-each >
</textbox>
</xsl:when>
<!-- DATE FIELD -->
<xsl:when test="var[@name='type']/string='date'">
<date>
<xsl:attribute name="id"><xsl:value-of select="var[@name='name']/string"/>[1]</xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="var[@name='selected']/string"/></xsl:attribute>
<!-- INSERT NODE ATTRIBUTES -->
<xsl:for-each select="var[@name='node-attribute']/array/struct">
<xsl:attribute name="{var[@name='name']/string}"><xsl:value-of select="var[@name='value']/string"/></xsl:attribute>
</xsl:for-each >
</date>
</xsl:when>
<!-- TIME FIELD -->
<xsl:when test="var[@name='type']/string='time'">
<time>
<xsl:attribute name="id"><xsl:value-of select="var[@name='name']/string"/>[1]</xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="var[@name='selected']/string"/></xsl:attribute>
<!-- INSERT NODE ATTRIBUTES -->
<xsl:for-each select="var[@name='node-attribute']/array/struct">
<xsl:attribute name="{var[@name='name']/string}"><xsl:value-of select="var[@name='value']/string"/></xsl:attribute>
</xsl:for-each >
</time>
</xsl:when>
<!-- TEXTBOX FIELD -->
<xsl:when test="var[@name='type']/string='textbox'">
<textboxmulti type="text" flex="1">
<xsl:attribute name="id"><xsl:value-of select="var[@name='name']/string"/>[1]</xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="var[@name='selected']/string"/></xsl:attribute>
<!-- INSERT NODE ATTRIBUTES -->
<xsl:for-each select="var[@name='node-attribute']/array/struct">
<xsl:attribute name="{var[@name='name']/string}"><xsl:value-of select="var[@name='value']/string"/></xsl:attribute>
</xsl:for-each >
</textboxmulti>
</xsl:when>
<!-- POPUP FIELD -->
<xsl:when test="var[@name='type']/string='popup'">
<xsl:variable name="id"><xsl:value-of select="var[@name='name']/string"/></xsl:variable>
<xsl:variable name="default"><xsl:value-of select="var[@name='selected']/string"/></xsl:variable>
<menulist id="{$id}">
<!-- INSERT NODE ATTRIBUTES -->
<xsl:for-each select="var[@name='node-attribute']/array/struct">
<xsl:attribute name="{var[@name='name']/string}"><xsl:value-of select="var[@name='value']/string"/></xsl:attribute>
</xsl:for-each >
<menupopup>
<!-- ITERATE OVER OPTIONS -->
<xsl:for-each select="var[@name='option']/array/struct">
<xsl:variable name="value"><xsl:value-of select="var[@name='value']/string"/></xsl:variable>
<xsl:variable name="label">
<xsl:choose>
<xsl:when test="var[@name='label']/string">
<xsl:value-of select="var[@name='label']/string"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$value"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<menuitem selected="false" value="{$value}" label="{$label}">
<xsl:attribute name="id">
<xsl:value-of select="$id"/>
<xsl:text>[</xsl:text><xsl:number format="0" count="var[@name='option']/array/struct"/>
<xsl:text>]</xsl:text>
</xsl:attribute>
<xsl:if test="$default=$value">
<xsl:attribute name="selected">true</xsl:attribute>
</xsl:if>
</menuitem>
</xsl:for-each>
</menupopup>
</menulist>
</xsl:when>
<!-- RADIO BUTTON FIELD -->
<xsl:when test="var[@name='type']/string='radio'">
<xsl:variable name="id"><xsl:value-of select="var[@name='name']/string"/></xsl:variable>
<xsl:variable name="default"><xsl:value-of select="var[@name='selected']/string"/></xsl:variable>
<radiogroup id="{$id}">
<!-- INSERT NODE ATTRIBUTES -->
<xsl:for-each select="var[@name='node-attribute']/array/struct">
<xsl:attribute name="{var[@name='name']/string}"><xsl:value-of select="var[@name='value']/string"/></xsl:attribute>
</xsl:for-each >
<!-- ITERATE OVER OPTIONS -->
<xsl:for-each select="var[@name='option']/array/struct">
<xsl:variable name="value"><xsl:value-of select="var[@name='value']/string"/></xsl:variable>
<xsl:variable name="label">
<xsl:choose>
<xsl:when test="var[@name='label']/string">
<xsl:value-of select="var[@name='label']/string"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$value"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<radio value="{$value}" label="{$label}" group="{$id}">
<xsl:attribute name="id">
<xsl:value-of select="$id"/>
<xsl:text>[</xsl:text><xsl:number format="0" count="var[@name='option']/array/struct"/>
<xsl:text>]</xsl:text>
</xsl:attribute>
<!-- flag selected value -->
<xsl:if test="$default=$value">
<xsl:attribute name="selected">true</xsl:attribute>
</xsl:if>
</radio>
</xsl:for-each>
</radiogroup>
</xsl:when>
<!-- LISTBOX FIELD -->
<xsl:when test="var[@name='type']/string='listbox'">
<xsl:variable name="id"><xsl:value-of select="var[@name='name']/string"/></xsl:variable>
<listbox seltype="multiple" id="{$id}">
<!-- INSERT NODE ATTRIBUTES -->
<xsl:for-each select="var[@name='node-attribute']/array/struct">
<xsl:attribute name="{var[@name='name']/string}"><xsl:value-of select="var[@name='value']/string"/></xsl:attribute>
</xsl:for-each >
<!-- ITERATE OVER OPTIONS -->
<xsl:for-each select="var[@name='option']/array/struct">
<xsl:variable name="value"><xsl:value-of select="var[@name='value']/string"/></xsl:variable>
<xsl:variable name="label"><xsl:value-of select="var[@name='label']/string"/></xsl:variable>
<listitem value="{$value}" label="{$label}">
<xsl:attribute name="id">
<xsl:value-of select="$id"/>
<xsl:text>[</xsl:text><xsl:number format="0" count="var[@name='option']/array/struct"/>
<xsl:text>]</xsl:text>
</xsl:attribute>
<!-- CAN HAVE MULTIPLE VALUES -->
<xsl:for-each select="../../../var[@name='selected']/array/string">
<xsl:if test=".=$value">
<xsl:attribute name="selected">true</xsl:attribute>
</xsl:if>
</xsl:for-each>
</listitem>
</xsl:for-each>
</listbox>
</xsl:when>
<!-- CHECKLIST FIELD -->
<xsl:when test="var[@name='type']/string='checklist'">
<xsl:variable name="id"><xsl:value-of select="var[@name='name']/string"/></xsl:variable>
<listbox seltype="multiple">
<xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute>
<!-- INSERT NODE ATTRIBUTES -->
<xsl:for-each select="var[@name='node-attribute']/array/struct">
<xsl:attribute name="{var[@name='name']/string}"><xsl:value-of select="var[@name='value']/string"/></xsl:attribute>
</xsl:for-each >
<!-- ITERATE OVER OPTIONS -->
<xsl:for-each select="var[@name='option']/array/struct">
<xsl:variable name="value"><xsl:value-of select="var[@name='value']/string"/></xsl:variable>
<xsl:variable name="label"><xsl:value-of select="var[@name='label']/string"/></xsl:variable>
<listitem type="checkbox" value="{$value}" label="{$label}">
<xsl:attribute name="id">
<xsl:value-of select="$id"/>
<xsl:text>[</xsl:text><xsl:number format="0" count="var[@name='option']/array/struct"/>
<xsl:text>]</xsl:text>
</xsl:attribute>
<!-- CAN HAVE MULTIPLE VALUES -->
<xsl:for-each select="../../../var[@name='selected']/array/string">
<xsl:if test=".=$value">
<xsl:attribute name="selected">true</xsl:attribute>
<xsl:attribute name="checked">true</xsl:attribute>
</xsl:if>
</xsl:for-each>
</listitem>
</xsl:for-each>
</listbox>
</xsl:when>
<!-- CHECKBOX FIELD -->
<xsl:when test="var[@name='type']/string='checkbox'">
<xsl:variable name="id"><xsl:value-of select="var[@name='name']/string"/></xsl:variable>
<vbox id="{$id}">
<!-- INSERT NODE ATTRIBUTES -->
<xsl:for-each select="var[@name='node-attribute']/array/struct">
<xsl:attribute name="{var[@name='name']/string}"><xsl:value-of select="var[@name='value']/string"/></xsl:attribute>
</xsl:for-each >
<!-- ITERATE OVER OPTIONS -->
<xsl:for-each select="var[@name='option']/array/struct">
<xsl:variable name="value"><xsl:value-of select="var[@name='value']/string"/></xsl:variable>
<xsl:variable name="label"><xsl:value-of select="var[@name='label']/string"/></xsl:variable>
<checkbox value="{$value}" label="{$label}">
<xsl:attribute name="id">
<xsl:value-of select="$id"/>
<xsl:text>[</xsl:text><xsl:number format="0" count="var[@name='option']/array/struct"/>
<xsl:text>]</xsl:text>
</xsl:attribute>
<!-- CAN HAVE MULTIPLE VALUES -->
<xsl:for-each select="../../../var[@name='selected']/array/string">
<xsl:if test=".=$value">
<xsl:attribute name="checked">true</xsl:attribute>
</xsl:if>
</xsl:for-each>
</checkbox>
</xsl:for-each>
</vbox>
</xsl:when>
<!-- UNKNOWN FIELD -->
<xsl:otherwise>
<label value="unknown Field"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
|