XSLT部门给出了错误

时间:2016-06-28 20:49:03

标签: xml xslt

我正在使用XML Notepad(Microsoft)来执行XSLT转换。不确定我做错了什么。我需要进行简单的除法计算。

我无法摆脱这个错误: 表达式中出现意外的标记'60'。 ... mber($ latdeg))+(数字($ latmin)/ - > 60< - )+(数字($ latsec)/ 3600)

我的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>

1 个答案:

答案 0 :(得分:2)

使用div运算符执行除法而不是/符号(保留为根节点的缩写):

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

另请注意,您的参数为空。您需要将它们定义为:

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

因为引用的节点是当前节点(position)的子节点,而不是/根节点的子节点。