2014-04-30 86 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

我告訴過你,如果沒有完整的代碼,很難提供幫助。你爲什麼忽略這個建議? –