在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>
显然我做错了什么,但我看不出它是什么。
答案 0 :(得分:0)
要通过XSLT打印XML,请使用<xsl:copy-of>
代替<xsl:value-of>
。后者总是采用XML的字符串值,它只查看文本节点。前者制作了XML树的副本。
电子邮件处理器一次只能发送一封电子邮件。所以需要的是迭代你通过XSLT创建的<message>
元素。迭代必须在XPL中完成,因此您必须使用<p:for-each>
。