2015-03-06 2 views
0

В Orbeon Forms 4.8, я перестроил email-form.xpl, чтобы он создавал разные письма в зависимости от различных условий в форме. Это работает хорошо, и даже встраивает информацию о форме в создаваемые ею электронные письма. Я дошел до того, что создал хорошо структурированный набор структур, как ожидал процессор Orbeon Email. Они все завернуты в тег, поэтому у меня есть что-то вроде ....Отправка нескольких электронных писем из форм Orbeon

Когда дело доходит до фактического вызова процессора электронной почты, мне нужно работать через эту структуру 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

Чтобы распечатать XML через XSLT, используйте <xsl:copy-of> вместо <xsl:value-of>. Последний всегда принимает значение строки XML, которое просматривает только текстовые узлы. Первая делает копию дерева XML.

Почтовый процессор может отправлять только одно электронное письмо за раз. Итак, что нужно, итерации над элементами <message>, которые вы создали через XSLT. Итерация должна быть выполнена в XPL, поэтому вы должны использовать <p:for-each>.

Смежные вопросы