如何从另一个实例设置实例的值?

问题描述:

我在页面上有一个实例。但是,我希望此实例的内容具有一些属于另一个实例的内容。如何从另一个实例设置实例的值?

<xf:instance id="subInstance"> 
    <data xmlns=""> 
     <xsl:choose> 
      <xsl:when test="$newType= 'false' "> 
       ??? 
       <xsl:copy-of select="????"/> 
      </xsl:when> 
      <xsl:otherwise> 
       <!-- add a new type --> 
       <type> 
        <name/> 
        <base/> 
       </type> 
      </xsl:otherwise> 
     </xsl:choose> 
    </data> 
</xf:instance> 

应该用什么来代替问号以便我可以从另一个实例中获取该类型?

还是应该用xf:setvalue来设置xforms-model-construct-done事件的实例?但是,这不是模型本身的构建吗?我很困惑如何使用另一个实例的值。

我们可以用xf:插入吗?

<xf:action ev:event="xforms-model-construct"> 
      <xf:insert nodeset="instance('subInstance')" origin="instance('defaultType')/type"/> 
     </xf:action> 

这是行不通的。事件是否正确?由于实例创建是模型构建的一部分,我想到了使用'xforms-model-construct'。但仍然没有运气!

+0

这与Orbeon形式是?并不是所有的实现都支持结合使用XSLT和XForms。 – ebruchez

+0

这是XSLTForms – Crusaderpyro

+0

然后我不确定,但我相信XSLT处理,它会在XForms处理之前发生。如果您想将内容从一个实例复制到另一个实例,则可能需要使用XForms''操作。 – ebruchez

是的。 xf:insert可以工作。事件'xforms-model-construct'没有被调度,这就是为什么我觉得它不起作用。当我将事件更改为'xforms-model-construct-done'时,它工作正常。

<xf:action ev:event="xforms-model-construct"> 
 
    <xf:insert nodeset="instance('subInstance')" origin="instance('defaultType')/type"/> 
 
</xf:action>