2

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

示例:我想将其显示为 width: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>

4

2 回答 2

9

您必须表明您正在使用该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>
于 2012-10-04T08:59:10.697 回答
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>
于 2012-10-04T08:49:10.643 回答