2014-04-30 54 views
-2

我有如下的xslt代码。填充不会选择任何颜色。如何解决这一问题的代码: 填充= “{($ series_color)/彩色[$索引+ 1]}”带有元素列表的xslt变量

<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> 
+2

如果这是XSLT 1.0,则'$ series_color'是*结果树片段*而不是* node-set *。 Google * exsl:node-set *。 –

回答

2

猜测:因为要生成<rect>元件和SVG具有<rect>元件,我想你正在生成SVG,这意味着你的样式表可能使用SVG命名空间作为默认命名空间。如果这是正确的,$ series_color中的元素也位于SVG名称空间中,并且需要将其作为svg:color来处理。

这说明了提供完整可运行示例的重要性。当错误出现在你修剪掉的代码中时(这里是xsl:stylesheet头部),这使得它很难找到它。

+0

我写了一个测试程序来测试“exslt:node-set”,但它不起作用。 Firefox报告错误:“加载样式表时出错:解析XSLT样式表失败。”代码,如下所示: \t #99FF99 \t #0099FF \t #FF6600 \t #990099 \t #FF99FF \t #666600 colorx: user3533821

+0

我发现如何在xls下获得正确的颜色。 。但它似乎svg rect命令不采取fill =“{$ colorN}”。如何在svg下输入vaiable colorN来切换? – user3533821

+2

我告诉过你,如果没有完整的代码,很难提供帮助。你为什么忽略这个建议? –