首页 > 解决方案 > svg use 如何改变 xslt 变量的变量范围?

问题描述

我正在尝试访问与 svg 结合的 XSLT 文件中的变量。参数是我要绘制的扑克牌值对应的符号和数字。用xslt:for-each抽一张牌后,一旦参数正确,扑克牌抽得正确,但使用两次后,svg的使用使用与xslt:for-each第一次迭代时相同的变量值,从而生成多次相同的 grafic 而不更改变量值,但在 svg 的使用之外,变量值与内部不同。

<!-- right variable values outside the definition !-->
<text font-size="50">
<xsl:value-of select="$symbol"/>
</text>
<text font-size="50">
<xsl:value-of select="$number"/>
</text>
<use href="#draw_card""/>
<defs>
      <symbol id="draw_card">
           <!-- wrong variable values inside !-->
           <text font-size="50"><xsl:value-of select="$symbol"/></text>
           <text font-size="50"><xsl:value-of select="$number"/></text>
      </symbol>
</defs>

如何更改我的代码,以使 xslt 变量在定义中保持不变,并且我可以用这些新值绘制我的扑克牌?

标签: xmlsvgxslt

解决方案


非常感谢@Martin Honnen!

id 确实是这里的问题。我通过将 id 声明为“draw_card_{position()}”来调整此处的代码。

<!-- right variable values outside the definition !-->
<text font-size="50">
<xsl:value-of select="$symbol"/>
</text>
<text font-size="50">
<xsl:value-of select="$number"/>
</text>
<use href="#draw_card_{$position}"/>
<defs>
      <symbol id="draw_card_{$position}">
           <!-- right variable values inside !-->
           <text font-size="50"><xsl:value-of select="$symbol"/></text>
           <text font-size="50"><xsl:value-of select="$number"/></text>
      </symbol>
</defs>

-> 变量“存储”在 id 中,可以在定义中再次访问!


推荐阅读