JSON в XML SXLT - PullRequest
       2

JSON в XML SXLT

0 голосов
/ 14 декабря 2018

В настоящее время я пытаюсь отобразить ответ json от Webhook Rocket Chat (RC) на OTRS XSLT.

  1. Вот что я получил от RC.

{
   "_id":"4jA2dgTGzwsHSsiLd",
    "messages":[
      { 
         "username":"guest-3",
         "msg":"youuu",
         "ts":"2018-12-13T15:13:56.906Z", 
      },
      {
         "username":"agent",
         "msg":"hahahaha",
         "ts":"2018-12-13T15:14:06.268Z"
      },
      {
         "username":"agent",
         "msg":"mane tn?",
         "ts":"2018-12-13T15:14:08.817Z"
      },
   ]
}
и ниже - мое текущее отображение OTRS XSLT.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:variable name="title">
<xsl:value-of select="//type" />
</xsl:variable>
    
<xsl:variable name="custname">
<xsl:value-of select="//visitor/name" />
</xsl:variable>
    
<xsl:variable name="custemail">
<xsl:value-of select="//visitor/email/address" />
</xsl:variable>
    
<xsl:variable name="tn">
<xsl:value-of select="//tags" />
</xsl:variable>

<xsl:variable name="createtime">
<xsl:value-of select="//createdAt" />
</xsl:variable>
    
<xsl:template match="node() | @*">
    <xsl:copy>
      <xsl:apply-templates select="node() | @*" />
    </xsl:copy>
</xsl:template>

<xsl:template match="RootElement">
       <xsl:copy>
           <TicketNumber><xsl:value-of select="$tn" /></TicketNumber>
           <Article>
               <Body> ? </Body>
               <ContentType>text/html; charset=ISO-8859-15</ContentType>
               <Subject><xsl:value-of select="$title" /></Subject>
               <From><xsl:value-of select="$custemail" /></From>
               <ArticleType>webrequest</ArticleType>
               <SenderType>customer</SenderType>
               <To>Misc</To>
               <HistoryType>AddNote</HistoryType>
               <HistoryComment>Note from RC</HistoryComment>
           </Article>
           <xsl:apply-templates select="@*|node()"/>
       </xsl:copy>
  </xsl:template>
  <xsl:template match="content" />
</xsl:stylesheet>

Я хотел бы получить все значения messages-> username и messages-> msg из JSON и передать его в тег Body.Возможно, как:

Msg: привет мир By: guest3

Msg: привет там By: agent

или, может быть, HTML таблица?

Спасибо заранее.

1 Ответ

0 голосов
/ 14 декабря 2018

понял это .. это должно быть помещено в тег

<xsl:for-each select="//messages">
<xsl:value-of select="msg" />
&lt;br/&gt;
<xsl:value-of select="username" />
&lt;br/&gt;
&lt;br/&gt;
<xsl:if test="./following-sibling::cd">,</xsl:if>
</xsl:for-each>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...