У меня есть условие, когда мне нужно петлю по крайней мере один раз, и поэтому у меня есть следующий код xsl. Однако это не работает, так как оно всегда получает последнее значение итераций. Как я могу настроить это, чтобы получить правильную итерацию в каждом цикле?Зацикливание через xpath, получая правильную итерацию каждый раз в xslt 2
<xsl:variable name='count0'>
<xsl:choose>
<xsl:when test='count($_BoolCheck/BoolCheck[1]/CheckBoolType) = 0'>
<xsl:value-of select="1"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select='count($_BoolCheck/BoolCheck[1]/CheckBoolType)'/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:for-each select="1 to $count0">
<xsl:variable name='_LoopVar_2_0' select='$_BoolCheck/BoolCheck[1]/CheckBoolType[position()=$count0]'/>
<e>
<xsl:attribute name="n">ValueIsTrue</xsl:attribute>
<xsl:attribute name="m">f</xsl:attribute>
<xsl:attribute name="d">f</xsl:attribute>
<xsl:if test="(ctvf:isTrue($_LoopVar_2_0/CheckBoolType[1]))">
<xsl:value-of select=""Value True""/>
</xsl:if>
</e>
</xsl:for-each>
файл XML выглядит следующим образом:
<BoolCheck>
<CheckBoolType>true</CheckBoolType>
<CheckBoolType>false</CheckBoolType>
<CheckBoolType>1</CheckBoolType>
<CheckBoolType>0</CheckBoolType>
<CheckBoolType>True</CheckBoolType>
<CheckBoolType>False</CheckBoolType>
<CheckBoolType>TRUE</CheckBoolType>
<CheckBoolType>FALSE</CheckBoolType>
</BoolCheck>
В этом случае мне нужно итерации по каждой итерации CheckBoolType и производят соответствующее количество значений. Однако в приведенном выше примере, если не было итераций CheckBoolType, мне все равно хотелось бы, чтобы итерации вводили каждый цикл по крайней мере один раз. Я надеюсь, что это еще раз пояснит.
Возможно, вам захочется показать нам образец ввода XML и соответствующий результат, который вы хотите создать, объясняя взаимосвязь между двумя образцами. Затем вы также можете показать минимальный, но полный образец кода XSLT вместе с полученным результатом. –
Я думаю, что получил ответ на это, мне просто нужно было объявить переменную внутри каждого из них: –
Контекстный элемент внутри for-each с '1 to ...' является целым числом, поэтому ' ' просто записывается как « '. Но 'for-each' не является циклом и нужны ли вам все эти переменные, я не уверен, я до сих пор не понял, чего вы хотите достичь. –