xml - 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 变量在定义中保持不变,并且我可以用这些新值绘制我的扑克牌?
解决方案
非常感谢@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 中,可以在定义中再次访问!
推荐阅读
- bash - Unix Bash 脚本 - 找不到命令
- amazon-web-services - 将图像作为有效负载发送时,AWS API Gateway POST 请求不返回输出
- python - 将一个 NumPy 数组合并到具有相同数量值的新 NumPy 数组中
- docker - docker-entrypoint 以正常关闭方式执行 jboss
- vue.js - Vue.js 根据 v-model 值更改文本输入的占位符
- javascript - 如何让 Switch 组件在值改变之前不移动 - React Native
- jquery - 使用 jquery 获取 Bootstrap-select 选项的值
- java - Kafka 消费者不返回任何记录
- c# - Xamaring IOS:使用哪个 UI 元素来显示图像网格?
- php - 无法从 PHP imagick 生成 svg 到 pdf