XSLT 1.0 を使用して、これを変換する必要があります。
<form>
<question NumOfColumns="3">
<title>Colors</title>
<answer>red</answer>
<answer>orange</answer>
<answer>yellow</answer>
<answer>green</answer>
<answer>blue</answer>
<answer>indigo</answer>
<answer>violet</answer>
</question>
</form>
これに:
<h2 class="question">Colors</h2>
<div class="answersrow">
<input type="checkbox" name="colors" value="red" id="red" /> <label for="red">red</label>
<input type="checkbox" name="colors" value="orange" id="orange" /> <label for="orange">orange</label>
<input type="checkbox" name="colors" value="yellow" id="yellow" /> <label for="yellow">yellow</label>
</div>
<div class="answersrow">
<input type="checkbox" name="colors" value="green" id="green" /> <label for="green">green</label>
<input type="checkbox" name="colors" value="blue" id="blue" /> <label for="blue">blue</label>
<input type="checkbox" name="colors" value="indigo" id="indigo" /> <label for="indigo">indigo</label>
</div>
<div class="answersrow">
<input type="checkbox" name="colors" value="green" id="green" /> <label for="green">green</label>
</div>
質問ノードの NumOfColumns は、回答 div を出力するときに使用する列の数を示します。ノードごとに、次を使用してその行を取得できます。
天井 (position() div 親::*/@NumOfColumns)
これは正常に機能しています。正しい整数を出力できます。しかし、キー/グループ化を機能させることができず、どこに問題があるのか わかりません。
キーは次のようになると思いました。
<xsl:key name="answersrow" match="form/question/answer[ceiling( position() div parent::*/@NumOfColumns) = parent::*/@NumOfColumns]" use="." />
次に、次のコマンドでノードを取得できます。
<xsl:for-each select="key('answersrow', answer)">
運がない。誰にも解決策がありますか?または、これは XSLT 1.0 では実行できませんか?