Hi,
This is a theoretical bit of XSL code which I need a
practical version of:
All the variables are passed as parameters to the stylesheet.
<xsl:for-each select="//$record-type">
<xsl:sort select="$sort-by" order="$sort-order" />
<xsl:if test="$lh-operator $operand $rh-operator">
<tr>
<xsl:for-each select="*">
<td><xsl:value-of select="." /></td>
</xsl:for-each>
</tr>
</xsl:if>
</xsl:for-each>
Any ideas? Is it possible? Or do I need to use this basic
construct multiple
times using <xsl:if> for each variable and the correct names
of nodes and
operands. (The number of permutations is massive!)
You can create a template
<xsl:template name="comparison">
<xsl:param name="operator"/>
<xsl:param name="lh"/>
<xsl:param name="rh"/>
<xsl:choose>
<xsl:when test="$operator '='">
<xsl:value-of select="$lh = $rh"/>
</xsl:when>
...
</xsl:choose>
</xsl:template>
that contains the operator functionality and use it with
<xsl:variable name="result">
<xsl:call-template name="comparison">
<xsl:with-param name="operator" select="$operand"/>
<xsl:with-param name="lh" select="$lh-operator"/>
<xsl:with-param name="rh" select="$rh-operator"/>
</xsl:call-template>
</xsl:variable>
<xsl:if test="$result = 'true'">
...
See FXSL <http://fxsl.sourceforge.net/>.
Is there a way of selecting nodes which have the name
$some-variable using an
XPath expression?
e.g. <xsl:for-each select="//$some-variable">
would, in theory (though not in practice - I've tried it!),
select all the
nodes whose name is equal to whatever the value of $some-variable is.
<xsl:for-each select="//*[local-name() = $some-variable]">
Cheers,
Jarno - Velvet Acid Christ: Futile (Resisted mix by Funker Vogt)
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list