Я новичок в xslt и пытаюсь создать таблицу стилей xsl, которая преобразует макет записи rm / cobol в json - PullRequest
0 голосов
/ 13 сентября 2018

У меня все работает, за исключением того, что я хочу, чтобы оно было аккуратно размечено, идентифицировано и выровнено с каждым элементом / элементом и скобками, чтобы быть на отдельной строке, за исключением открывающей скобки массива, который должен появляться на той же строке, что и массивНазовите это следующим образом:

{
        "Components" : [
             {
                "componentid" : "ABC_CRTSW_1",
                "componentdescription" : "software ABC_CRTSW_1",
                "algorithms" : [
                        {
                                "algorithmtype" : "NGI_CRC32",
                                "supportsseed" : true,
                        },
                        {
                                "algorithmtype" : "NGI_MD5",
                                "supportsseed" : false,
                        },
                        {
                                "algorithmtype" : "NGI_SHA1",
                                "supportsseed" : false,
                        }
                  ]
             },
             {
                "componentid" : "CONTENT_1",
                "componentdescription" : "content 1",
                "algorithms" : [
                        {
                                "algorithmtype" : "NGI_CRC32",
                                "supportsseed" : true,
                        },
                        {
                                "algorithmtype" : "NGI_MD5",
                                "supportsseed" : false,
                        },
                        {
                                "algorithmtype" : "NGI_SHA1",
                                "supportsseed" : false,
                        }
                  ]
             }
       ]
}

Проблема, с которой я столкнулся, заключается в том, что все они появляются в одной строке без пробелов, если они не заключены в кавычки следующим образом:

{"Components":[{"componentid":"ABC_CRTSW_1","componentdescription":"software ABC_CRTSW_1","algorithms":[{"algorithmtype":"NGI_CRC32","supportsseed":true},{"algorithmtype":"NGI_MD5","supportsseed":false},{"algorithmtype":"NGI_SHA1","supportsseed":false}]},{"componentid":"CONTENT_1","componentdescription":"content 1","algorithms":[{"algorithmtype":"NGI_CRC32","supportsseed":true},{"algorithmtype":"NGI_MD5","supportsseed":false},{"algorithmtype":"NGI_SHA1","supportsseed":false}]}]}

Единственный способЯ могу получить все, что захочу, если я добавлю непустой символ, такой как точка, в открывающую фигурную скобку, которая даст мне;

.{
        "Components" : [
             {
                "componentid" : "ABC_CRTSW_1",
                "componentdescription" : "software ABC_CRTSW_1",
                "algorithms" : [
                        {
                                "algorithmtype" : "NGI_CRC32",
                                "supportsseed" : true,
                        },
                        {
                                "algorithmtype" : "NGI_MD5",
                                "supportsseed" : false,
                        },
                        {
                                "algorithmtype" : "NGI_SHA1",
                                "supportsseed" : false,
                        }
                  ]
             },
             {
                "componentid" : "CONTENT_1",
                "componentdescription" : "content 1",
                "algorithms" : [
                        {
                                "algorithmtype" : "NGI_CRC32",
                                "supportsseed" : true,
                        },
                        {
                                "algorithmtype" : "NGI_MD5",
                                "supportsseed" : false,
                        },
                        {
                                "algorithmtype" : "NGI_SHA1",
                                "supportsseed" : false,
                        }
                  ]
             }
       ]
}

Может кто-нибудь подсказать, как мне избежать добавленияфулстоп, пожалуйста?Заранее спасибо

Хорошо, так что немного больше информации для вас;Я не совсем уверен в том, как выглядит xml, так как я не знаю, как его увидеть - я пишу программу на cobol, которая запускается через bis, и я применяю свою таблицу стилей - вот самый простой пример, надеюсь, он поможет прояснить мою ситуацию;

КОБИЛЬНИК КОБОЛ;

01  RESPONSE-TABLE4.
    03  RESPONSE-ENTRY4            OCCURS MAXIMUM-FIND-RECORDS
          30  t4componentsId                 PIC X(32)   VALUE SPACES.
          30  t4componentsType               PIC X(32)   VALUE SPACES.
          30  t4componentsRequestData        PIC X(40)   VALUE SPACES.
          30  t4componentsHostExcptn         PIC 9(2)    VALUE ZEROES.
          30  t4componentsResponseMsg        PIC X(50)   VALUE SPACES.

МОЙ СТИЛЬ;*

<response-table4>
<response-entrys>
<response-entry>
<t4componentsId>ABC_123</t4componentsId>
<t4componentstType>software_1</t4componentsType>
<t4componentsRequestData>false/false/false</t4componentsId>
<t4componentsHostException>20</t4componentsHostException>
<t4componentsResponseMsg>No components meet search criteria</t4componentsResponseMsg>
</response-entry>
</response-entrys>
</response-table4>

МОЙ ПОЛУЧЕННЫЙ ВЫХОД;

/{
{
"componentid" : "",
"componenttype" : "",
"requestdata" : "false / false / false",
"hostexception" : 20,
"responsemessage" : "No Components Found For Parameters Passed Error"
}

ОДНАКО, ЕСЛИ Я УДАЛЯЮ ТОП ДОПОЛНИТЕЛЬНО / {(КОТОРЫЙ Я ДЕЙСТВИТЕЛЬНО НЕ ХОЧУ), удалив или комментируя следующую строку;

<xsl:text>/{</xsl:text><xsl:value-of select="$newline"/>

Я ПОЛУЧИЛ ЭТО ВЫХОД;

{"componentid":"","componenttype":"","requestdata":"false / false / false","hostexception":20,"responsemessage":"No Components Found For Parameters Passed Error"}

НАДЕЖДА, ЭТО ПОМОГАЕТ ВАМ ПОМОЧЬ МНЕ?NB: извинения за капитализацию, используемые только для структурных целей

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