所以我正在将XML提要转换为HTML,这样做可以让最终用户选择3种配色方案中的1种。根据所选的颜色方案,我试图在一个将呈现XML的call-template命令中为参数赋值。
我对XSL很新,所以请随意指出一个更好的方法
以下是我的代码示例:
<xsl:template match="/">
<xsl:variable name="basic_head_title_color">#414141</xsl:variable>
<xsl:variable name="basic_head_title_size">18px</xsl:variable>
<xsl:variable name="basic_head_desc_color">#8b8b8b</xsl:variable>
<xsl:variable name="contrast_head_title_color">#ffffff</xsl:variable>
<xsl:variable name="contrast_head_title_size">18px</xsl:variable>
<xsl:variable name="contrast_head_desc_color">#e1e1e1</xsl:variable>
<xsl:variable name="black_head_title_color">#ffffff</xsl:variable>
<xsl:variable name="black_head_title_size">18px</xsl:variable>
<xsl:variable name="black_head_desc_color">#e1e1e1</xsl:variable>
<xsl:when test="$display_theme = 'basic'" >
<xsl:variable name ="chosen_head_title_color" select="basic_head_title_color"/>
<xsl:variable name ="chosen_head_title_size" select="basic_head_title_size"/>
<xsl:variable name ="chosen_head_desc_color" select="basic_head_desc_color"/>
</xsl:when>
<xsl:when test="$display_theme = 'contrast'" >
<xsl:variable name ="chosen_head_title_color" select="contrast_head_title_color"/>
<xsl:variable name ="chosen_head_title_size" select="contrast_head_title_size"/>
<xsl:variable name ="chosen_head_desc_color" select="contrast_head_desc_color"/>
</xsl:when>
<xsl:when test="$display_theme = 'black'" >
<xsl:variable name ="chosen_head_title_color" select="black_head_title_color"/>
<xsl:variable name ="chosen_head_title_size" select="black_head_title_size"/>
<xsl:variable name ="chosen_head_desc_color" select="black_head_desc_color"/>
</xsl:when>
<xsl:call-template name="render_xml">
<xsl:with-param name="head_title_color" select="chosen_head_title_color" />
<xsl:with-param name="head_title_size" select="chosen_head_title_size" />
<xsl:with-param name="head_desc_color" select="chosen_head_desc_color" />
</xsl:call-template>
</template>
答案 0 :(得分:2)
您的XSLT在某些地方无效,但这是怎么回事?
<xsl:param name="display_theme" select="'basic'" />
<v:styles xmlns:v="transform-variables">
<style name="basic" titleColor="#41414" titleSize="18px" descColor="#8b8b8b" />
<style name="contrast" titleColor="#ffffff" titleSize="18px" descColor="#e1e1e1" />
<style name="black" titleColor="#ffffff" titleSize="18px" descColor="#e1e1e1" />
</v:styles>
<xsl:template match="/">
<xsl:variable name="style" select="document('')//style[@name = $display_theme]" />
<xsl:call-template name="render_xml">
<xsl:with-param name="head_title_color" select="$style/@titleColor" />
<xsl:with-param name="head_title_size" select="$style/@titleSize" />
<xsl:with-param name="head_desc_color" select="$style/@descColor" />
</xsl:call-template>
</xsl:template>