xsl-list
[Top] [All Lists]

Problem with Variables

2004-02-02 07:38:31
I am writing a stylesheet which makes a conversion of a date. ie:
1.3.2003 should become 2003.03.01
 
This is my XML Document (truncated), which contains the date
(dd.mm.yyyy)
 
<add-attr attr-name="mozDateChangeState">
    <value type="string">16.2.2003</value>
</add-attr>


And this is my Stylesheet which almost works:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:fo="http://www.w3.org/1999/XSL/Format";>
        <xsl:output indent="yes"/>
        <xsl:template match="@*|node()">
                <xsl:copy>
                        <xsl:apply-templates select="@*|node()"/>
                </xsl:copy>
        </xsl:template>
        <xsl:template
match="add-attr[(_at_)attr-name='mozDateChangeState']">
                <xsl:variable name="date" select="./value"/>
                <xsl:variable name="dd"
select="substring-before($date,'.')"/>
                <xsl:variable name="mmyy"
select="substring-after($date,'.')"/>
                <xsl:variable name="mm"
select="substring-before($mmyy,'.')"/>
                <xsl:variable name="yyyy"
select="substring-after($mmyy,'.')"/>
                <xsl:choose>
                        <xsl:when test="number(string-length($dd) =
1)">
                                <xsl:variable name="ddn"
select="concat('0',$dd)"/>
                        </xsl:when>
                        <xsl:otherwise>
                                <xsl:variable name="ddn" select="$dd"/>
                        </xsl:otherwise>
                </xsl:choose>
                <xsl:choose>
                        <xsl:when test="number(string-length($mm) =
1)">
                                <xsl:variable name="mmn"
select="concat('0',$mm)"/>
                        </xsl:when>
                        <xsl:otherwise>
                                <xsl:variable name="mmn" select="$mm"/>
                        </xsl:otherwise>
                </xsl:choose>
                <add-attr attr-name="mozDateChangeState">
                        <value type="string">
                                <xsl:value-of
select="concat($yyyy,'.',$mmn,'.',$ddn)"/>
                        </value>
                </add-attr>
        </xsl:template>
</xsl:stylesheet>

Everything does work with one exception. Every variable is filled
correctly, but not the variables ddn and mmn, although the xsl:choose
does work correctly. I think its just something I do not consider.
Any hint?
Thank you in advance,
Gerald

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>