2013-08-20 26 views
0

我有一個簡單的XSL文件:如何通過XSLT將x和y值發送到SVG文本?

<?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> 

我已經嘗試了幾個變化,但不能得到它的工作。我究竟做錯了什麼?

回答

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> 

而且還要注意大括號前綴他們{}進去atributes價值的

1

嘗試:

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

給你的參數名添加前綴$

相關問題