xform上的动态可更新href链接

时间:2011-01-27 13:54:35

标签: orbeon

从文档中,XSL处理器可用于动态生成href链接(或其他HTML内容):

<xhtml:tr>
<xhtml:td>
    <xsl:for-each select="{instance('fr-form-instance')/form/retrievalSection/retrievalControl">
        <xhtml:a href="http://somewhere/">
            <xsl:value-of select="SomeData"/>
            <xsl:if test="position() lt last()">
                <br/>
            </xsl:if>
        </xhtml:a>
    </xsl:for-each>
</xhtml:td>

以上只是粗略的示例代码,上面的href是静态的,可以忽略。

问题是这个(xslt生成的链接文本)在实例更新时没有自动更新;怎么实现呢?

1 个答案:

答案 0 :(得分:1)

当页面加载时,XSLT处理一劳永逸地完成。您可以将XSLT步骤视为模板或预处理步骤。完成后,XForms处理结果,然后动态更新。

你可以通过这种方式混合使用XSLT和XForms,但这并非易事,如果可以,最好避免使用它。

我会尝试专门使用XForms来实现这一点,例如:

<xhtml:td>
    <xforms:repeat nodeset="instance('fr-form-instance')/form/retrievalSection/retrievalControl">
        <xhtml:a href="http://somewhere/">
            <xforms:output value="SomeData"/>
            <xhtml:br/>
        </xhtml:a>
    </xforms:repeat>
</xhtml:td>

如果您希望href是动态的,请使用类似于XSLT的AVT:

href="{expression}"

最后,您可以将<br/>置于<xforms:group>内以使其成为条件,但如果可以的话,最好在这种情况下使用CSS。