0
<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Oracle BI Publisher -Dataengine, datamodel:_Custom_OAL_ATG_OM_Dashboard_DM_xdm -->
<DATA>
<SUCCESS>
<COUNT___>5686</COUNT___>
</SUCCESS>
<REJECT>
<COUNT___>641</COUNT___>
</REJECT>
<FAILURE>
<COUNT___>8536</COUNT___>
</FAILURE>
<ERROR>
<COUNT___>1447</COUNT___>
</ERROR>
<TERMINATED>
<COUNT___>1341</COUNT___>
</TERMINATED>
</DATA>

上記は私が持っているXMLです。上記の XML を以下に示す JSON に変換したいと考えています。

{
"appName": "PERFORMANCE",
"statsName": "Status Counts",
"DateBegin": "xxxxxx",
"DateEnd": "xxxxxxx",
"data": {
 "SUCCESS ": 1341,
"REJECT":5666,  "FAILURE":640,
 "ERROR":8515,
"TERMINATED":1447
}
}

XSLT スタイルシートは初めてです。誰かが上記の問題で私を助けてくれますか? 指定された XML を JSON に変換するための XSLT スタイルシートは何ですか?

4

1 に答える 1

2

次のスタイルシートを使用できます。指定された入力 XML に対して必要に応じて機能します。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  version="1.0">
<xsl:output method="text" />

  <xsl:template match="/DATA">
      <xsl:text>{
    "appName": "PERFORMANCE",
    "statsName": "Status Counts",
    "DateBegin": "xxxxxx",
    "DateEnd": "xxxxxxx",
    "data": 
      </xsl:text>{&#xa;<xsl:apply-templates select="*" /><xsl:text>&#xa;}&#xa;}</xsl:text>
  </xsl:template>

  <xsl:template match="SUCCESS|REJECT|FAILURE|ERROR|TERMINATED">
    <xsl:value-of select="concat('&quot;',local-name(),'&quot;: ',COUNT___)" />
    <xsl:if test="position() != last()">,&#xa;</xsl:if>
  </xsl:template>

</xsl:stylesheet>

その出力は次のとおりです。

{
"appName": "PERFORMANCE",
"statsName": "Status Counts",
"DateBegin": "xxxxxx",
"DateEnd": "xxxxxxx",
"data": 
{
"SUCCESS": 5686,
"REJECT": 641,
"FAILURE": 8536,
"ERROR": 1447,
"TERMINATED": 1341
}
}

入力 XML と目的の出力 XML の間に不一致があったため、出力が目的の出力と一致しません。必要に応じて XSLT を変更します。

于 2019-03-12T20:44:15.633 に答える