XMLのフォーマットを変更するために、PHP codeigniterフレームワークでXSLTを使用しています。詳細:親ノードがXML内に既に存在する場合、それを再生成しないようにする
入力は、私が
<xsl:template match="person_name">
<frm:details>
<d:name>
<xsl:apply-templates/>
</d:name>
</frm:details>
</xsl:template>
<xsl:template match="person_address">
<frm:details>
<d:address>
<xsl:apply-templates/>
</d:address>
</frm:details>
</xsl:template>
<xsl:template match="person_bloodGroup">
<frm:health>
<d:bloodGroup>
<xsl:apply-templates/>
</d:bloodGroup>
</frm:health>
</xsl:template>
<xsl:template match="person_address">
<frm:health>
<d:weight>
<xsl:apply-templates/>
</d:weight>
</frm:health>
</xsl:template>
としてXSLTを使用しています。しかし、それはFRMを生成し、私は
<data>
<frm:details>
<d:name>value</d:name>
<d:address>value</d:address>
</frm:details>
<frm:health>
<d:bloodGroup>value</d:bloodGroup>
<d:weight>value</d:weight>
</frm:health>
</data>
に変換したい
<data>
<person_name>value</person_name>
<person_address>value</person_address>
<person_bloodGroup>value</person_bloodGroup>
<person_weight>value</person_weight>
</data>
とのようなものですタグを別々に2回名前と住所。私はXSLTに慣れていない。私は親ノードが既に存在するかどうかを確認して親ノードを再生成せずに子ノードを追加することができます。 私は
<frm:details>
<d:name>value</d:name>
</frm:details>
<frm:details>
<d:address>value</d:address>
</frm:details>
<frm:health>
<d:bloodGroup>value</d:bloodGroup>
</frm:health>
<frm:health>
<d:weight>value</d:weight>
</frm:health>
[MCVE]を投稿してください。入力で 'person_name'と' person_address'の親要素と、現在のXSLTがそれをどのように処理するのかを確認する必要があります。 –
元のXMLは大きすぎて共有する機密性がありません。私も同様のシナリオを作成しました。 person_nameとperson_addressは単一ノードになります。データノードとみなすことができる。ネストされたノードは入力に使用されません。 – hrishi