获取XSLT变量的选定值并在Font中设置

时间:2012-02-28 07:09:32

标签: xml xslt

我在XSL文件中有一个变量声明为

<xsl:variable name="check" >
            <xsl:value-of select="normalize-space(substring-before(substring-after(@style,'FONT-SIZE:'),'pt'))"/>
    </xsl:variable>

它给出了我的XML中的字体大小,无论它是12,14,16

<xsl:template name="fontSize"> 
        <xsl:choose>
            <xsl:when test="round($check=8) or round($check=7) or round($check=6)">
                    <font size="1" face="$Fface">
                            <xsl:value-of select="."/>  
                    </font>
            </xsl:when>
            <xsl:when test="round($check=10) or round($check=9)">
                    <font size="2" face="$Fface">
                        <xsl:value-of select="."/>  
                    </font>
            </xsl:when>
 <xsl:otherwise>
                    <font size="3" face="$Fface">
                            <xsl:value-of select="."/>
                    </font>         
          </xsl:otherwise>  
        </xsl:choose>
    </xsl:template>

我制作一个模板,从选择查询中选择我需要的尺寸

我希望在尺寸属性中设置所选尺寸

<font size="$check"
              face="{normalize-space(substring-before(substring-after(@style,'FONT-FAMILY:'),';'))}">   

是正确的还是有其他方法可以做到这一点。

1 个答案:

答案 0 :(得分:1)

首先,替换它:

<xsl:variable name="check" >
      <xsl:value-of select="xxxxx"/>
</xsl:variable>

由此:

<xsl:variable name="check" select="xxxxx"/>

不仅更简洁,而且效率更高。 (这个错误似乎非常普遍。)

其次,我不知道这在整个项目的上下文中是否有意义,而不是生成字体元素,现代的方法是使用CSS。输出

<span class="c{$check}"><xsl:value-of select="."/></span>

然后定义CSS类来控制详细的再现。