У меня есть проект, где я хочу сделать карту с использованием координат GPS, и я хочу преобразовать координаты в значения XY с помощью Javascript или, по крайней мере, sin и cos. Итак, мой вопрос: как использовать sin и cos в xsl stylesheets. Я использую Internet Explorer для генератора. Пока все работает нормально.Как использовать Javascript Математические функции с XSL
Моя текущая таблица стилей выглядит следующим образом:
<?xml version="1.0"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:gpx="http://www.topografix.com/GPX/1/1">
<!-- xmlns:msxsl="urn:schemas-microsoft-com:xslt" -->
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:variable name="midx" select="800" /> <!-- longitude -->
<xsl:variable name="midy" select="1100" /> <!-- latitude -->
<xsl:template name="longitude">
<xsl:param name="lon"/>
<xsl:param name="lat"/>
<!-- <xsl:value-of select="result:getResult(string(.))"/> -->
<xsl:value-of select="($lon - 42.881) * 100000"/>
</xsl:template>
<xsl:template name="latitude">
<xsl:param name="lon"/>
<xsl:param name="lat"/>
<xsl:value-of select="1700 - (($lat - 36.904) * 100000)"/>
</xsl:template>
<xsl:template match="/">
<xsl:apply-templates select="gpx:gpx"/>
</xsl:template>
<xsl:template match="gpx:gpx">
<html><body>
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" >
<xsl:apply-templates select="gpx:trk"/>
<xsl:apply-templates select="gpx:wpt"/>
</svg>
</body></html>
</xsl:template>
<xsl:template match="gpx:wpt">
<circle stroke="black" stroke-width="3" fill="red" r="10">
<xsl:attribute name="cx">
<xsl:call-template name="longitude"><xsl:with-param name="lon" select="@lon"/><xsl:with-param name="lat" select="@lat"/></xsl:call-template>
<!-- <xsl:value-of select="(@lon - 42.881) * 100000"/> -->
</xsl:attribute>
<xsl:attribute name="cY">
<xsl:call-template name="latitude"><xsl:with-param name="lon" select="@lon"/><xsl:with-param name="lat" select="@lat"/></xsl:call-template>
<!-- <xsl:value-of select="1700 - ((@lat - 36.904) * 100000)"/> -->
</xsl:attribute>
</circle>
<text>
<xsl:attribute name="x">
<xsl:call-template name="longitude"><xsl:with-param name="lon" select="@lon"/><xsl:with-param name="lat" select="@lat"/></xsl:call-template>
</xsl:attribute>
<xsl:attribute name="y">
<xsl:call-template name="latitude"><xsl:with-param name="lon" select="@lon"/><xsl:with-param name="lat" select="@lat"/></xsl:call-template>
</xsl:attribute>
<xsl:value-of select="name" />
</text>
</xsl:template>
<xsl:template match="gpx:trk">
<xsl:apply-templates select="gpx:trkseg"/>
</xsl:template>
<xsl:template match="gpx:trkseg">
<polyline style="fill:none;stroke:black;stroke-width:1">
<xsl:attribute name="points">
<xsl:for-each select="gpx:trkpt">
<!-- <xsl:value-of select="(@lon - 42.881) * 100000"/>,<xsl:value-of select="1700 - ((@lat - 36.904) * 100000)"/> -->
<!-- <trkpt lat="36.91445553" lon="42.89106168"> -->
<xsl:call-template name="longitude"><xsl:with-param name="lon" select="@lon"/><xsl:with-param name="lat" select="@lat"/></xsl:call-template>
<xsl:text>,</xsl:text>
<xsl:call-template name="latitude"><xsl:with-param name="lon" select="@lon"/><xsl:with-param name="lat" select="@lat"/></xsl:call-template>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:attribute>
</polyline>
</xsl:template>
</xsl:stylesheet>
http://stackoverflow.com/help/someone-answers –