everydaylearn
everydaylearn

Reputation: 143

XSLT division gives error

I am using XML Notepad (Microsoft) to perform an XSLT transform. Not sure what I am doing wrong. I need to perform a simple division calculation.

I am unable to get rid of this error: Unexpected token '60' in the expression. ...mber($latdeg))+(number($latmin)/ -->60<-- )+(number($latsec)/3600)

My XML:

<?xml version="1.0" encoding="utf-8"?>
<position>
<latitudeDegrees>38</latitudeDegrees>
<latitudeMinutes>3</latitudeMinutes>
<latitudeSeconds>46</latitudeSeconds>
</position>

MyXSLT:

<?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"/>
    <xsl:template match="/position">
        <xsl:param name="latdeg" select = "/latitudeDegrees"/>
        <xsl:param name="latmin" select = "/latitudeMinutes"/>
        <xsl:param name="latsec" select = "/latitudeSeconds"/>
        <xsl:element name="myMessage">
            <xsl:element name="latitude"><xsl:value-of select="(number($latdeg))+(number($latmin)/60)+(number($latsec)/3600)"/></xsl:element>       
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>

Upvotes: 0

Views: 1004

Answers (1)

michael.hor257k
michael.hor257k

Reputation: 116959

Use the div operator to perform a division instead of the / symbol (which is reserved as the abbreviation of the root node):

<xsl:value-of select="(number($latdeg))+(number($latmin) div 60)+(number($latsec) div 3600)"/>

Note also that your parameters are empty. You need to define them as:

<xsl:param name="latdeg" select = "latitudeDegrees"/>
<xsl:param name="latmin" select = "latitudeMinutes"/>
<xsl:param name="latsec" select = "latitudeSeconds"/>

because the referenced nodes are children of the current node (position), not of the / root node.

Upvotes: 2

Related Questions