У меня есть требование, например, у меня есть 3 набора наборов элементов (A, B и C), которые должны находиться в раскрывающемся списке. и каждый набор элементов выбирается на основе некоторых условий, как показано ниже.
<xxforms:variable name="itemset-A-cnt" select="count(instance('data')/nodeA)" />
<xforms:group ref=".[condition for itemset A]">
<xforms:select1 ref="." incremental="true" appearance="minimal">
<xforms:itemset ref="instance('data')/nodeA"> <!--itemset A displayed if some if condition is true-->
<xforms:label ref="@key" />
<xforms:value ref="@key" />
</xforms:itemset>
</xforms:select1>
</xforms:group>
<xxforms:variable name="itemset-B-cnt" select="count(instance('data')/nodeB)" />
<xforms:group ref=".[condition for itemset B]">
<xforms:select1 ref="." incremental="true" appearance="minimal">
<xforms:itemset ref="instance('data')/nodeB"> <!--itemset B displayed if some if condition is true-->
<xforms:label ref="@key" />
<xforms:value ref="@key" />
</xforms:itemseif if t>
</xforms:select1>
</xforms:group>
<xforms:group ref=".[$itemset-A-cnt =0 and $itemset-B-cnt =0]">
<xforms:select1 ref="." incremental="true" appearance="minimal">
<xforms:itemset ref="instance('data')/nodeC"> <!--itemset C displayed if itemset A and B is empty-->
<xforms:label ref="@key" />
<xforms:value ref="@key" />
</xforms:itemset>
</xforms:select1>
</xforms:group>
В настоящее время мы достигли этого с помощью группы с условием для набора элементов A и набора элементов B для набора элементов C. Я обнаружил количество значений в наборе элементов A и B, назначил его переменным a-cnt и b_cnt с помощью xxforms: variable и создал группу для набор элементов C с проверкой размера.
У меня логика работает. Но я думаю, что это неправильный способ добиться чего-то подобного. Если есть способ разместить что-то вроде xxforms: if в наборе элементов, то я мог бы выполнить логику в одном элементе select1.