2010-06-10 6 views
1

Je voudrais définir deux valeurs pour deux nœuds différents de l'entrée utilisateur dans XForms. Je suis curieux de savoir comment cela est fait, si possible.Possibilité de définir deux valeurs pour deux nœuds différents de l'entrée utilisateur dans XForms?

Par exemple, si j'ai le modèle de données suivantes:

<xf:instance id="criteria_data" xmlns=""> 
    <criteria> 
     <set> 
      <root></root> 
      <criterion></criterion> 
     </set> 
    </criteria> 
</xf:instance> 

<xf:instance id="choices" xmlns=""> 
    <choices> 
     <root label="The Choices">/AAA</root> 
     <choice label="BBB">/@BBB</choice> 
    </choices> 
</xf:instance> 

<xf:instance id="choices" xmlns=""> 
    <choices> 
     <root>/AAA</root> 
     <choice label="BBB">/@BBB</choice> 
     <choice label="CCC">/@CCC</choice> 
    <choices> 
</xf:instance> 

<xf:bind id="data_criterion" nodeset="instance('criteria_data')/criteria/set/criterion"/>   
<xf:bind id="data_root" nodeset="instance('criteria_data')/criteria/set/root"/> 
<xf:bind id="choices_root" nodeset="instance('choices')/root"/> 
<xf:bind id="choices" nodeset="instance('choices')/choice"/> 

et mon code ui ressemble:

<xf:select bind="data_criterion" appearance="full"> 
    <xf:label>Your choices:</xf:label>  
    <xf:itemset bind="choices"> 
     <xf:label ref="@label"></xf:label> 
     <xf:value ref="."></xf:value> 
    </xf:itemset> 
</xf:select>  

Mais je veux essentiellement que ce soit comme ça (même si cela est invalide et ne produit pas de xml du tout):

<xf:select appearance="full"> 
    <xf:label>Your choices:</xf:label>  
    <xf:itemset bind="choices"> 
     <xf:label ref="@label"></xf:label> 
     <xf:value bind="data_criterion" ref="."></xf:value> 
     <xf:value bind="data_root" ref="instance('choices')/root"></xf:value> 
    </xf:itemset> 
</xf:select>  

La sortie XML que je veux atteindre (si l'utilisateur CKS "BBB"):

<criteria> 
    <set> 
     <root>/AAA</root> 
     <criterion>/@BBB</criterion> 
    </set> 
</criteria> 

Comment puis-je obtenir la définition de ces deux noeuds pour une case à cocher seletion?

Espérons que tout a un sens ...

Merci! :)

+0

serait-il toujours stocker la valeur de 'instance ('choix')/root' dans' ', quelle que soit la valeur est sélectionnée? – avernet

+0

@Alessandro: dans ce cas particulier oui. Chaque contiendra sa racine et d'autres nœuds de critères (avec