バックグラウンド:
送信されたフォームを (XSLTForms を使用して) 作成すると、ユーザーは後日再送信できます。ユーザーがフォーム入力の横に以前の送信の値を表示できるようにするため、「data-set」と「old-data-set」の 2 つのインスタンスをロードしています。これはほとんどの場合に機能しますが、繰り返しがある場合には機能しません。何らかの理由で、「old-data-set」インスタンスからデータを呼び出すと、position() メソッドは常に「1」を返します。例えば:
<xf:repeat nodeset="instance('data-set')/references/reference">
<xf:group ref=".">
<xf:label>Reference <xf:output value="position()"/></xf:label>
<xf:input ref="/org_name">...</xf:input>
<xf:output ref="instance('old-data-set')/references/reference[position()]/org_name"/>
</xf:group>
</xf:repeat>
このposition()
メソッドはラベルで機能しますが、2 番目のインスタンスから値を取得しようとすると常に「1」が返されます。たとえば、上記は次を生成します。
<label>Reference 1</label>
<input>Org name 1</input>
<output>Old org name 1</output>
<label>Reference 2</label>
<input>Org name 2</input>
<output>Old org name 1</output>
<label>Reference 3</label>
<input>Org name 3</input>
<output>Old org name 1</output>
'old-data-set' インスタンスから正しい値を取得するために使用できるように、繰り返しの position() を呼び出すにはどうすればよいですか?