带有元素列表的xslt变量

时间:2014-04-30 00:24:06

标签: xslt

我有xslt代码如下。填充不会选择任何颜色。如何修复此代码: 填充=" {($ series_color)/彩色[$索引+ 1]}"

<xsl:variable name="series_color">
    <color>#99FF99</color>
    <color>#0099FF</color>
    <color>#FF6600</color>
    <color>#990099</color>
    <color>#FF99FF</color>
    <color>#666600</color>
    <color>#CC99F0</color>
    <color>#CC990F</color>
    <color>#CC09FF</color>
    <color>#0C99FF</color>
    <color>#C599FF</color>
    <color>#CC59FF</color>
    <color>#CC95FF</color>
    <color>#CC995F</color>
</xsl:variable>

<xsl:template name="legend">
    <xsl:variable name="width" select="100 div count(./series)"/>
    <xsl:for-each select="./series">
        <xsl:variable name="index" select="count(preceding::series)"/>
        <rect x="{$index * $width}%" y="0" width="{$width}%" height="100%" fill="{($series_color)/color[$index+1]}" stroke="black" stroke-width="2"/>
    </xsl:for-each>
</xsl:template>

1 个答案:

答案 0 :(得分:2)

猜测:由于您正在生成<rect>元素,并且SVG具有<rect>元素,我猜您正在生成SVG,这意味着您的样式表可能使用SVG名称空间作为默认名称空间。如果这是正确的,$ series_color中的元素也在SVG名称空间中,需要作为svg:color进行寻址。

这说明了提供完整的可运行示例的重要性。如果错误出现在您已修剪过的代码中(在本例中为xsl:stylesheet标题),则很难找到它。