Я пытаюсь скрыть 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>
Вот проблема в изображении ниже
в выделенной части, значение handleInstructions является json объектом, так как я разделяю запятую, AL C и LO C идут в следующем ряду, но они должны идти в том же ряду.
, пожалуйста, помогите решить проблему.