преобразование сообщения json в таблицу HTML с использованием xslt - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь скрыть json сообщение в таблицу HTML, используя xslt, я новичок в xslt. Некоторое тело, пожалуйста, помогите мне.

Вот мое json сообщение.

{"deptType":"A","side":"B","price":0,"quantity":100,"orderType":"KKT","timeInForce":{"DAY":20190918},"Session":"REG","handlingInstructions":{"NH":true,"ALG":true,"LOC":true},"custDspIntrFlag":false,}

Вот мой код

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output omit-xml-declaration="yes" indent="yes"/>

<xsl:template match="message_data" name="tokenize">

    <xsl:param name="pText" select="."/>
    <!--<xsl:value-of select="$pText"/>-->

    <xsl:variable name="fullString" select="substring($pText, 2,string-length($pText)-2)"/>

    <xsl:if test="string-length($fullString)>0">

                        <xsl:call-template name="output_row">
                            <xsl:with-param name="fullString" select="$fullString"/>
                            <xsl:with-param name="jsonString" select="$pText"/>
                        </xsl:call-template>    



    </xsl:if>

</xsl:template>

<xsl:template name="output_row">
    <xsl:param name="fullString"/>
    <xsl:param name="jsonString"/>
    <html>
        <head>
            <title/>
            <style type="text/css">
                table.ma-temp-data-table {
                    margin:5px;
                }
                .ma-temp-data-table tr:nth-of-type(odd) {
                        background-color:#eee;
                    }
                .ma-temp-data-table tr:nth-of-type(even) {
                        background-color:#ddd;
                    }
                .ma-temp-data-table th {
                        background-color:#ccc;
                    }
                .ma-temp-data-table td {
                    padding: 2px;
                }
                .ma-temp-data-table th {
                    padding: 4px;
                    font-weight: bold;
                }
            </style>
        </head>
        <body>

    <table class="ma-temp-data-table">

            <tr>
            <th>Field Name</th>
            <th>Field Value</th>
            </tr>

    <xsl:for-each  select="tokenize($fullString,',')">
        <!--<xsl:value-of select="normalize-space(.)"/>   -->        
            <tr>


                <xsl:if test="contains(normalize-space(.), '{')">

                    <xsl:variable name="String1" select="substring-after(normalize-space(.), ':')"/>
                            <xsl:variable name="String2" select="substring(substring-before(normalize-space(.), ':'),2,string-length(substring-before(normalize-space(.), ':'))-2)"/>

                            <td><xsl:value-of select="$String2"/>   </td>
                            <td><xsl:value-of select="$String1"/>   </td>

                </xsl:if>
                <xsl:if test="not(contains(normalize-space(.), '{'))">

                        <xsl:for-each  select="tokenize(normalize-space(.),':')">
                            <xsl:choose> 
                                <xsl:when test="normalize-space(.) ='true' or normalize-space(.) ='false' or string(number(normalize-space(.))) != 'NaN'">
                                    <td><xsl:value-of select="normalize-space(.)"/> </td>
                                </xsl:when>
                                <xsl:otherwise>
                                    <td><xsl:value-of select="substring(normalize-space(.),2,string-length(normalize-space(.))-2)"/> </td>  
                                </xsl:otherwise>
                            </xsl:choose>       
                        </xsl:for-each>                     

                </xsl:if>   

            </tr>
    </xsl:for-each> 
    </table>

    <br/>
    <h1>Json Message</h1>
    <br/>
    <xsl:for-each  select="tokenize($jsonString, ',')">
         <xsl:value-of select="normalize-space(.)"/><br/>
        </xsl:for-each>

    </body>
    </html> 
</xsl:template>

Вот проблема в изображении ниже

Here is the issue in below image

в выделенной части, значение handleInstructions является json объектом, так как я разделяю запятую, AL C и LO C идут в следующем ряду, но они должны идти в том же ряду.

, пожалуйста, помогите решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...