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']
Это зависит от ситуации. Если вы находитесь в середине
<xsl:apply-templates select="/parent/child" />
, тогда подойдет проверка с помощью
<xsl:if test="position() < 4">
. Если вы находитесь в другом контексте, который не влияет на все элементы
, тогда position ()
будет ссылаться на позицию в этого контекста.
Если вам нужна проверка без контекста, вы можете использовать:
<xsl:if test="count(preceding-sibling::child) < 3">
<!-- or -->
<xsl:if test="count(preceding-sibling::*) < 3">
Чтобы выбрать только первые три элемента
, это будет:
/parent/child[position() < 4]
Вызвать функцию position ()
, чтобы определить, где находится узел в документе.