Reputation: 143
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
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