【问题标题】:How does svg use change the variable scope of xslt variables?svg use 如何改变 xslt 变量的变量范围?
【发布时间】:2020-06-16 22:17:25
【问题描述】:

我正在尝试访问与 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 变量保持不变,并且我可以用这些新值绘制我的扑克牌?

【问题讨论】:

  • 如果您向我们展示最小但完整的示例来重现问题,这将有所帮助。如果您显示的 sn-p 周围有一个for-each,那么您似乎会多次声明具有相同 id draw_card 的符号,而 id 值应该是唯一的。所以也许你想要&lt;use href="#draw_card_{position()}"/&gt;&lt;symbol id="draw_card_[position()}"&gt;...这样的东西。

标签: xml svg xslt


【解决方案1】:

非常感谢@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 中,可以在定义中再次访问!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    相关资源
    最近更新 更多