Xml 倍增<;xsl:value of>;结果是-1

Xml 倍增<;xsl:value of>;结果是-1,xml,xslt,xpath,svg,Xml,Xslt,Xpath,Svg,这里是初学者/初学者XSL用户 我的XSLT文档中有类似于以下模板的内容: , 完整的XSLT文档用于生成SVG图形。但是,我希望将浏览器的Y坐标系倒置,因为源数据采用传统坐标系 我的问题很简单:如何将nodeYCoord乘以-1,并将结果发送到浏览器,而不是元素生成的值 编辑:请不要提供有关如何翻转Y坐标系的其他方法。我已经对此进行了研究,对于我的特定应用程序,我非常确定这是最好的方法(假设我能使它工作) 将值保存到变量,然后在xpath表达式中使用它 <xsl:variable n

这里是初学者/初学者XSL用户

我的XSLT文档中有类似于以下模板的内容:


,

完整的XSLT文档用于生成SVG图形。但是,我希望将浏览器的Y坐标系倒置,因为源数据采用传统坐标系

我的问题很简单:如何将
nodeYCoord
乘以-1,并将结果发送到浏览器,而不是
元素生成的值


编辑:请不要提供有关如何翻转Y坐标系的其他方法。我已经对此进行了研究,对于我的特定应用程序,我非常确定这是最好的方法(假设我能使它工作)

将值保存到变量,然后在xpath表达式中使用它

<xsl:variable name="yval" select="//nodeCoord[nodeNumber=$nodenum]/nodeYCoord/text()"/>
<xsl:value-of select="-1 * $yval"/>

我的问题很简单:如何将nodeYCoord乘以-1和 将该结果发送到浏览器,而不是
元素

答案也很简单:用减号。而不是:

<xsl:value-of select="//nodeCoord[nodeNumber=$nodenum]/nodeYCoord"/>

写:

<xsl:value-of select="-//nodeCoord[nodeNumber=$nodenum]/nodeYCoord"/>

请不要提供如何翻转Y轴的替代方法 坐标系。我对此进行了研究,并针对我的具体情况 我很肯定这是最好的方法 (假设我能做到)


也许你应该再看看。

太棒了!我不知道你能做到。谢谢你的帮助。快速提问:这个变量可以被“重用”吗?我将做几千次同样的任务。你可以在模板中重新引用一个变量,或者用一个表达式构造一个新的变量。在XSLT中,您无法将值重新分配给变量。不幸的是,这可能不适用于给定的我。那么
$yval
变量是全局变量?它不仅仅是当前模板的本地模板,并且在模板迭代完成后不会被“刷新”吗?有办法解决这个问题吗?您不能在模板执行过程中重新分配它。再次调用模板时,可以为其分配一个新变量。如果您需要一个全局变量,可以在模板定义之前在样式表的顶部指定它。它在Internet Explorer中不工作。图像在没有负片的情况下可以完美渲染,但在添加负片时根本不会渲染。文件存储在本地,因此我无法在Chrome中进行转换,因为它不允许本地XSL转换。我很想听听你关于翻转Y的另一种想法。不过,我已经尝试了5种不同的方法,但在这种情况下都不起作用。迈克尔:我在本地主机上设置了IIS,这在chrome中确实有效!谢谢。不过,渲染要花很长时间,比internet explorer要长得多。“不过总比什么都没有好。”里克提奇1。我不明白为什么这不能普遍适用,但以防万一,
应该做同样的事情。2.这与速度无关。但是使用
/
可能有:在XSLT中,显式地写出完整路径是值得的。3.不知道“这种情况”是什么。看看这是否有帮助:可选的XPath公式在IE中也不起作用。用铬合金制作????奇怪的感谢您提供的关于快速路径的提示,我将尝试一下,并查看链接。@RickTeachey我建议您单独测试这个问题。在此处查看使用输入和样式表时得到的结果: