我正在使用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>
答案 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
)的子节点,而不是/
根节点的子节点。