0

私は単純な 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>

これについていくつかのバリエーションを試しましたが、うまくいきません。私は何を間違っていますか?

4

2 に答える 2

1

試す:

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

パラメータ名の前に $ を付ける

于 2013-08-21T00:57:18.523 に答える
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>

また、属性内の値を取得するための中括弧 {} にも注意してください

于 2013-08-21T00:55:19.090 に答える