私は何も得られません。私はXSLTを使って適切なJSON形式に変換しなければなりません。私は配列を除いてすべてを変換することができます。私はテンプレートを汎用的に保つ必要があります。 n
従業員を有するm
部門を有するアカウント -XSLT配列を反復し、サブ要素に汎用テンプレートを適用する(Xml to Json)
Hereのようなシナリオを有する要旨試料例(XML、XSLおよび結果)です。
XSLは、複雑なオブジェクトを含むすべてのシナリオで正常に動作します。しかし、理想的なJSONフォーマットを配列に適用することはできません。配列の各要素にオブジェクト名を追加します。実際には、非常に複雑な/ネストされたxmlを持っているので、xsltを可能な限り一般的なままにしなければなりません。
次の2つのテンプレートを追加すると、リーフノードの後にコンマが追加されません。
<xsl:template match="departments">
<xsl:text>"departments": [{</xsl:text>
<xsl:for-each select=".//department">
<xsl:if test="position() > 1">
<xsl:text>},{</xsl:text>
</xsl:if>
<xsl:apply-templates />
</xsl:for-each>
<xsl:text>}]</xsl:text>
</xsl:template>
<xsl:template match="employees">
<xsl:text>"employees": [{</xsl:text>
<xsl:for-each select=".//employee">
<xsl:if test="position() > 1">
<xsl:text>},{</xsl:text>
</xsl:if>
<xsl:apply-templates />
</xsl:for-each>
<xsl:text>}]</xsl:text>
</xsl:template>
私はgistにexpected-result.jsonもコピーしました。配列の下位要素を反復処理し、ネストされたオブジェクトまたは他のロジックにテンプレートを適用する方法はありますか?
Iは、一般的に迅速な変換をテストするための[W3Schoolsの(https://www.w3schools.com/xml/tryxslt.asp?xmlfile=cdcatalog&xsltfile=cdcatalog)を使用します。 – GovindS
少なくとも、どの要素を配列として扱わなければならないのか(XSLT内の変数に多分)を指定する必要があります。さもなければ、あなたのXSLTがオブジェクトの代わりにJSON配列を出力することを知る方法はありません。 TBH、私はXSLTがXMLをJSONに変換するための非常に良い選択だとは思わない。有効なJSONを生成するために必要なすべての複雑なエスケープ・ルールをどのように処理するつもりですか? – JLRishe
@JLRisheはい、配列として扱う必要がある要素を指定する必要があります。私は問題の実装を起草しました。しかし、改善が必要です。これはカスタマイズされたJSONの作成に関するものです。配列として扱う必要がある要素について通知する必要があります。他のすべては、私が共有したテンプレートによって処理されます。 – GovindS