Практическое руководство повреждает цикл foreach в XSLT?

Я получил решение, изменив версию Excel.dll. Я использовал 15.0.0.0, и теперь я изменил его на 12.0.0.0 и его работу отлично. Я получил dll из Add reference > Browse > C: > Windows > assembly > GAC > Microsoft.Office.Interop.Excel > 12.0.0.0_etc > Microsoft.Office.Interop.Excel.dll

19
задан Daniel Silveira 22 January 2009 в 17:20
поделиться

3 ответа

XSLT записан в очень функциональном стиле, и в этом стиле нет никакого эквивалента break оператор. То, что можно сделать, является чем-то вроде этого:

<xsl:for-each select="...nodes...">
    <xsl:if test="...some condition...">
        ...body of loop...
    </xsl:if>
</xsl:for-each>

Тот путь эти for-each все еще выполнит итерации через все узлы, но тело цикла будет только выполняться, если условие будет верно.

28
ответ дан 30 November 2019 в 02:20
поделиться

XSLT не является процедурным языком; не думайте для - каждый как являющийся "циклом" в способе, которым у Вас есть цикл в Java. Для - каждый - способ применить шаблон к каждому набору объектов. Это не обязательно происходит в особом порядке, таким образом, Вы не можете думать о нем, поскольку "применяют этот шаблон к каждому набору объектов, пока такой-то и такой-то не происходит, затем остановитесь".

Тем не менее можно использовать избранный атрибут для фильтрации результатов, таким образом, это становится больше как, "применяют шаблон к каждому набору объектов, но только если такой-то и такой-то верен для них".

, Если то, что Вы действительно хотите, "применяют шаблон к каждому набору объектов, где такой-то и такой-то верен для них, но только к первому это верно для", можно объединить избранный атрибут с положением () функция.

8
ответ дан 30 November 2019 в 02:20
поделиться

А "повреждение" от тела <xsl:for-each> инструкция XSLT не может быть указана с помощью синтаксической конструкции , однако это может быть моделировано .

Этот фрагмент кода по topxml.com описывает технику подробно:

В случае, если Вы нуждаетесь в ""перерыве"" от xsl:for-каждого цикла

По существу, два метода обсуждены :

  1. Выполнение чего-то в теле <xsl:for-each>, только если особое условие удовлетворено.

  2. Определение обработки, не используя <xsl:for-each>, но с рекурсией

второй метод обладает преимуществом способности сразу выполнить выход , контрастировавший с первой необходимостью метода все еще выполнить много "пустых циклов" даже после того, как условие выхода было удовлетворено.

4
ответ дан 30 November 2019 в 02:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: