質問
<xsl:for-each select="./node [position() <= (count(*) div 2)]">
<li>foo</li>
</xsl:for-each>
<xsl:for-each select="./node [count(*) div 2 < position()]">
<li>bar</li>
</xsl:for-each>
マイリストは、12ノードが多いのですが、二回目のリストは必ず8の初は4.何が悪い僕の選択?
解決
だけど、 count(*)
, 現在のノードの node
ある要素処理します。たいち count(current()/node)
または last()
(好ましい)、計算の中間変数へのより良い性能をより明確にコード:
<xsl:variable name="nodes" select="node"/>
<xsl:variable name="mid" select="count($nodes) div 2"/>
<xsl:for-each select="$nodes[position() <= $mid]">
<li>foo</li>
</xsl:for-each>
<xsl:for-each select="$nodes[$mid < position()]">
<li>bar</li>
</xsl:for-each>
他のヒント
きは受け付けていません last()
機能はご利用いただけませたサイズの電流コンテクスト:
<xsl:for-each select="./node [position() <= last() div 2]">
<li>foo</li>
</xsl:for-each>
<xsl:for-each select="./node [last() div 2 < position()]">
<li>bar</li>
</xsl:for-each>
いながるように思えま count(*)
だけ電源をオンにする"というお返事ありがとうございます。です。その数をカウントを子ノードではなく、サイズのノード一覧です。なおこのイベント内容を印刷することを確認で8または9の代わりに12?
使用 last()
ンテキストの取得サイズです。
みカウント(../node).以下は正しい結果も試験XMLファイルを簡単にノードをルートとノードの要素)を使用し、xsltproc XSLTプロセッサー
<xsl:for-each select="node[position() <= (count(../node) div 2)]">
...
</xsl:for-each>
<xsl:for-each select="node[(count(../node) div 2) < position()]">
...
</xsl:for-each>
所属していません StackOverflow