从Orbeon Forms中发送多封电子邮件

时间:2015-03-06 14:31:08

标签: orbeon

在Orbeon Forms 4.8上,我重建了email-form.xpl,以便根据表单中的各种条件构建不同的电子邮件。这很好用,它甚至将表单信息嵌入到它创建的电子邮件中。正如Orbeon Email处理器所期望的那样,我已经创建了一组结构合理的结构。它们都被包裹在标签中,所以我有类似......

当涉及到实际调用电子邮件处理器时,我需要通过该XML结构来调用电子邮件处理器一次一条消息。下面的代码是我必须这样做的,我可以从调试中看到它正确地接收我的消息,但是一旦我在处理器内部检查,所有的XML标签都被剥离了,电子邮件处理器将不接受输入(我知道它只会发送第一条消息,如果它完全有效),因为它说它是一个不完整的内容模型。

<p:processor name="oxf:pipeline">
    <p:input
        name="config"
        href="#messages"
        transform="oxf:unsafe-xslt"
        debug="LOOPING THROUGH EMAIL MESSAGES - MESSAGES">
        <p:config xsl:version="2.0">
            <p:param type="input" name="messages"/>

            <xsl:message>
                XXXXX
                <xsl:value-of select="messages/message"/>
                XXXXX
            </xsl:message>

            <xsl:for-each select="/*/message">
                <p:processor name="oxf:email">
                    <p:input name="data">
                        <message>
                            <xsl:value-of select="messages/message"/>
                        </message>
                    </p:input>
                </p:processor>
            </xsl:for-each>
        </p:config>
    </p:input>
</p:processor>

显然我做错了什么,但我看不出它是什么。

1 个答案:

答案 0 :(得分:0)

要通过XSLT打印XML,请使用<xsl:copy-of>代替<xsl:value-of>。后者总是采用XML的字符串值,它只查看文本节点。前者制作了XML树的副本。

电子邮件处理器一次只能发送一封电子邮件。所以需要的是迭代你通过XSLT创建的<message>元素。迭代必须在XPL中完成,因此您必须使用<p:for-each>