【问题标题】:How can I send an x and y value to SVG text via XSLT?如何通过 XSLT 将 x 和 y 值发送​​到 SVG 文本?
【发布时间】:2013-08-20 23:58:03
【问题描述】:

我有一个简单的 XSL 文件:

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
<xsl:param name='x' />
<xsl:param name='y' />
<xsl:template match='/Sensor'>
  <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
    <x><xsl:value-of select="x"/></x>
    <y><xsl:value-of select="y"/></y>
    <text x="x" y="y" font-family="sans-serif" font-size="24px" fill="black">TEST</text>
  </svg>
 </xsl:template>
</xsl:stylesheet>

我正在使用这个代码:

var xx = 20;
var yy = 30;
var argsList = new XsltArgumentList();
argsList.AddParam("x", "", xx);
argsList.AddParam("y", "", yy);
var xelement = ConvertToXml(sensor);
var transformedElement = new XElement("Sensor");
using (var writer = transformedElement.CreateWriter())
{
 var xslt = new XslCompiledTransform(true);
 xslt.Load(transformFile);
 xslt.Transform(xelement.CreateReader(), argsList, writer);
}
return transformedElement;

我在浏览器中显示的最终输出 HTML 是:

<Root>
 <svg version="1.1" xmlns="http://www.w3.org/2000/svg">
  <x></x>
  <y></y>
  <text x="x" y="y" font-family="sans-serif" font-size="24px" fill="black">TEST</text>
 </svg>
</Root>

我试图将 xx 的值转换为 SVG 文本 x 的值,并将 yy 的值转换为 SVG 文本 y 的值。 IE。 HTML 为:

<text x="20" y="30" font-family="sans-serif" font-size="24px" fill="black">TEST</text>

我已经尝试了几种变体,但无法让它发挥作用。我做错了什么?

【问题讨论】:

    标签: c# asp.net xml xslt svg


    【解决方案1】:

    要引用参数,您必须在它们前面加上'$'

    <x><xsl:value-of select="$x"/></x>
    <y><xsl:value-of select="$y"/></y>
    <text x="{$x}" y="{$y}" font-family="sans-serif" font-size="24px" fill="black">TEST</text>
    

    还要注意花括号 {} 以获取属性内的值

    【讨论】:

      【解决方案2】:

      试试:

      <x><xsl:value-of select="$x"/></x>
      <y><xsl:value-of select="$y"/></y>
      

      使用 $ 为参数名称添加前缀

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-07-15
        • 1970-01-01
        • 1970-01-01
        • 2016-07-19
        • 1970-01-01
        • 1970-01-01
        • 2014-06-26
        相关资源
        最近更新 更多