我在模型中有一个实例:
<Exams>
<ExamCode>14</ExamCode>
</Exams>
<Exams>
<ExamCode>15</ExamCode>
</Exams>
我想迭代所有元素,并在ExamCode元素之后添加一些节点但没有父节点。
迭代后我的实例应该是这样的:
<-- Wanted -->
<Exams>
<ExamCode>14</ExamCode>
<ExamTitle></ExamTitle>
<ExamDescription>/ExamDescription>
</Exams>
<Exams>
<ExamCode>15</ExamCode>
<ExamTitle></ExamTitle>
<ExamDescription></ExamDescription>
</Exams>
我试过的是这个:
要添加的实例:
<!-- instance nodes to add-->
<xf:instance id="examRelatedNodes">
<ExamTitle/>
<ExamDescription/>
</xf:instance>
将“examRelatedNodes”实例添加到所有重复的Exams节点:
<!-- insert examRelatedNodes per Exam -->
<xf:action ev:event="xforms-ready" xxf:iterate="instance('fr-form-instance')/Exams">
<xf:insert context="." origin="instance('examRelatedNodes')"/>
</xf:action>
但是我得到一个错误,要添加的实例,应该有父!
我已经阅读了orbeon博客中的documentation,this,但在我发现的所有范例中,to-add-instance的元素都有父,但在我的情况下,我没有想要拥有。在父节点的这些例子之后,我能够添加它们,但是我不想要父节点“ParentOfExtraNodes”:
<-- Not wanted -->
<Exams>
<ExamCode>14</ExamCode>
<ParentOfExtraNodes>
<ExamTitle></ExamTitle>
<ExamDescription>/ExamDescription>
<ParentOfExtraNodes/>
</Exams>
<Exams>
<ExamCode>15</ExamCode>
<ParentOfExtraNodes>
<ExamTitle></ExamTitle>
<ExamDescription>/ExamDescription>
<ParentOfExtraNodes/>
</Exams>
我使用的是Orbeon Forms 4.5(XForms实现)。
答案 0 :(得分:1)
你在做什么看起来是正确的。但在您的实例examRelatedNodes
中,您需要有一个根元素,例如:
<xf:instance id="examRelatedNodes">
<RelatedNodes>
<ExamTitle/>
<ExamDescription/>
</RelatedNodes>
</xf:instance>
然后你的插入将成为:
<xf:insert context="." origin="instance('examRelatedNodes')/*"/>