xsltを使用していくつかの条件に基づいてxmlのフィールドの値を変更する必要があります。xsltを使用して条件に基づいてxmlフィールドの値を変更
私の入力XML:
<?xml version="1.0" encoding="UTF-8"?>
<rows>
<item>
<Name>ABC</Name>
<ID>1234</ID>
</item>
<item>
<Name>XYX</Name>
<ID>234</ID>
</item>
<item>
<Name>PXC</Name>
<ID>456</ID>
</item>
</rows>
私のXSLコード:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:variable name="ID" select="/rows/item/ID"/>
<xsl:template match="/rows/item/ID">
<xsl:choose>
<xsl:when test="$ID = '1234'">1001</xsl:when>
<xsl:when test="$ID = '234'">1002</xsl:when>
<xsl:when test="$ID = '456'">1003</xsl:when>
<xsl:when test="$ID = '789'">1004</xsl:when>
<xsl:when test="$ID = '1903'">1005</xsl:when>
<xsl:otherwise>
<xsl:message terminate="no">SEVERE: No ID Mapping is found <xsl:value-of select="$ID"/>
</xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
出力XML:
<rows>
<item>
<Name>ABC</Name>
1001
</item>
<item>
<Name>XYX</Name>
1001
</item>
<item>
<Name>PXC</Name>
1001
</item>
</rows>
私は私の選択に基づいて変更するにはIDフィールドの値を期待しています調子。そして、選択条件で維持されていない値が来たら、それはエラーを投げるべきです。
しかし、出力xmlにはIDフィールドのxmlタグがありません。また、最初の選択条件の値が以下の項目に適用されます。親切にコードを修正するのに役立ちます。
は、あなただけのタグを追加しますか?または、各IDに異なる出力値を設定することもできますか? –
私の選択条件に基づいて異なる値と選択条件が一致しない場合はエラーをスローします。質問が更新されました。申し訳ありませんが明確ではありません。 – KiranSK