xslt тестируют, чтобы видеть, является ли узел одним из первых X детей его родителя

def chunker(seq, size):
    return (seq[pos:pos + size] for pos in range(0, len(seq), size))
# (in python 2 use xrange() instead of range() to avoid allocating a list)

Простой. Легкий. Быстро. Работы с любой последовательностью:

text = "I am a very, very helpful text"

for group in chunker(text, 7):
   print repr(group),
# 'I am a ' 'very, v' 'ery hel' 'pful te' 'xt'

print '|'.join(chunker(text, 10))
# I am a ver|y, very he|lpful text

animals = ['cat', 'dog', 'rabbit', 'duck', 'bird', 'cow', 'gnu', 'fish']

for group in chunker(animals, 3):
    print group
# ['cat', 'dog', 'rabbit']
# ['duck', 'bird', 'cow']
# ['gnu', 'fish']
7
задан Daniel Roseman 3 August 2009 в 14:51
поделиться

2 ответа

Это зависит от ситуации. Если вы находитесь в середине

<xsl:apply-templates select="/parent/child" />

, тогда подойдет проверка с помощью

<xsl:if test="position() &lt; 4">

. Если вы находитесь в другом контексте, который не влияет на все элементы , тогда position () будет ссылаться на позицию в этого контекста.

Если вам нужна проверка без контекста, вы можете использовать:

<xsl:if test="count(preceding-sibling::child) &lt; 3">
<!-- or -->
<xsl:if test="count(preceding-sibling::*) &lt; 3">

Чтобы выбрать только первые три элемента , это будет:

/parent/child[position() &lt; 4]
20
ответ дан 6 December 2019 в 09:21
поделиться

Вызвать функцию position () , чтобы определить, где находится узел в документе.

0
ответ дан 6 December 2019 в 09:21
поделиться
Другие вопросы по тегам:

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