我有这个(伪代码)xml
<data>
<ref>one</ref>
<val>20</val>
<ref>two</ref>
<val>200</val>
<ref>three</ref>
<val>2000</val>
</data>
然后,假设我不知道“val”节点中有哪些值。因此,我想有xhtml输出
- &GT;如果有任何“val”低于100
<div class="low">values 20,200,2000 in one,two,three</div>
- &GT;如果有任何“val”低于1000但不低于100
<div class="medium">values 20,200,2000 in one,two,three</div>
- &GT;如果有任何“val”低于10000但不低于1000
<div class="high">values 20,200,2000 in one,two,three</div>
*在最后两种情况下,初始值应该不同
有什么想法吗?谢谢:))
答案 0 :(得分:1)
要获得“1.0”XSLT版本的最大值,我们需要扩展功能。我已经为你创造了它:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:math="http://exslt.org/math" exclude-result-prefixes="math">
<xsl:param name="checkValue">
<xsl:variable name="value" select="math:max(//val)"/>
<xsl:choose>
<xsl:when test="$value < 100">
<xsl:text>low</xsl:text>
</xsl:when>
<xsl:when test="$value < 1000 and $value > 100">
<xsl:text>medium</xsl:text>
</xsl:when>
<xsl:when test="$value < 10000 and $value > 1000">
<xsl:text>high</xsl:text>
</xsl:when>
</xsl:choose>
</xsl:param>
<xsl:template match="data">
<div class="{$checkValue}">
<xsl:text>values </xsl:text>
<xsl:for-each select="val">
<xsl:value-of select="."/>
<xsl:if test="position()!=last()">, </xsl:if>
</xsl:for-each>
<xsl:text> in </xsl:text>
<xsl:for-each select="val">
<xsl:value-of select="preceding-sibling::ref[1]"/>
<xsl:if test="position()!=last()">, </xsl:if>
</xsl:for-each>
</div>
</xsl:template>
</xsl:stylesheet>
<强>输出:强>
<div class="high">values 20, 200, 2000 in one, two, three</div>