I have xml like this:
<?xml version="1.0" encoding="utf-8"?>
<FormDataRequest>
<Name>Bob</Name>
<sn>Ross</sn>
<company>MS Paint</company>
<department>Paint bucket</department>
</FormDataRequest>
I should change value of <company>
and <department>
based on when text is condition.
I have tried with this xslt:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="FormDataRequest" />
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="FormDataRequest">
<xsl:variable name="realcompany">
<xsl:choose>
<xsl:when test="./department/text() = 'Paint bucket'">
<xsl:text>Co company 1</xsl:text>
</xsl:when>
<xsl:when test="./department/text() = 'Paint brush'">
<xsl:text>Co company 2</xsl:text>
</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:variable name="realdepartment">
<xsl:choose>
<xsl:when test="./department/text() = 'Paint bucket'">
<xsl:text>Bucket department</xsl:text>
</xsl:when>
<xsl:when test="./department/text() = '´Paint brush'">
<xsl:text>Brush department</xsl:text>
</xsl:when>
</xsl:choose>
</xsl:variable>
<FormDataRequest>
<xsl:apply-templates select="@*|node()" />
<company>
<xsl:value-of select="$realcompany"/>
</company>
<department>
<xsl:value-of select="$realdepartment"/>
</department>
</FormDataRequest>
</xsl:template>
</xsl:stylesheet>
Output:
<FormDataRequest>
<Name>Bob</Name>
<sn>Ross</sn>
<company>MS Paint</company>
<department>Paint bucket</department>
<company>Co company 1</company>
<department>Bucket department</department>
</FormDataRequest>
I do not want to keep old company and department values.
So out put should look something like this:
<?xml version="1.0" encoding="utf-8"?>
<FormDataRequest>
<Name>Bob</Name>
<sn>Ross</sn>
<company>Co company 1</company>
<department>Bucket department</department>
</FormDataRequest>