如何在Orbeon中的实例的特定节点之后插入节点?

时间:2015-06-29 08:51:02

标签: orbeon xforms xpath-2.0

我在模型中有一个实例:

<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博客中的documentationthis,但在我发现的所有范例中,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实现)。

1 个答案:

答案 0 :(得分:1)

你在做什么看起来是正确的。但在您的实例examRelatedNodes中,您需要有一个根元素,例如:

<xf:instance id="examRelatedNodes">
   <RelatedNodes>
       <ExamTitle/>
       <ExamDescription/>
   </RelatedNodes>
</xf:instance>

然后你的插入将成为:

<xf:insert context="." origin="instance('examRelatedNodes')/*"/>