在xslt中显示变量的值

时间:2012-10-04 08:36:53

标签: xml xslt

您好我想以百分比格式填充宽度中的maxbars变量的值,但由于某些原因,它没有取其值。你能帮忙吗?

示例:我想将其显示为宽度:10.9%格式

<xsl:for-each select="catalog/cd/price">
 Current node:
 <xsl:variable name="maxbars" select="."/>
 <div style="width: 200px; height: 20px;">
 <div style="width: maxbars%; height: 18px; background-color: red"></div>
 </div>
 <br/>
 </xsl:for-each>



<catalog>
<cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
</cd>
<cd>
    <title>Hide your heart</title>
    <artist>Bonnie Tyler</artist>
    <country>UK</country>
    <company>CBS Records</company>
    <price>9.90</price>
    <year>1988</year>
</cd>

2 个答案:

答案 0 :(得分:8)

您必须表明您正在使用maxbars变量。如果您在属性中使用它,则可以对xPath表达式使用XSL-T的大括号语法:

<div style="width: {$maxbars}%; height: 18px; background-color: red"></div>

重要提示:大括号放在周围表达式中,您可以使用大括号内的$

如果要在属性之外插入变量(和其他xPath表达式),则必须使用<xsl:value-of>元素:

<span>Price: <xsl:value-of select="$maxbars"/></span>

答案 1 :(得分:1)

修改 - nd的答案更优雅 - {}技巧更简洁。

作为替代方案,您可以手动构建div元素,以替换$maxbars变量。

<xsl:template match="/">
    <xsl:for-each select="catalog/cd/price">
        Current node:
        <xsl:variable name="maxbars" select="."/>
        <div style="width: 200px; height: 20px;">
            <xsl:element name="div">
                <xsl:attribute name="style">
                    <xsl:text>width: </xsl:text>
                    <xsl:value-of select="$maxbars" />
                    <xsl:text>%; height: 18px; background-color: red</xsl:text>
                </xsl:attribute>
            </xsl:element>
        </div>
        <br/>
    </xsl:for-each>
</xsl:template>