2010-05-25 12 views
5

aynı modeli etiketi için birden girdiler .. ben soruyorum neyi kelimelere dökmek zor ..XForms ve düzgün bu sormuyorum eğer vaktinden özür dileriz

ben gibi XForms modelini vardır:

<file> 
    <criteria> 
     <criterion></criterion> 
    </criteria> 
</file> 

Yeni bir ölçüt etiketi oluşturan çoklu giriş metin kutularına sahip olmak istiyorum.

kullanıcı arayüzü gibi:

<xf:input ref="/file/criteria/criterion" model="select_data"> 
    <xf:label>Select</xf:label> 
</xf:input> 

<xf:input ref="/file/criteria/criterion" model="select_data"> 
    <xf:label>Select</xf:label> 
</xf:input> 

<xf:input ref="/file/criteria/criterion" model="select_data"> 
    <xf:label>Select</xf:label> 
</xf:input> 

Ve (kullanıcı bilgilerinde girilen sonra) ben böyle bakmak XML çıktısını istiyorum:

<file> 
    <criteria> 
     <criterion>AAA</criterion> 
     <criterion>BBB</criterion> 
     <criterion>CCC</criterion> 
    </criteria> 
</file> 

yolu Ben o kokan Üç girdi alanın aynı kriter etiketine atıfta bulunduğunu gördüğü için çalışın. Nasıl ayırt edebilirim?

Teşekkürler! Umarım bu biraz mantıklı!

ilk düzenleme temel metin kutusu için yanıtları için

Teşekkür BEGIN! Ancak, şimdi bunu bir liste kutusuyla yapmalıyım. Ama hayatım boyunca nasıl olduğunu anlayamıyorum. Xforms ile kullanmak için bir yer okudum: olayları seç ve seçimleri kaldır .. ama onları nereye yerleştireceğimi bilmiyordum ve denediğim yerler bana çok garip davranıyordu.

Şu anda aşağıdaki uygulama am: birden çok seçenek gönderildiğinde

<xf:select ref="instance('criteria_data')/criteria/criterion" selection="" appearance="compact" > 
     <xf:label>Choose criteria</xf:label> 
     <xf:itemset nodeset="instance('criteria_choices')/choice"> 
      <xf:label ref="@label"></xf:label> 
      <xf:value ref="."></xf:value> 
     </xf:itemset> 
    </xf:select> 

Ancak, her seçme değerlerini boşluklarla ayrılmış, aynı düğüm sokulur. AAA ve BBB ve FFF liste seçilen olsaydı

, aşağıdaki XML neden olacaktır:

<criterion>AAA BBB FFF</criterion> 

Her seçim bir olmak zorunda için kodumu nasıl değiştirebilirim Örneğin

ayrı düğüm

bunun böyle bakmak istiyorum yani:

<criterion>AAA</criterion> 
<criterion>BBB</criterion> 
<criterion>FFF</criterion> 

Teşekkür!

SON ilk düzenleme

İKİNCİ DÜZENLEME BEGIN: süzer için

(yani xf: seçme görünüm = "kompakt") aynı düğümde meydana için boşluk sağlayan bitti ve sonra xml'yi xml kullanarak düzgün bir şekilde biçimlendirilmiş yeni bir xml doc (ayrı ayrı düğümlerle) oluşturmak için dönüştürdüm. Ne yazık ki, orijinal olarak ayrı düğümlere yerleştirerek daha az hantal bir çözüm bulamadım.

Seçilen yanıt metin kutuları için çok iyi çalışıyor, ancak bu nedenle yanıt olarak seçtim.

SON İKİNCİ DÜZENLEME üç kriterler sizin için, o zaman parantez içinde endeksi kullanmalıdır yeterli ise

cevap

2

:

<xf:input ref="/file/criteria/criterion[1]" model="select_data"> 
    <xf:label>Select</xf:label> 
</xf:input> 

<xf:input ref="/file/criteria/criterion[2]" model="select_data"> 
    <xf:label>Select</xf:label> 
</xf:input> 

<xf:input ref="/file/criteria/criterion[3]" model="select_data"> 
    <xf:label>Select</xf:label> 
</xf:input> 

Ama xf kullanırsanız: yerine tekrar istediğiniz sayıda ekleyebilir kriterler ihtiyacınız:

<xf:group ref="/file/criteria" mode="select_data"> 
    <xf:repeat nodeset="criterion"> 
     <xf:input ref="."> 
      <xf:label>Select</xf:label> 
     </xf:input> 
    </xf:repeat> 
    <xf:trigger> 
     <xf:label>Insert new row</xf:label> 
     <xf:insert nodeset="criterion" position="after" at="last()" ev:event="DOMActivate"/> 
    </xf:trigger> 
    <xf:trigger> 
     <xf:label>Delete last row</xf:label> 
     <xf:delete nodeset="criterion" at="last()" ev:event="DOMActivate" /> 
    </xf:trigger> 
</xf:group> 

dikkat: tekrarı ile bu örnek bazı parlatma ihtiyacı var, son satırını silemezsiniz böylece tabloyu ekleyebilir ve muhtemelen yeni bir satır eklediğinizde çoğaltılan son satırı gizleyebilirsiniz. Ek örnekler için bkz. http://en.wikibooks.org/wiki/XForms#Tabular_and_Repeating_Data.

+0

Teşekkürler! Bu benim metin kutuları ile gerçekten iyi çalışıyor. Açılan kutu ile benzer bir şey yapabildiğimi var sayıyorum o zaman? (yani birleşik kutudan birden fazla şey seçip bunları yeni ölçüt haline getirin). – developer

+0

@iHeartGreek, evet tam olarak. '' içerisinde istediğiniz her şeye sahip olabilirsiniz. – avernet

+0

Bu çözümü liste kutusuyla çalışmayı denedim (xforms: select'i kullanarak) ancak bunu çözemiyorum. Ayrıca xforms'u kullanmam gerektiğini de okudum: olayları seç ve seçimini kaldır ancak ben bununla ilgili garip davranışlarım var. (Yeni sorunumun daha fazla bağlamı için yukarıdaki düzenlemeye bakın) – developer

İlgili konular