Во-первых, я должен признать, что я новичок в XML, так что простите меня за глупые вопросы.
Моя цель - получить значение $majorGoal
.
<xsl:variable name="variable">
<xsl:value-of select="(../@attribute) * 100 />
</xsl:variable>
<xsl:variable name="minorGoal1">
<xsl:choose>
<xsl:when test="$variable < -2">25</xsl:when>
<xsl:when test="$variable >= -2">20</xsl:when>
<xsl:choose>
</xsl:variable>
<xsl:variable name="minorGoal2">
<xsl:choose>
<xsl:when test="$variable < -2">40</xsl:when>
<xsl:when test="$variable >= -2">24</xsl:when>
<xsl:choose>
</xsl:variable>
<xsl:variable name="minorGoal3">
<xsl:choose>
<xsl:when test="$variable < -2">55</xsl:when>
<xsl:when test="$variable >= -2 and < 4">50</xsl:when>
<xsl:when test="$variable >= 4">50</xsl:when>
<xsl:choose>
<xsl:variable name="minorGoal4">
<xsl:choose>
<xsl:when test="$variable < -2">80</xsl:when>
<xsl:when test="$variable >= -2 and < 4">70</xsl:when>
<xsl:when test="$variable >= 4">60</xsl:when>
<xsl:choose>
</xsl:variable>
<!-- I have 10 more similar variables -->
<xsl:variable name="minorGoal">
<xsl:choose>
<xsl:when test="$anotherVariable = 30">
<xsl:value-of select="$minorGoal1"/>
</xsl:when>
<xsl:when test="$anotherVariable = 40">
<xsl:value-of select="$minorGoal2"/>
</xsl:when>
<xsl:when test="$anotherVariable = 50">
<xsl:value-of select="$minorGoal3"/>
</xsl:when>
<xsl:when test="$anotherVariable = 60">
<xsl:value-of select="$minorGoal4"/>
</xsl:when>
<!-- Another 10 more similar variables -->
</xsl:choose>
</xsl:variable>
<xsl:variable name="majorGoal">
<xsl:value-of select="$minorGoal"/>
</xsl:variable>
@attribute относится к исходному XML-файлу. $anotherVariable определяется как глобальная переменная в том же файле xsl и является константой.
Проблема в том, что парсер возвращает ошибку:
Ожидаемое выражение. $переменная >= -2 и -->‹‹-- 4
Я могу предположить, что проблема вызвана:
<xsl:when test="$variable >= -2 and < 4">50</xsl:when>
а как еще описать диапазон чисел?