Интересно, можно ли получить числа в пределах диапазона и распечатать их в собственные элементы.Получите уникальные номера из диапазона
Скажем, у меня есть вход с большим количеством элементов с номером в нем, некоторые из них, содержащие numberrange:
<root>
<ele>
<no>1</no>
</ele>
<ele>
<no>3</no>
</ele>
<ele>
<no>4-11</no>
</ele>
<ele>
<no>12</no>
</ele>
и я хочу, чтобы это (укороченный, до 11 , как на входе):
<root>
<ele>
<no>1</no>
</ele>
<ele>
<no>3</no>
</ele>
<ele>
<no>4</no>
</ele>
<ele>
<no>5</no>
</ele>
<ele>
<no>6</no>
</ele>
до сих пор я пришел с Тхи s XSLT:
<xsl:output indent="yes"/>
<xsl:template match="/">
<xsl:for-each select="//no">
<no>
<xsl:if test="not(contains(.,'-'))"><xsl:value-of select="."/></xsl:if>
<xsl:if test="contains(.,'-')">
<xsl:variable name="beforehiven">
<xsl:value-of select="substring-before(.,'-')"/>
</xsl:variable>
<xsl:variable name="afterhiven">
<xsl:value-of select="substring-after(.,'-')"/>
</xsl:variable>
<xsl:variable name="diff">
<xsl:value-of select="$afterhiven - $beforehiven"/>
</xsl:variable>
<xsl:value-of select="$diff"/>
</xsl:if>
</no>
</xsl:for-each>
</xsl:template>
Сначала я обращаюсь к тем, у кого нет hiven, и выведите их. И я знаю, что между 4 и 11 - 6 чисел, поэтому мне нужно создать новые элементы <ele>
и <no>
и дать им значение 7-1, создать новую переменную 6-1 для следующей и так далее.
Возможно ли это с помощью XSLT? Если да, то как?
Спасибо за ваше время!
редактировать: Я использую XSLT версии 2.0
полный вывод должен быть:
<root>
<ele>
<no>1</no>
</ele>
<ele>
<no>3</no>
</ele>
<ele>
<no>4</no>
</ele>
<ele>
<no>5</no>
</ele>
<ele>
<no>6</no>
</ele>
<ele>
<no>7</no>
</ele>
<ele>
<no>8</no>
</ele>
<ele>
<no>9</no>
</ele>
<ele>
<no>10</no>
</ele>
<ele>
<no>11</no>
</ele>
<ele>
<no>12</no>
</ele>
_s o Мне нужно создать новые элементы и и дать им значение 7-1, создать новую переменную 6-1 для следующей и так далее. Не могли бы вы объяснить это утверждение. Что такое значение '7-1' и переменная' 6-1'? Или вы просто хотите создавать элементы со значениями от 4 до 11? –
Можете ли вы упомянуть версию XSLT, которую вы используете, и полный ожидаемый результат для отображаемого входного XML. –
Да, извините, я имел в виду 7-1 как 7 минус 1, отдавая значение 6. Мое мышление было: разница между 4-11 равна 7, но поскольку у меня уже есть 4 и 11, мне нужно 7 минус 1, для следующий элемент 6 минус 1 и т. д. Короче говоря: Да, я хочу создать для каждого значения от 4 до 11 элемент. – smk