Hi *,

I've discovered a next problem:

XML
<?xml version="1.0" encoding="UTF-8"?>
<properties>
        <component>
                <property name="bgcolor">#000000</property>
                <property name="width">180</property>
                <property name="height">15</property>
        </component>
</properties>

XSL
<?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" version="1.0" encoding="UTF-8"
indent="yes"/>
        
        <xsl:template match="properties">
                <xsl:variable name="var" select="component"/>
                <xsl:apply-templates mode="exe" select="$var">
                        <xsl:with-param name="param1">
                                <xsl:value-of
select="$var/property[@name='bgcolor']"/>
                        </xsl:with-param>
                </xsl:apply-templates>
        </xsl:template>
        
        <xsl:template mode="exe" match="node()">
                <xsl:param name="param1"/>
                property:<xsl:value-of select="property[@name='bgcolor']"/>
        </xsl:template>
</xsl:stylesheet>

It that case the template "exe" will not be called.
To get it called I have not use $var/property.... in <xsl:with-param. So
if I write:
                <xsl:apply-templates mode="exe" select="$var">
                        <xsl:with-param name="param1">
                                <xsl:value-of
select="component/property[@name='bgcolor']"/>
                        </xsl:with-param>
                </xsl:apply-templates>
the template will be called.

I found it strange. Btw "saxon" calls template in both cases.

regards

Dmitri

Reply via email to