1.1 --- a/XSLForms/XSL/PrepareMacro.xsl Tue Oct 04 23:39:42 2005 +0000
1.2 +++ b/XSLForms/XSL/PrepareMacro.xsl Tue Oct 04 23:47:04 2005 +0000
1.3 @@ -79,6 +79,23 @@
1.4 </xsl:copy>
1.5 </xsl:template>
1.6
1.7 + <!-- Buttons whose state varies according to an attribute in a list of multiple choice elements. -->
1.8 +
1.9 + <xsl:template match="*[@template:attribute-list-button]">
1.10 + <xsl:variable name="field-attr" select="substring-before(@template:attribute-list-button, ',')"/>
1.11 + <xsl:variable name="field-set-attr" select="substring-after(@template:attribute-list-button, ',')"/>
1.12 + <xsl:copy>
1.13 + <!-- Remove attribute-button and replace name. -->
1.14 + <xsl:apply-templates select="@*[local-name() != 'attribute-button' and local-name() != 'name']"/>
1.15 + <xsl:attribute name="template:attribute"><xsl:value-of select="$field-attr"/></xsl:attribute>
1.16 + <xsl:attribute name="template:expr-attr"><xsl:value-of select="$field-set-attr"/></xsl:attribute>
1.17 + <xsl:attribute name="template:expr">@value-is-set</xsl:attribute>
1.18 + <xsl:attribute name="name">{template:this-attribute()}</xsl:attribute>
1.19 + <xsl:attribute name="value">{$this-value}</xsl:attribute>
1.20 + <xsl:apply-templates select="*|node()"/>
1.21 + </xsl:copy>
1.22 + </xsl:template>
1.23 +
1.24 <!-- Selectors. -->
1.25
1.26 <xsl:template match="*[@template:selector-field]">
1.27 @@ -186,6 +203,22 @@
1.28 </xsl:copy>
1.29 </xsl:template>
1.30
1.31 + <!-- Multiple choice elements. -->
1.32 +
1.33 + <xsl:template match="*[@template:multiple-choice-list-element]">
1.34 + <xsl:variable name="element" select="substring-before(@template:multiple-choice-list-element, ',')"/>
1.35 + <xsl:variable name="element-list-info" select="substring-after(@template:multiple-choice-list-element, ',')"/>
1.36 + <xsl:variable name="element-list-element" select="substring-before($element-list-info, ',')"/>
1.37 + <xsl:variable name="element-list-attr" select="substring-after($element-list-info, ',')"/>
1.38 + <xsl:copy>
1.39 + <!-- Remove multiple-choice-list-element. -->
1.40 + <xsl:apply-templates select="@*[local-name() != 'multiple-choice-list-value']"/>
1.41 + <xsl:attribute name="template:element"><xsl:value-of select="$element"/>,<xsl:value-of select="$element-list-element"/></xsl:attribute>
1.42 + <!-- The attribute is ignored - it is only useful in the schema and input processes. -->
1.43 + <xsl:apply-templates select="*|node()"/>
1.44 + </xsl:copy>
1.45 + </xsl:template>
1.46 +
1.47 <!-- Replicate unknown elements. -->
1.48
1.49 <xsl:template match="@*|node()">