2013-01-22 54 views
0

背景選擇重複元件:即提交XSLTForms使用位置()從另一個實例

構建形式(使用XSLTForms),則用戶可以在稍後的日期重新提交。我們希望用戶在表單輸入旁邊看到之前提交的值,因此我們加載了2個實例的數據集和舊數據集。這在大多數情況下都有效,但不是我們重複的地方。無論出於什麼原因,position()方法在從「old-data-set」實例調用數據時總是返回「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()方法適用於標籤,但總是返回「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> 

我怎樣才能稱之爲重複的位置(),所以我可以用它來從「舊數據集」實例正確的價值?

回答

0

出現這種情況的原因是謂詞([]內裏,背景是不同的,position()指的是舊數據集reference節點,而不是你的迭代當前reference節點。

的位置

我不熟悉xSLTForms,但這個怎麼樣?

<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[count(current()/preceding-sibling::reference) + 1]/org_name"/> 
    </xf:group> 
</xf:repeat> 
+0

我以爲它會沿着這些線路的東西。我懷疑這是不是xsltforms支持,它拋出一個初始化錯誤。 – chrism

+0

這應該得到支持通過XSLTForms,所以我願意e有一個完整的測試用例來檢查這一點。 –

相關問題