我有一个简单的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的值。即对于HTML:
<text x="20" y="30" font-family="sans-serif" font-size="24px" fill="black">TEST</text>
我已尝试过多种变体,但无法使其发挥作用。我做错了什么?
答案 0 :(得分:1)
要引用params,您必须在前面加上'$'
<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>
还要注意花括号{}以获取内部属性
的值答案 1 :(得分:1)
尝试:
<x><xsl:value-of select="$x"/></x>
<y><xsl:value-of select="$y"/></y>
使用$
作为参数名称的前缀