您好我想以百分比格式填充宽度中的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>
答案 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>