First you need to understand why you got the output you got.
The test /VEHICLE/CAR = 'POLO' tests compares the node-set /VEHICLE/CAR (which contains two element nodes) to the string 'POLO', and this comparison is true if any of the elements has a string value of 'POLO' (which it does). So the condition is true, and therefore the body of the xsl:when is executed. The body of the xsl:when creates a VEHICLE element and populates it with the result of the xsl:value-of instruction.
The xsl:value-of instruction selects two element nodes. What happens now varies between XSLT 1.0 and 2.0.
In 1.0, it will output the value of the first selected element node, which happens to be 'POLO'. (But it's only by chance that this is the same one as matched the xsl:when test).
In 2.0 it will output the values of all the selected element nodes, space-separated - this is what you are seeing.
Correcting your code requires a better understanding of your requirements. The quick fix to get your expected output would be to write
Code:
<xsl:when test="/VEHICLE/CAR = 'POLO'">
<VEHICLE>POLO<VEHICLE>
</xsl:when>
But I suspect that you've simplified the real requirement. A much more typical approach would be to do something like
Code:
<xsl:apply-templates select="/VEHICLE/CAR"/>
and then
Code:
<xsl:template match="CAR[. = 'POLO']">
<VEHICLE><xsl:value-of select="."/></VEHICLE>
</xsl:template>
But at this stage we are guessing what you really want to achieve.